Download OpenAPI specification:
REST API for managing entity lifecycle and real-time updates in the Raft Warfighting Data Model (WDM). Provides operations for creating, updating, querying, and streaming entities representing tracked objects in the battlespace (platforms, units, facilities, personnel, etc.).
Note: Streaming APIs (PublishEntities, StreamEntities) are only available via gRPC and are not supported over standard REST/HTTP at this time.
Upsert operation for entities. If entity.id is provided and exists, performs an update; otherwise creates a new entity with a generated UUID.
This single endpoint handles all entity lifecycle operations:
Request body for creating or updating an entity. Note: The 'ontology' field is read-only and will be ignored if provided.
required | object (v1Entity) Core representation of a tracked object in the battlespace. An Entity is anything with identity that warfighters need to track: platforms, units, facilities, equipment, personnel, events, control measures, etc. Flexible Field ModelEntities use a field-optional design rather than strict entity subtypes. Most fields are optional - populate only what is relevant for the specific entity being represented. This flexibility allows the schema to represent diverse entity types without requiring separate message definitions for each category. Different entity types naturally use different field subsets:
Required vs Optional FieldsMinimally required for all entities:
Commonly populated but optional:
Domain-specific (populate as applicable):
Motion-related (omit for stationary entities):
Specialized use cases:
Examples by Entity TypeNaval vessel (comprehensive):
Aircraft (typical):
Ground vehicle (minimal):
Facility (no motion):
Event (transient):
Field Population Guidelines
The authoritative timestamp for entity updates is in |
{- "entity": {
- "assessment": {
- "disposition": "DISPOSITION_FRIEND",
- "environment": "ENVIRONMENT_SURFACE",
- "nationality": "USA"
}, - "description": "Arleigh Burke-class guided missile destroyer",
- "dimensions": {
- "height_meters": 30,
- "length_meters": 155,
- "width_meters": 20
}, - "id": "550e8400-e29b-41d4-a716-446655440000",
- "identities": [
- {
- "identifier": "366987000",
- "system": "ais"
}, - {
- "identifier": "366987000",
- "system": "mmsi"
}
], - "labels": {
- "fleet": "7th Fleet",
- "platform.class": "DDG-51",
- "platform.hull": "DDG-51"
}, - "location": {
- "orientation": {
- "heading_degrees": 45
}, - "position": {
- "altitude_hae_meters": 0,
- "altitude_msl_meters": 0,
- "latitude_degrees": 35.285,
- "longitude_degrees": 139.777
}
}, - "motion": {
- "speed_mps": 15.4,
- "velocity_enu_mps": {
- "x": 10.9,
- "y": 10.9,
- "z": 0
}
}, - "name": "USS Arleigh Burke (DDG-51)",
- "provenance": {
- "name": "ais-receiver-01",
- "request_id": "9f8d2a3b-4567-89cd-ef01-234567890def",
- "source": "AIS",
- "source_node_id": "3c9f7b22-3456-78ab-cdef-234567890abc",
- "updated_at": "2024-01-15T10:30:00Z"
}, - "status": "ENTITY_STATUS_ACTIVE",
- "type_info": {
- "maritime": {
- "mmsi": "366987000",
- "nav_status": "NAVIGATION_STATUS_UNDERWAY",
- "vessel_type": "VESSEL_TYPE_MILITARY"
}
}
}
}{- "entity": {
- "assessment": {
- "disposition": "DISPOSITION_FRIEND",
- "environment": "ENVIRONMENT_SURFACE"
}, - "id": "550e8400-e29b-41d4-a716-446655440000",
- "location": {
- "position": {
- "altitude_hae_meters": 0,
- "latitude_degrees": 35,
- "longitude_degrees": 139
}
}, - "motion": {
- "speed_mps": 15.4
}, - "name": "USS Arleigh Burke",
- "provenance": {
- "source": "AIS",
- "updated_at": "2024-01-15T10:30:00Z"
}
}
}Retrieves a paginated list of entities matching the specified filter criteria. Returns a snapshot at query time. For real-time updates, use StreamEntities.
Request message for retrieving multiple entities.
object (v1EntityQuery) Query criteria for retrieving entities from storage. Uses a flat structure where all criteria are combined with AND logic between fields, and OR logic within repeated fields. Optimized for efficient bulk retrieval. Empty query returns all entities. For complex filtering (geographic bounding boxes, labels, nested boolean logic), stream entities and use EntityStreamFilter instead. Logic semantics:
Examples: Query hostile platforms:
Matches: Query platforms or units that are hostile:
Matches: Query non-simulated surface entities:
Query entities from specific sources:
Query entities updated recently:
| |
| cursor | string Pagination cursor from previous response. Omit or leave empty for first page. |
| pageSize | integer <int32> <= 1000 Default: "10" Maximum number of entities per page. |
{- "pageSize": 100,
- "query": {
- "dispositions": [
- "DISPOSITION_FRIEND"
], - "statuses": [
- "ENTITY_STATUS_ACTIVE"
]
}
}{- "entities": [
- {
- "assessment": {
- "disposition": "DISPOSITION_FRIEND",
- "environment": "ENVIRONMENT_SURFACE",
- "nationality": "USA"
}, - "category": "ENTITY_CATEGORY_PLATFORM",
- "id": "550e8400-e29b-41d4-a716-446655440000",
- "location": {
- "position": {
- "latitudeDegrees": 35.285,
- "longitudeDegrees": 139.777
}
}, - "motion": {
- "speedMps": 15.4
}, - "name": "USS Arleigh Burke (DDG-51)",
- "provenance": {
- "name": "ais-receiver-01",
- "updatedAt": "2024-01-15T10:30:00Z"
}, - "status": "ENTITY_STATUS_ACTIVE"
}
], - "nextCursor": "a2919858-75bf-42c4-8850-2bbb2b94d154"
}Retrieves a single entity by its UUID.
| entityId required | string UUID of the entity to retrieve |
{- "entity": {
- "assessment": {
- "disposition": "DISPOSITION_FRIEND",
- "environment": "ENVIRONMENT_SURFACE",
- "nationality": "USA"
}, - "category": "ENTITY_CATEGORY_PLATFORM",
- "id": "550e8400-e29b-41d4-a716-446655440000",
- "location": {
- "position": {
- "latitudeDegrees": 35.285,
- "longitudeDegrees": 139.777
}
}, - "motion": {
- "speedMps": 15.4
}, - "name": "USS Arleigh Burke (DDG-51)",
- "provenance": {
- "name": "ais-receiver-01",
- "updatedAt": "2024-01-15T10:30:00Z"
}, - "status": "ENTITY_STATUS_ACTIVE"
}
}