{"openapi":"3.1.0","info":{"title":"REST","version":"1.0.0"},"paths":{"/api/v1/entities":{"put":{"operationId":"entities_publishEntity","summary":"Publish entity","description":"Publish an entity for ingest into the Entities API. Entities created with this method are \"owned\" by the originator: other sources, \nsuch as the UI, may not edit or delete these entities. The server validates entities at API call time and \nreturns an error if the entity is invalid.\n\nAn entity ID must be provided when calling this endpoint. If the entity referenced by the entity ID does not exist\nthen it will be created. Otherwise the entity will be updated. An entity will only be updated if its\nprovenance.sourceUpdateTime is greater than the provenance.sourceUpdateTime of the existing entity.","tags":["entities"],"responses":{"200":{"description":"The request was valid and accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Entity"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized to access resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Entity"}}}},"security":[{"OAuth":[]}]}},"/api/v1/entities/{entityId}":{"get":{"operationId":"entities_getEntity","summary":"Get entity","tags":["entities"],"parameters":[{"name":"entityId","in":"path","description":"ID of the entity to return","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Entity retrieval was successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Entity"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized to access resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"OAuth":[]}]}},"/api/v1/entities/{entityId}/override/{fieldPath}":{"put":{"operationId":"entities_overrideEntity","summary":"Override entity","description":"Only fields marked with overridable can be overridden. Please refer to our documentation to see the comprehensive\nlist of fields that can be overridden. The entity in the request body should only have a value set on the field \nspecified in the field path parameter. Field paths are rooted in the base entity object and must be represented \nusing lower_snake_case. Do not include \"entity\" in the field path.\n\nNote that overrides are applied in an eventually consistent manner. If multiple overrides are created \nconcurrently for the same field path, the last writer wins.","tags":["entities"],"parameters":[{"name":"entityId","in":"path","description":"The unique ID of the entity to override","required":true,"schema":{"type":"string"}},{"name":"fieldPath","in":"path","description":"fieldPath to override","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The Entities API accepts the override.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Entity"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized to access resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityOverride"}}}},"security":[{"OAuth":[]}]},"delete":{"operationId":"entities_removeEntityOverride","summary":"Delete entity override","description":"This operation clears the override value from the specified field path on the entity.","tags":["entities"],"parameters":[{"name":"entityId","in":"path","description":"The unique ID of the entity to undo an override from.","required":true,"schema":{"type":"string"}},{"name":"fieldPath","in":"path","description":"The fieldPath to clear overrides from.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The removal of entity override was successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Entity"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized to access resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"OAuth":[]}]}},"/api/v1/entities/events":{"post":{"operationId":"entities_longPollEntityEvents","summary":"Poll entity events","description":"This is a long polling API that will first return all pre-existing data and then return all new data as\nit becomes available. If you want to start a new polling session then open a request with an empty\n'sessionToken' in the request body. The server will return a new session token in the response.\nIf you want to retrieve the next batch of results from an existing polling session then send the session\ntoken you received from the server in the request body. If no new data is available then the server will\nhold the connection open for up to 5 minutes. After the 5 minute timeout period, the server will close the \nconnection with no results and you may resume polling with the same session token. If your session falls behind \nmore than 3x the total number of entities in the environment, the server will terminate your session. \nIn this case you must start a new session by sending a request with an empty session token.","tags":["entities"],"responses":{"200":{"description":"Entity event batch retrieval was successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityEventResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized to access resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"408":{"description":"The server has terminated the session. The server will send this error when the client has fallen too far\nbehind in processing entity events. If the server sends this error, then the session token is invalid and a\nnew session must be initiated to receive entity events.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Server is out of resources or reaching rate limiting or quota and cannot accept the request at this time.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityEventRequest"}}}},"security":[{"OAuth":[]}]}},"/api/v1/entities/stream":{"post":{"operationId":"entities_streamEntities","summary":"Stream entity events","description":"Establishes a server-sent events (SSE) connection that streams entity data in real-time.\nThis is a one-way connection from server to client that follows the SSE protocol with text/event-stream content type.\n\nThis endpoint enables clients to maintain a real-time view of the common operational picture (COP)\nby first streaming all pre-existing entities that match filter criteria, then continuously delivering\nupdates as entities are created, modified, or deleted.\n\nThe server first sends events with type PREEXISTING for all live entities matching the filter that existed before the stream was open,\nthen streams CREATE events for newly created entities, UPDATE events when existing entities change, and DELETED events when entities are removed. The stream remains open\nindefinitely unless preExistingOnly is set to true.\n\nHeartbeat messages can be configured to maintain connection health and detect disconnects by setting the heartbeatIntervalMS\nparameter. These heartbeats help keep the connection alive and allow clients to verify the server is still responsive.\n\nClients can optimize bandwidth usage by specifying which entity components they need populated using the componentsToInclude parameter.\nThis allows receiving only relevant data instead of complete entities.\n\nThe connection automatically recovers from temporary disconnections, resuming the stream where it left off. Unlike polling approaches,\nthis provides real-time updates with minimal latency and reduced server load.","tags":["entities"],"responses":{"200":{"description":"Returns all pre-existing data and then return all new data as they become available.","content":{"text/event-stream":{"schema":{"$ref":"#/components/schemas/Entities_streamEntities_Response_200"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized to access resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityStreamRequest"}}}},"security":[{"OAuth":[]}]}},"/api/v1/tasks":{"post":{"operationId":"tasks_createTask","summary":"Create task","description":"Creates a new Task in the system with the specified parameters.\n\nThis method initiates a new task with a unique ID (either provided or auto-generated),\nsets the initial task state to STATUS_CREATED, and establishes task ownership. The task\ncan be assigned to a specific agent through the Relations field.\n\nOnce created, a task enters the lifecycle workflow and can be tracked, updated, and managed\nthrough other Tasks API endpoints.","tags":["tasks"],"responses":{"201":{"description":"Task creation was successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized to access resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskCreation"}}}},"security":[{"OAuth":[]}]}},"/api/v1/tasks/{taskId}":{"get":{"operationId":"tasks_getTask","summary":"Get task","description":"Retrieves a specific Task by its ID, with options to select a particular task version or view.\n\nThis method returns detailed information about a task including its current status,\nspecification, relations, and other metadata. The response includes the complete Task object\nwith all associated fields.\n\nBy default, the method returns the latest definition version of the task from the manager's\nperspective.","tags":["tasks"],"parameters":[{"name":"taskId","in":"path","description":"ID of task to return","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Task retrieval was successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized to access resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"OAuth":[]}]}},"/api/v1/tasks/{taskId}/status":{"put":{"operationId":"tasks_updateTaskStatus","summary":"Update task status","description":"Updates the status of a Task as it progresses through its lifecycle.\n\nThis method allows agents or operators to report the current state of a task,\nwhich could include changes to task status, and error information.\n\nEach status update increments the task's status_version. When updating status,\nclients must provide the current version to ensure consistency. The system rejects\nupdates with mismatched versions to prevent race conditions.\n\nTerminal states (`STATUS_DONE_OK` and `STATUS_DONE_NOT_OK`) are permanent; once a task\nreaches these states, no further updates are allowed.","tags":["tasks"],"parameters":[{"name":"taskId","in":"path","description":"ID of task to update status of","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Task status update was successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized to access resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskStatusUpdate"}}}},"security":[{"OAuth":[]}]}},"/api/v1/tasks/{taskId}/cancel":{"put":{"operationId":"tasks_cancelTask","summary":"Cancel task","description":"Cancels a task by marking it for cancellation in the system.\n\nThis method initiates task cancellation based on the task's current state:\n- If the task has not been sent to an agent, it cancels immediately and transitions the task\n  to a terminal state (`STATUS_DONE_NOT_OK` with `ERROR_CODE_CANCELLED`).\n- If the task has already been sent to an agent, the cancellation request is routed to the agent.\n  The agent is then responsible for deciding whether cancellation is possible or not:\n  - If the task can be cancelled, the agent must use `UpdateTaskStatus` and set the task status to `STATUS_DONE_NOT_OK`.\n  - If the task cannot be cancelled, the agent must use `UpdateTaskStatus` to attach a `TaskError` to the task with the error code `ERROR_CODE_REJECTED`\n    and a `message` explaining why the task cannot be cancelled.","tags":["tasks"],"parameters":[{"name":"taskId","in":"path","description":"The ID of task to cancel","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Task cancellation was successful.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized to access resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskCancellation"}}}},"security":[{"OAuth":[]}]}},"/api/v1/tasks/query":{"post":{"operationId":"tasks_queryTasks","summary":"Query tasks","description":"Searches for Tasks that match specified filtering criteria and returns matching tasks in paginated form.\n\nThis method allows filtering tasks based on the following criteria:\n- Parent-task relationships.\n- Task status with inclusive or exclusive filtering.\n- Update time ranges.\n\nLattice returns the results in pages. When more results are available than can be returned in a single\nresponse, a `page_token` is provided. Use the `page_token` in subsequent requests to retrieve the next\nset of results.\n\nBy default, this returns the latest task version for each matching task.","tags":["tasks"],"responses":{"200":{"description":"Task query was successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskQueryResults"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized to access resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskQuery"}}}},"security":[{"OAuth":[]}]}},"/api/v1/tasks/stream":{"post":{"operationId":"tasks_streamTasks","summary":"Stream tasks","description":"Establishes a server streaming connection that delivers task updates in real-time using Server-Sent Events (SSE).\n\nThe stream delivers all existing non-terminal tasks when first connected, followed by real-time\nupdates for task creation and status changes. Additionally, heartbeat messages are sent periodically to maintain the connection.","tags":["tasks"],"responses":{"200":{"description":"Returns a stream of task updates as they occur.","content":{"text/event-stream":{"schema":{"$ref":"#/components/schemas/Tasks_streamTasks_Response_200"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized to access resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskStreamRequest"}}}},"security":[{"OAuth":[]}]}},"/api/v1/agent/listen":{"post":{"operationId":"tasks_listenAsAgent","summary":"Listen as agent","description":"Establishes a server streaming connection that delivers tasks to taskable agents for execution.\n\nThis method creates a persistent connection from Tasks API to an agent, allowing the server\nto push tasks to the agent as they become available. The agent receives a stream of tasks that\nmatch its selector criteria (entity IDs).\n\nThe stream delivers three types of requests:\n- ExecuteRequest: Contains a new task for the agent to execute\n- CancelRequest: Indicates a task should be canceled\n- CompleteRequest: Indicates a task should be completed\n\nThis is the primary method for taskable agents to receive and process tasks in real-time.\nAgents should maintain this connection and process incoming tasks according to their capabilities.\n\nWhen an agent receives a task, it should update the task status using the UpdateStatus endpoint\nto provide progress information back to Tasks API.\n\nThis is a long polling API that will block until a new task is ready for delivery. If no new task is\navailable then the server will hold on to your request for up to 5 minutes, after that 5 minute timeout\nperiod you will be expected to reinitiate a new request.","tags":["tasks"],"responses":{"200":{"description":"Requests for the agent to comply with.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRequest"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized to access resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentListener"}}}},"security":[{"OAuth":[]}]}},"/api/v1/agent/stream":{"post":{"operationId":"tasks_streamAsAgent","summary":"Stream as agent","description":"Establishes a server streaming connection that delivers tasks to taskable agents for execution\nusing Server-Sent Events (SSE).\n\nThis method creates a connection from the Tasks API to an agent that streams relevant tasks to the listener agent. The agent receives a stream of tasks that match the entities specified by the tasks' selector criteria.\n\nThe stream delivers three types of requests:\n- `ExecuteRequest`: Contains a new task for the agent to execute\n- `CancelRequest`: Indicates a task should be canceled\n- `CompleteRequest`: Indicates a task should be completed\n\nAdditionally, heartbeat messages are sent periodically to maintain the connection.\n\nThis is recommended method for taskable agents to receive and process tasks in real-time.\nAgents should maintain connection to this stream and process incoming tasks according to their capabilities. \n\nWhen an agent receives a task, it should update the task status using the `UpdateStatus` endpoint\nto provide progress information back to Tasks API.","tags":["tasks"],"responses":{"200":{"description":"Returns a stream of tasks to the agent as they become available.","content":{"text/event-stream":{"schema":{"$ref":"#/components/schemas/Tasks_streamAsAgent_Response_200"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized to access resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentStreamRequest"}}}},"security":[{"OAuth":[]}]}},"/api/v1/tasks/{taskId}/manual-control/stream":{"post":{"operationId":"tasks_streamManualControlFrames","summary":"Stream manual control frames","description":"Establishes a server streaming connection that delivers manual control frames to agents\nusing server-sent events (SSE).\n\nThis endpoint streams manual control frames, for example, for joystick movements, for a specific task\nto the executing agent. The agent should open this stream before reporting `STATUS_EXECUTING`\nto ensure it is ready to receive control input when the operator begins sending frames.\n\nEach frame includes epoch and sequence metadata for handling concurrent control sessions\nand detecting stale or out-of-order frames. Heartbeat messages are sent periodically to\nmaintain the connection.\n\nThe stream terminates automatically when the task reaches a terminal state\n(`STATUS_DONE_OK` or `STATUS_DONE_NOT_OK`).","tags":["tasks"],"parameters":[{"name":"taskId","in":"path","description":"The ID of the manual control task to receive frames for.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Returns a stream of manual control frames as they are sent by the operator.","content":{"text/event-stream":{"schema":{"$ref":"#/components/schemas/Tasks_streamManualControlFrames_Response_200"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized to access resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManualControlStreamRequest"}}}},"security":[{"OAuth":[]}]}},"/api/v1/tasks/{taskId}/manual-control/frames":{"post":{"operationId":"tasks_sendManualControlFrame","summary":"Send manual control frame","description":"Sends a single manual control frame, for example, joystick input, for a manual control task.\n\nCall this endpoint repeatedly to control the asset executing the task. Lattice forwards each\nframe to the executing agent, which receives it using the stream manual control frames endpoint.\nThe task must be in `STATUS_EXECUTING`.\n\nThe client manages the control session. When it begins controlling, it generates a\n`sessionEpochMicros` and includes it in every request, along with a `sequence` that increases\nwith each frame. A higher epoch replaces the current session, which allows another operator to\ntake over control. A lower epoch is rejected as stale.","tags":["tasks"],"parameters":[{"name":"taskId","in":"path","description":"The ID of the manual control task to send the frame for.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The manual control frame was accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManualControlFrameResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized to access resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request conflicts with the current state of the resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManualControlFrameRequest"}}}},"security":[{"OAuth":[]}]}},"/api/v1/objects":{"get":{"operationId":"objects_listObjects","summary":"List objects","description":"Lists objects in your environment. You can define a prefix to list a subset of your objects. If you do not set a prefix, Lattice returns all available objects. By default this endpoint will list local objects only.","tags":["objects"],"parameters":[{"name":"prefix","in":"query","description":"Filters the objects based on the specified prefix path. If no path is specified, all objects are returned.","required":false,"schema":{"type":"string"}},{"name":"sinceTimestamp","in":"query","description":"Filters out objects whose `last_updated_at` is earlier than this timestamp.\n\n`last_updated_at` records when an object arrived on the node that holds it, so this filter selects objects that arrived since the given time. It is not the time the object was authored: a copy that reaches a node later carries the later arrival time.\n","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"pageToken","in":"query","description":"Opaque cursor for continuing the same list request. Start a new listing without the previous cursor if any query parameter or listing scope changes.","required":false,"schema":{"type":"string","format":"string"}},{"name":"allObjectsInMesh","in":"query","description":"Lists objects across all environment nodes in a Lattice Mesh. When false or unset, only objects held by the local node are returned.","required":false,"schema":{"type":"boolean"}},{"name":"maxPageSize","in":"query","description":"Sets the maximum number of items that should be returned on a single page.","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized to access resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"OAuth":[]}]}},"/api/v1/objects/{objectPath}":{"get":{"operationId":"objects_getObject","summary":"Get object","description":"Fetches an object from your environment using the objectPath path parameter.","tags":["objects"],"parameters":[{"name":"objectPath","in":"path","description":"The path of the object to fetch.","required":true,"schema":{"type":"string","pattern":"^[a-zA-Z0-9/_=\\-.]*$"}},{"name":"Accept-Encoding","in":"header","description":"If set, Lattice will compress the response using the specified compression method. If the header is not defined, or the compression method is set to `identity`, no compression will be applied to the response.","required":false,"schema":{"$ref":"#/components/schemas/ApiV1ObjectsObjectPathGetParametersAcceptEncoding"}},{"name":"Priority","in":"header","description":"Indicates a client's preference for the priority of the response. The value is a structured header as defined in RFC 9218. If you do not set the header, Lattice uses the default priority set for the environment. Incremental delivery directives are not supported and will be ignored.\n","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful operation","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized to access resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"OAuth":[]}]},"post":{"operationId":"objects_uploadObject","summary":"Upload object","description":"Uploads an object. The object must be 1 GiB or smaller.","tags":["objects"],"parameters":[{"name":"objectPath","in":"path","description":"Path of the Object that is to be uploaded.","required":true,"schema":{"type":"string","pattern":"^[a-zA-Z0-9/_=\\-.]*$"}},{"name":"Time-To-Live","in":"header","description":"An optional expiry TTL associated with an object. The value represents the number of nanoseconds the object will exist in the local store. If no TTL is supplied, the server applies a default TTL. In most cases, the default TTL is 90 days. However, it might be higher or lower, depending on the retention requirements of your environment.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"Distribution-Mode","in":"header","description":"Controls how the object is distributed across the mesh. If set to `force`, the object will be force distributed to all nodes. Force-distributed objects are subject to a size limit.","required":false,"schema":{"$ref":"#/components/schemas/ApiV1ObjectsObjectPathPostParametersDistributionMode"}}],"responses":{"200":{"description":"Successful upload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PathMetadata"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Content too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"507":{"description":"Insuccifient Storage","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"security":[{"OAuth":[]}]},"delete":{"operationId":"objects_deleteObject","summary":"Delete object","description":"Deletes an object from your environment given the objectPath path parameter.","tags":["objects"],"parameters":[{"name":"objectPath","in":"path","description":"The path of the object to delete.","required":true,"schema":{"type":"string","pattern":"^[a-zA-Z0-9/_=\\-.]*$"}}],"responses":{"204":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized to access resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"OAuth":[]}]},"head":{"operationId":"objects_getObjectMetadata","summary":"Get object metadata","description":"Returns metadata for a specified object path. Use this to fetch metadata such as object size (size_bytes), its expiry time (expiry_time), or when it arrived on the node holding it (last_updated_at).","tags":["objects"],"parameters":[{"name":"objectPath","in":"path","description":"The path of the object to query.","required":true,"schema":{"type":"string","pattern":"^[a-zA-Z0-9/_=\\-.]*$"}}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Objects_getObjectMetadata_Response_200"}}}},"400":{"description":"Not Found","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"OAuth":[]}]}},"/api/v1/oauth/token":{"post":{"operationId":"oauth_getToken","summary":"Get OAuth2 token","description":"Gets a new short-lived token using the specified client credentials","tags":["OAuth"],"responses":{"200":{"description":"Access token response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/oauth_getToken_Response_200"}}}},"400":{"description":"Bad request or invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTokenRequestBadRequestError"}}}},"401":{"description":"Unauthorized - client authentication failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTokenRequestUnauthorizedError"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"grant_type":{"type":"string","enum":["client_credentials"],"description":"The type of grant being requested"},"client_id":{"type":"string","description":"The client identifier"},"client_secret":{"type":"string","format":"password","description":"The client secret"}},"required":["grant_type"]}}}},"security":[{"OAuth":[]}]}},"/api/v1/video/egress_streams":{"get":{"operationId":"video_listEgressStreams","summary":"List egress streams","description":"Returns a list of active egress stream objects.\n Results are ordered by egress stream create time. If the\n egress backend is unreachable, the listed streams might be stale or degraded.","tags":["video"],"parameters":[{"name":"pageSize","in":"query","description":"Desired number of egress streams per page. Defaults to 50 if left blank,\n and capped at 100. The response may contain fewer than max page size.","required":false,"schema":{"type":"integer"}},{"name":"pageToken","in":"query","description":"To retrieve the next page, pass the `nextPageToken` from the previous\n response. Leave empty for the first page.\n\n Keep the rest of the request identical between pages, otherwise the\n server may reject it.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEgressStreamsResponse"}}}},"400":{"description":"The request was malformed or violated a precondition. Possible causes include missing\nrequired fields, an unsupported value, an `oneof` with zero or more than one variant\nset, a malformed URL, or a state-based precondition such as the source ingress stream\nnot being live.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"401":{"description":"The request was rejected because the bearer token was missing, malformed, or could\nnot be resolved to a user identity.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"403":{"description":"The caller is authenticated but lacks permission for the requested resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"404":{"description":"The specified ingress or egress stream was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"503":{"description":"The service is temporarily unable to handle the request, such as during startup or\nwhen a backend dependency is shutting down. The response carries a RetryInfo hint\n(typically around 2 seconds); clients should retry per that hint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}}},"security":[{"OAuth":[]}]},"post":{"operationId":"video_createEgressStream","summary":"Create egress stream","description":"Creates an egress stream that publishes a live stream to a downstream consumer.\n A stream in `STREAM_STATUS_UNAVAILABLE` is rejected as not-live.","tags":["video"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEgressStreamResponse"}}}},"400":{"description":"The request was malformed or violated a precondition. Possible causes include missing\nrequired fields, an unsupported value, an `oneof` with zero or more than one variant\nset, a malformed URL, or a state-based precondition such as the source ingress stream\nnot being live.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"401":{"description":"The request was rejected because the bearer token was missing, malformed, or could\nnot be resolved to a user identity.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"403":{"description":"The caller is authenticated but lacks permission for the requested resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"404":{"description":"The specified ingress or egress stream was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"409":{"description":"The supplied identifier is already in use. For ingress creation this means the\nrequested `ingressId` is taken by another stream; for egress creation an egress\nstream already exists for the requested source.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"429":{"description":"A service-wide resource pool is exhausted. For egress this means a port could not be\nallocated or the egress instance is at capacity. There is no per-caller quota or rate\nlimit, so this reflects deployment-wide capacity rather than caller behavior.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"503":{"description":"The service is temporarily unable to handle the request, such as during startup or\nwhen a backend dependency is shutting down. The response carries a RetryInfo hint\n(typically around 2 seconds); clients should retry per that hint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEgressStreamRequest"}}}},"security":[{"OAuth":[]}]}},"/api/v1/video/egress_streams/{egressId}":{"get":{"operationId":"video_getEgressStream","summary":"Get egress stream","description":"Retrieves an egress stream object and its associated metadata.","tags":["video"],"parameters":[{"name":"egressId","in":"path","description":"Identifier of the egress stream to retrieve.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetEgressStreamResponse"}}}},"400":{"description":"The request was malformed or violated a precondition. Possible causes include missing\nrequired fields, an unsupported value, an `oneof` with zero or more than one variant\nset, a malformed URL, or a state-based precondition such as the source ingress stream\nnot being live.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"401":{"description":"The request was rejected because the bearer token was missing, malformed, or could\nnot be resolved to a user identity.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"403":{"description":"The caller is authenticated but lacks permission for the requested resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"404":{"description":"The specified ingress or egress stream was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"503":{"description":"The service is temporarily unable to handle the request, such as during startup or\nwhen a backend dependency is shutting down. The response carries a RetryInfo hint\n(typically around 2 seconds); clients should retry per that hint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}}},"security":[{"OAuth":[]}]},"delete":{"operationId":"video_deleteEgressStream","summary":"Delete egress stream","description":"Deletes the egress stream for a live stream. Returns `NOT_FOUND` if no matching active\n egress stream exists.","tags":["video"],"parameters":[{"name":"egressId","in":"path","description":"Identifier of the egress stream to delete.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteEgressStreamResponse"}}}},"400":{"description":"The request was malformed or violated a precondition. Possible causes include missing\nrequired fields, an unsupported value, an `oneof` with zero or more than one variant\nset, a malformed URL, or a state-based precondition such as the source ingress stream\nnot being live.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"401":{"description":"The request was rejected because the bearer token was missing, malformed, or could\nnot be resolved to a user identity.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"403":{"description":"The caller is authenticated but lacks permission for the requested resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"404":{"description":"The specified ingress or egress stream was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"503":{"description":"The service is temporarily unable to handle the request, such as during startup or\nwhen a backend dependency is shutting down. The response carries a RetryInfo hint\n(typically around 2 seconds); clients should retry per that hint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}}},"security":[{"OAuth":[]}]}},"/api/v1/video/ingress_streams":{"get":{"operationId":"video_listIngressStreams","summary":"List ingress streams","description":"Returns a list of top level ingress stream objects, including ingress streams and internal\n Anduril streams. Will only return active streams.\n Results are ordered by ingress stream create time.","tags":["video"],"parameters":[{"name":"pageSize","in":"query","description":"Desired number of ingress streams per page. Defaults to 50 if left blank,\n and capped at 100. The response may contain fewer than requested.","required":false,"schema":{"type":"integer"}},{"name":"pageToken","in":"query","description":"To retrieve the next page, pass the `nextPageToken` from the previous\n response. Leave empty for the first page.\n\n Keep the rest of the request identical between pages, otherwise the\n server may reject it.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListIngressStreamsResponse"}}}},"400":{"description":"The request was malformed or violated a precondition. Possible causes include missing\nrequired fields, an unsupported value, an `oneof` with zero or more than one variant\nset, a malformed URL, or a state-based precondition such as the source ingress stream\nnot being live.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"401":{"description":"The request was rejected because the bearer token was missing, malformed, or could\nnot be resolved to a user identity.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"403":{"description":"The caller is authenticated but lacks permission for the requested resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"404":{"description":"The specified ingress or egress stream was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"500":{"description":"An unexpected error occurred while processing the request. The ingress or egress\nbackend may have failed, or an underlying storage operation may have failed. Retry\nwith backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"503":{"description":"The service is temporarily unable to handle the request, such as during startup or\nwhen a backend dependency is shutting down. The response carries a RetryInfo hint\n(typically around 2 seconds); clients should retry per that hint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}}},"security":[{"OAuth":[]}]},"post":{"operationId":"video_createIngressStream","summary":"Create ingress stream","description":"Creates a video ingress stream, returning metadata that you can use to stream live video to\n Lattice. Exactly one of `rtsp` or `srt` must be set on the request.","tags":["video"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIngressStreamResponse"}}}},"400":{"description":"The request was malformed or violated a precondition. Possible causes include missing\nrequired fields, an unsupported value, an `oneof` with zero or more than one variant\nset, a malformed URL, or a state-based precondition such as the source ingress stream\nnot being live.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"401":{"description":"The request was rejected because the bearer token was missing, malformed, or could\nnot be resolved to a user identity.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"403":{"description":"The caller is authenticated but lacks permission for the requested resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"404":{"description":"The specified ingress or egress stream was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"409":{"description":"The supplied identifier is already in use. For ingress creation this means the\nrequested `ingressId` is taken by another stream; for egress creation an egress\nstream already exists for the requested source.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"429":{"description":"A service-wide resource pool is exhausted. For egress this means a port could not be\nallocated or the egress instance is at capacity. There is no per-caller quota or rate\nlimit, so this reflects deployment-wide capacity rather than caller behavior.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"503":{"description":"The service is temporarily unable to handle the request, such as during startup or\nwhen a backend dependency is shutting down. The response carries a RetryInfo hint\n(typically around 2 seconds); clients should retry per that hint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIngressStreamRequest"}}}},"security":[{"OAuth":[]}]}},"/api/v1/video/ingress_streams/{ingressId}":{"get":{"operationId":"video_getIngressStream","summary":"Get ingress stream","description":"Retrieves a top level ingress stream object and its associated metadata. This includes\n ingress streams and internal Anduril streams.","tags":["video"],"parameters":[{"name":"ingressId","in":"path","description":"Identifier of the ingress stream to retrieve.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetIngressStreamResponse"}}}},"400":{"description":"The request was malformed or violated a precondition. Possible causes include missing\nrequired fields, an unsupported value, an `oneof` with zero or more than one variant\nset, a malformed URL, or a state-based precondition such as the source ingress stream\nnot being live.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"401":{"description":"The request was rejected because the bearer token was missing, malformed, or could\nnot be resolved to a user identity.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"403":{"description":"The caller is authenticated but lacks permission for the requested resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"404":{"description":"The specified ingress or egress stream was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"503":{"description":"The service is temporarily unable to handle the request, such as during startup or\nwhen a backend dependency is shutting down. The response carries a RetryInfo hint\n(typically around 2 seconds); clients should retry per that hint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}}},"security":[{"OAuth":[]}]},"delete":{"operationId":"video_deleteIngressStream","summary":"Delete ingress stream","description":"Deletes a video ingress stream and transitions the stream to `STREAM_STATUS_ARCHIVED`.\n Any egress streams consuming this stream will be stopped automatically.","tags":["video"],"parameters":[{"name":"ingressId","in":"path","description":"Identifier of the ingress stream to delete.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteIngressStreamResponse"}}}},"400":{"description":"The request was malformed or violated a precondition. Possible causes include missing\nrequired fields, an unsupported value, an `oneof` with zero or more than one variant\nset, a malformed URL, or a state-based precondition such as the source ingress stream\nnot being live.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"401":{"description":"The request was rejected because the bearer token was missing, malformed, or could\nnot be resolved to a user identity.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"403":{"description":"The caller is authenticated but lacks permission for the requested resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"404":{"description":"The specified ingress or egress stream was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}},"503":{"description":"The service is temporarily unable to handle the request, such as during startup or\nwhen a backend dependency is shutting down. The response carries a RetryInfo hint\n(typically around 2 seconds); clients should retry per that hint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/google.rpc.Status"}}}}},"security":[{"OAuth":[]}]}}},"tags":[{"name":"entities","description":"The Entities API"},{"name":"tasks","description":"The Tasks API"},{"name":"objects","description":"API to manipulate and interrogate object data on the local node, as well as list objects from the Lattice mesh."},{"name":"OAuth"},{"name":"video"}],"servers":[{"url":"https://example.developer.anduril.com","description":"https://{server}"}],"components":{"schemas":{"Status":{"type":"object","properties":{"platformActivity":{"type":"string","description":"A string that describes the activity that the entity is performing.\n Examples include \"RECONNAISSANCE\", \"INTERDICTION\", \"RETURN TO BASE (RTB)\", \"PREPARING FOR LAUNCH\"."},"role":{"type":"string","description":"A human-readable string that describes the role the entity is currently performing. E.g. \"Team Member\", \"Commander\"."}},"description":"Contains status of entities.","title":"Status"},"Position":{"type":"object","properties":{"latitudeDegrees":{"type":"number","format":"double","description":"WGS84 geodetic latitude in decimal degrees."},"longitudeDegrees":{"type":"number","format":"double","description":"WGS84 longitude in decimal degrees."},"altitudeHaeMeters":{"type":"number","format":"double","description":"altitude as height above ellipsoid (WGS84) in meters. DoubleValue wrapper is used to distinguish optional from\n default 0."},"altitudeAglMeters":{"type":"number","format":"double","description":"Altitude as AGL (Above Ground Level) if the upstream data source has this value set. This value represents the\n entity's height above the terrain. This is typically measured with a radar altimeter or by using a terrain tile\n set lookup. If the value is not set from the upstream, this value is not set."},"altitudeAsfMeters":{"type":"number","format":"double","description":"Altitude as ASF (Above Sea Floor) if the upstream data source has this value set. If the value is not set from the upstream, this value is\n not set."},"pressureDepthMeters":{"type":"number","format":"double","description":"The depth of the entity from the surface of the water through sensor measurements based on differential pressure\n between the interior and exterior of the vessel. If the value is not set from the upstream, this value is not set."}},"description":"WGS84 position. Position includes four altitude references.\n The data model does not currently support Mean Sea Level (MSL) references,\n such as the Earth Gravitational Model 1996 (EGM-96) and the Earth Gravitational Model 2008 (EGM-08).\n If the only altitude reference available to your integration is MSL, convert it to\n Height Above Ellipsoid (HAE) and populate the altitude_hae_meters field.","title":"Position"},"ENU":{"type":"object","properties":{"e":{"type":"number","format":"double"},"n":{"type":"number","format":"double"},"u":{"type":"number","format":"double"}},"title":"ENU"},"Quaternion":{"type":"object","properties":{"x":{"type":"number","format":"double","description":"x, y, z are vector portion, w is scalar"},"y":{"type":"number","format":"double"},"z":{"type":"number","format":"double"},"w":{"type":"number","format":"double"}},"title":"Quaternion"},"Location":{"type":"object","properties":{"position":{"$ref":"#/components/schemas/Position","description":"see Position definition for details."},"velocityEnu":{"$ref":"#/components/schemas/ENU","description":"Velocity in an ENU reference frame centered on the corresponding position. All units are meters per second."},"speedMps":{"type":"number","format":"double","description":"Speed is the magnitude of velocity_enu vector [sqrt(e^2 + n^2 + u^2)] when present, measured in m/s."},"acceleration":{"$ref":"#/components/schemas/ENU","description":"The entity's acceleration in meters/s^2."},"attitudeEnu":{"$ref":"#/components/schemas/Quaternion","description":"quaternion to translate from entity body frame to it's ENU frame"}},"description":"Available for Entities that have a single or primary Location.","title":"Location"},"EntityManager.TMat3":{"type":"object","properties":{"mxx":{"type":"string","title":"float"},"mxy":{"type":"string","title":"float"},"mxz":{"type":"string","title":"float"},"myy":{"type":"string","title":"float"},"myz":{"type":"string","title":"float"},"mzz":{"type":"string","title":"float"}},"description":"Symmetric 3d matrix only representing the upper right triangle.","title":"EntityManager.TMat3"},"ErrorEllipse":{"type":"object","properties":{"probability":{"type":"number","format":"double","description":"Defines the probability in percentage that an entity lies within the given ellipse: 0-1."},"semiMajorAxisM":{"type":"number","format":"double","description":"Defines the distance from the center point of the ellipse to the furthest distance on the perimeter in meters."},"semiMinorAxisM":{"type":"number","format":"double","description":"Defines the distance from the center point of the ellipse to the shortest distance on the perimeter in meters."},"orientationD":{"type":"number","format":"double","description":"The orientation of the semi-major relative to true north in degrees from clockwise: 0-180 due to symmetry across the semi-minor axis."}},"description":"Indicates ellipse characteristics and probability that an entity lies within the defined ellipse.","title":"ErrorEllipse"},"LocationUncertainty":{"type":"object","properties":{"positionEnuCov":{"$ref":"#/components/schemas/EntityManager.TMat3","description":"Positional covariance represented by the upper triangle of the covariance matrix. It is valid to populate\n only the diagonal of the matrix if the full covariance matrix is unknown."},"velocityEnuCov":{"$ref":"#/components/schemas/EntityManager.TMat3","description":"Velocity covariance represented by the upper triangle of the covariance matrix. It is valid to populate\n only the diagonal of the matrix if the full covariance matrix is unknown."},"positionErrorEllipse":{"$ref":"#/components/schemas/ErrorEllipse","description":"An ellipse that describes the certainty probability and error boundary for a given geolocation."}},"description":"Uncertainty of entity position and velocity, if available.","title":"LocationUncertainty"},"AltitudeProvenanceSourceType":{"type":"string","enum":["ALTITUDE_PROVENANCE_TYPE_INVALID","ALTITUDE_PROVENANCE_TYPE_RADAR_ALTIMETER","ALTITUDE_PROVENANCE_TYPE_LASER_ALTIMETER","ALTITUDE_PROVENANCE_TYPE_BAROMETER","ALTITUDE_PROVENANCE_TYPE_TERRAIN_CONVERSION","ALTITUDE_PROVENANCE_TYPE_GNSS","ALTITUDE_PROVENANCE_TYPE_SONAR","ALTITUDE_PROVENANCE_TYPE_USER_INPUT","ALTITUDE_PROVENANCE_TYPE_INS"],"title":"AltitudeProvenanceSourceType"},"AltitudeProvenance":{"type":"object","properties":{"sourceType":{"$ref":"#/components/schemas/AltitudeProvenanceSourceType"}},"title":"AltitudeProvenance"},"AltitudeAboveWGS84Ellipsoid":{"type":"object","properties":{"provenance":{"$ref":"#/components/schemas/AltitudeProvenance","description":"The provenance of the measurement."},"valueMeters":{"type":"number","format":"double","description":"The altitude value in meters."}},"description":"Altitude above the WGS84 defined ellipsoid. Often measured with a GNSS sensor.","title":"AltitudeAboveWGS84Ellipsoid"},"AltitudeAboveSeaFloor":{"type":"object","properties":{"provenance":{"$ref":"#/components/schemas/AltitudeProvenance","description":"The provenance of the measurement."},"valueMeters":{"type":"number","format":"double","description":"The altitude value in meters."}},"description":"The altitude above the sea floor, generally measured with a sonar.","title":"AltitudeAboveSeaFloor"},"AltitudeBelowSeaSurface":{"type":"object","properties":{"provenance":{"$ref":"#/components/schemas/AltitudeProvenance","description":"The provenance of the measurement."},"valueMeters":{"type":"number","format":"double","description":"The altitude value in meters."}},"description":"The altitude below sea surface, generally measured with a pressure depth sensor.","title":"AltitudeBelowSeaSurface"},"AltitudeAboveStandardDatumPlanePressure":{"type":"object","properties":{"provenance":{"$ref":"#/components/schemas/AltitudeProvenance","description":"The provenance of the measurement."},"valueMeters":{"type":"number","format":"double","description":"The altitude value in meters."}},"description":"The altitude reading measured above the standard datum plane (29.92 inHg or 1013.2 hPA). This is also known as\n pressure altitude or QNE in aviation terms. This altitude should be used when flying at high altitudes and\n above the transition level (18,000 in the USA and Canada), ensuring the use of a common reference altitude.","title":"AltitudeAboveStandardDatumPlanePressure"},"AltitudeAboveMeanSeaLevelPressure":{"type":"object","properties":{"provenance":{"$ref":"#/components/schemas/AltitudeProvenance","description":"The provenance of the measurement."},"valueMeters":{"type":"number","format":"double","description":"The altitude value in meters."}},"description":"The calibrated pressure altitude reading measured above MSL. This is known as QNH or true altitude in aviation\n terms. This is separated from AltitudeAboveMeanSeaLevelEGM96, as the two values are not guaranteed to be the\n same due to temperature fluctuations.","title":"AltitudeAboveMeanSeaLevelPressure"},"AltitudeAboveMeanSeaLevelEGM96":{"type":"object","properties":{"provenance":{"$ref":"#/components/schemas/AltitudeProvenance","description":"The provenance of the measurement."},"valueMeters":{"type":"number","format":"double","description":"The altitude value in meters."}},"description":"The altitude relative to mean sea level represented by the EGM96 geoid. This is often calculated using a terrain\n conversion of from a GNSS device.","title":"AltitudeAboveMeanSeaLevelEGM96"},"AltitudeAboveGroundLevel":{"type":"object","properties":{"provenance":{"$ref":"#/components/schemas/AltitudeProvenance","description":"The provenance of the measurement."},"valueMeters":{"type":"number","format":"double","description":"The altitude value in meters."}},"description":"Altitude as AGL (Above ground level). This is also known as absolute altitude or QFE in aviation terms.","title":"AltitudeAboveGroundLevel"},"Altitude":{"type":"object","properties":{"haeWgs84":{"$ref":"#/components/schemas/AltitudeAboveWGS84Ellipsoid"},"asf":{"$ref":"#/components/schemas/AltitudeAboveSeaFloor"},"bss":{"$ref":"#/components/schemas/AltitudeBelowSeaSurface"},"pressureSdp":{"$ref":"#/components/schemas/AltitudeAboveStandardDatumPlanePressure"},"pressureAmsl":{"$ref":"#/components/schemas/AltitudeAboveMeanSeaLevelPressure"},"egm96Amsl":{"$ref":"#/components/schemas/AltitudeAboveMeanSeaLevelEGM96"},"agl":{"$ref":"#/components/schemas/AltitudeAboveGroundLevel"}},"title":"Altitude"},"LocationGeodetic":{"type":"object","properties":{"latitudeDegrees":{"type":"number","format":"double","description":"WGS84 latitude in decimal degrees."},"longitudeDegrees":{"type":"number","format":"double","description":"WGS84 longitude in decimal degrees."},"universalAltitudeHae":{"$ref":"#/components/schemas/AltitudeAboveWGS84Ellipsoid","description":"Altitude measurement in reference to the WGS84 defined ellipsoid. This is expected to\n always be set if an altitude measurement is available and should be derived from the\n most accurate altitude measurement available. If this is a 2D measurement, then this\n message should not be set. If you are unable to calculate this value, then this\n message should also not be set."},"additionalAltitudes":{"type":"array","items":{"$ref":"#/components/schemas/Altitude"},"description":"This allows for multiple additional altitudes to be conveyed.\n e.g. Barometric Pressure and Radar Altimeter readings\n for an aircraft"}},"description":"Geodetic location measurement in reference to the WGS84 ellipsoid. This also optionally\n provides other altitude reference frames.","title":"LocationGeodetic"},"TMat3":{"type":"object","properties":{"mxx":{"type":"number","format":"double"},"mxy":{"type":"number","format":"double"},"mxz":{"type":"number","format":"double"},"myy":{"type":"number","format":"double"},"myz":{"type":"number","format":"double"},"mzz":{"type":"number","format":"double"}},"description":"A symmetric 3D matrix only representing the upper right triangle, useful for covariance matrices.","title":"TMat3"},"Vec3":{"type":"object","properties":{"x":{"type":"number","format":"double"},"y":{"type":"number","format":"double"},"z":{"type":"number","format":"double"}},"title":"Vec3"},"KinematicsGeodetic":{"type":"object","properties":{"location":{"$ref":"#/components/schemas/LocationGeodetic","description":"The location of this entity."},"locationUncertaintyEnu":{"$ref":"#/components/schemas/TMat3","description":"Location uncertainty of this measurement, measured in the ENU frame. When there are multiple altitude\n measurements, this represents the most certain."},"velocityEnuMPerS":{"$ref":"#/components/schemas/Vec3","description":"Velocity in the ENU frame, measured in meters per second."},"velocityUncertaintyEnu":{"$ref":"#/components/schemas/TMat3","description":"A 3x3 covariance matrix representing the uncertainty of the velocity measurement."},"accelerationMPerS2":{"$ref":"#/components/schemas/Vec3","description":"The entity's acceleration in meters per second squared."},"attitudeEnu":{"$ref":"#/components/schemas/Quaternion","description":"Quaternion that rotates the X unit vector in the entity's body frame (assumed to be front-left-up) [1,0,0]\n to the entity's orientation unit vector in the ENU frame at the entity's location."},"measurementTime":{"type":"string","format":"date-time","description":"The time when these kinematics were measured by the sensor. For tracks, this represents when the sensor made\n the observation that produced these kinematics. For asset pose data, this represents the system time when the\n pose was captured."}},"title":"KinematicsGeodetic"},"LocationGeocentricECEF":{"type":"object","properties":{"xMeters":{"type":"number","format":"double","description":"The plane of the equator, passing through extending from 90°W longitude (negative)\n to 90°E longitude (positive)."},"yMeters":{"type":"number","format":"double","description":"The plane of the equator, passing through the origin and extending from 180° longitude\n (negative) to the prime meridian."},"zMeters":{"type":"number","format":"double","description":"The line between the North and South Poles, with positive values increasing northward."}},"description":"Location measurement in reference to the center of the earth using the ECEF\n coordinate system. This is in the WGS84 coordinate frame.","title":"LocationGeocentricECEF"},"KinematicsGeocentric":{"type":"object","properties":{"location":{"$ref":"#/components/schemas/LocationGeocentricECEF","description":"The location of the entity, measured in the ECEF reference frame."},"locationUncertaintyEcef":{"$ref":"#/components/schemas/TMat3","description":"Location uncertainty of this measurement, measured in the ECEF frame."},"velocityEcefMPerS":{"$ref":"#/components/schemas/Vec3","description":"Velocity in the ECEF frame, measured in meters per second."},"velocityUncertaintyEcef":{"$ref":"#/components/schemas/TMat3","description":"A 3x3 covariance matrix representing the uncertainty of the velocity measurement."},"accelerationMPerS2":{"$ref":"#/components/schemas/Vec3","description":"The entity's acceleration in meters per second squared."},"attitudeEcef":{"$ref":"#/components/schemas/Quaternion","description":"Quaternion that rotates the X unit vector in the entity's body frame (assumed to be front-left-up) [1,0,0]\n to the entity's orientation unit vector in the ECEF frame at the entity's location."},"measurementTime":{"type":"string","format":"date-time","description":"The time when these kinematics were measured by the sensor. For tracks, this represents when the sensor made\n the observation that produced these kinematics. For asset pose data, this represents the system time when the\n pose was captured."}},"title":"KinematicsGeocentric"},"Kinematics":{"type":"object","properties":{"kinematicsGeodetic":{"$ref":"#/components/schemas/KinematicsGeodetic","description":"Kinematics measured in a geodetic (WGS84 latitude/longitude/altitude and ENU) reference frame."},"kinematicsGeocentric":{"$ref":"#/components/schemas/KinematicsGeocentric","description":"Kinematics measured in a geocentric (ECEF) reference frame."}},"description":"Kinematics of the entity, including its location, location uncertainty, motion, attitude, and the time the\n kinematics were measured.\n\n Only one of the fields on this message is expected to be set when publishing an entity.","title":"Kinematics"},"GeoPoint":{"type":"object","properties":{"position":{"$ref":"#/components/schemas/Position"}},"description":"A point shaped geo-entity.\n See https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.2","title":"GeoPoint"},"GeoLine":{"type":"object","properties":{"positions":{"type":"array","items":{"$ref":"#/components/schemas/Position"}}},"description":"A line shaped geo-entity.\n See https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.4","title":"GeoLine"},"GeoPolygonPosition":{"type":"object","properties":{"position":{"$ref":"#/components/schemas/Position","description":"base position. if no altitude set, its on the ground."},"heightM":{"type":"string","title":"float","description":"optional height above base position to extrude in meters.\n for a given polygon, all points should have a height or none of them.\n strictly GeoJSON compatible polygons will not have this set."}},"description":"A position in a GeoPolygon with an optional extruded height.","title":"GeoPolygonPosition"},"LinearRing":{"type":"object","properties":{"positions":{"type":"array","items":{"$ref":"#/components/schemas/GeoPolygonPosition"}}},"description":"A closed ring of points. The first and last point must be the same.","title":"LinearRing"},"GeoPolygon":{"type":"object","properties":{"rings":{"type":"array","items":{"$ref":"#/components/schemas/LinearRing"},"description":"An array of LinearRings where the first item is the exterior ring and subsequent items are interior rings."},"isRectangle":{"type":"boolean","description":"An extension hint that this polygon is a rectangle. When true this implies several things:\n * exactly 1 linear ring with 5 points (starting corner, 3 other corners and start again)\n * each point has the same altitude corresponding with the plane of the rectangle\n * each point has the same height (either all present and equal, or all not present)"}},"description":"A polygon shaped geo-entity.\n See https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.6, only canonical representations accepted","title":"GeoPolygon"},"GeoEllipse":{"type":"object","properties":{"semiMajorAxisM":{"type":"number","format":"double","description":"Defines the distance from the center point of the ellipse to the furthest distance on the perimeter in meters."},"semiMinorAxisM":{"type":"number","format":"double","description":"Defines the distance from the center point of the ellipse to the shortest distance on the perimeter in meters."},"orientationD":{"type":"number","format":"double","description":"The orientation of the semi-major relative to true north in degrees from clockwise: 0-180 due to symmetry across the semi-minor axis."},"heightM":{"type":"number","format":"double","description":"Optional height above entity position to extrude in meters. A non-zero value creates an elliptic cylinder"}},"description":"An ellipse shaped geo-entity.\n For a circle, the major and minor axis would be the same values.\n This shape is NOT Geo-JSON compatible.","title":"GeoEllipse"},"GeoEllipsoid":{"type":"object","properties":{"forwardAxisM":{"type":"number","format":"double","description":"Defines the distance from the center point to the surface along the forward axis"},"sideAxisM":{"type":"number","format":"double","description":"Defines the distance from the center point to the surface along the side axis"},"upAxisM":{"type":"number","format":"double","description":"Defines the distance from the center point to the surface along the up axis"}},"description":"An ellipsoid shaped geo-entity.\n Principal axis lengths are defined in entity body space\n This shape is NOT Geo-JSON compatible.","title":"GeoEllipsoid"},"GeoShape":{"type":"object","properties":{"point":{"$ref":"#/components/schemas/GeoPoint"},"line":{"$ref":"#/components/schemas/GeoLine"},"polygon":{"$ref":"#/components/schemas/GeoPolygon"},"ellipse":{"$ref":"#/components/schemas/GeoEllipse"},"ellipsoid":{"$ref":"#/components/schemas/GeoEllipsoid"}},"description":"A component that describes the shape of a geo-entity.","title":"GeoShape"},"GeoDetailsType":{"type":"string","enum":["GEO_TYPE_INVALID","GEO_TYPE_GENERAL","GEO_TYPE_HAZARD","GEO_TYPE_EMERGENCY","GEO_TYPE_ENGAGEMENT_ZONE","GEO_TYPE_CONTROL_AREA","GEO_TYPE_BULLSEYE","GEO_TYPE_ACM"],"title":"GeoDetailsType"},"ControlAreaDetailsType":{"type":"string","enum":["CONTROL_AREA_TYPE_INVALID","CONTROL_AREA_TYPE_KEEP_IN_ZONE","CONTROL_AREA_TYPE_KEEP_OUT_ZONE","CONTROL_AREA_TYPE_DITCH_ZONE","CONTROL_AREA_TYPE_LOITER_ZONE"],"title":"ControlAreaDetailsType"},"ControlAreaDetails":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/ControlAreaDetailsType"}},"description":"Determines the type of control area being represented by the geo-entity,\n in which an asset can, or cannot, operate.","title":"ControlAreaDetails"},"AcmDetailsAcmType":{"type":"string","enum":["ACM_DETAIL_TYPE_INVALID","ACM_DETAIL_TYPE_LANDING_ZONE"],"title":"AcmDetailsAcmType"},"ACMDetails":{"type":"object","properties":{"acmType":{"$ref":"#/components/schemas/AcmDetailsAcmType"},"acmDescription":{"type":"string","description":"Used for loosely typed associations, such as assignment to a specific fires unit.\n Limit to 150 characters."}},"title":"ACMDetails"},"Color":{"type":"object","properties":{"red":{"type":"string","title":"float","description":"The amount of red in the color as a value in the interval [0, 255]."},"green":{"type":"string","title":"float","description":"The amount of green in the color as a value in the interval [0, 255]."},"blue":{"type":"string","title":"float","description":"The amount of blue in the color as a value in the interval [0, 255]."},"alpha":{"type":"string","title":"float","description":"The fraction of this color that should be applied to the pixel. That is,\n the final pixel color is defined by the equation:\n\n `pixel color = alpha * (this color) + (1.0 - alpha) * (background color)`\n\n This means that a value of 1.0 corresponds to a solid color, whereas\n a value of 0.0 corresponds to a completely transparent color. This\n uses a wrapper message rather than a simple float scalar so that it is\n possible to distinguish between a default value and the value being unset.\n If omitted, this color object is rendered as a solid color\n (as if the alpha value had been explicitly given a value of 1.0)."}},"title":"Color"},"GeoVisualDetails":{"type":"object","properties":{"fillColor":{"$ref":"#/components/schemas/Color","description":"Describes the fill color of a geo-entity."},"lineColor":{"$ref":"#/components/schemas/Color","description":"Describes the line color of a geo-entity."}},"description":"Details specific to displaying a geo-entity","title":"GeoVisualDetails"},"GeoDetails":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/GeoDetailsType"},"controlArea":{"$ref":"#/components/schemas/ControlAreaDetails"},"acm":{"$ref":"#/components/schemas/ACMDetails"},"visualDetails":{"$ref":"#/components/schemas/GeoVisualDetails"}},"description":"A component that describes a geo-entity.","title":"GeoDetails"},"AlternateIdType":{"type":"string","enum":["ALT_ID_TYPE_INVALID","ALT_ID_TYPE_TRACK_ID_2","ALT_ID_TYPE_TRACK_ID_1","ALT_ID_TYPE_SPI_ID","ALT_ID_TYPE_NITF_FILE_TITLE","ALT_ID_TYPE_TRACK_REPO_ALERT_ID","ALT_ID_TYPE_ASSET_ID","ALT_ID_TYPE_LINK16_TRACK_NUMBER","ALT_ID_TYPE_LINK16_JU","ALT_ID_TYPE_NCCT_MESSAGE_ID","ALT_ID_TYPE_CALLSIGN","ALT_ID_TYPE_MMSI_ID","ALT_ID_TYPE_VMF_URN","ALT_ID_TYPE_IMO_ID","ALT_ID_TYPE_VMF_TARGET_NUMBER","ALT_ID_TYPE_SERIAL_NUMBER","ALT_ID_TYPE_REGISTRATION_ID","ALT_ID_TYPE_IBS_GID","ALT_ID_TYPE_DODAAC","ALT_ID_TYPE_UIC","ALT_ID_TYPE_NORAD_CAT_ID","ALT_ID_TYPE_UNOOSA_NAME","ALT_ID_TYPE_UNOOSA_ID"],"title":"AlternateIdType"},"AlternateId":{"type":"object","properties":{"id":{"type":"string"},"type":{"$ref":"#/components/schemas/AlternateIdType"}},"description":"An alternate id for an Entity.","title":"AlternateId"},"Aliases":{"type":"object","properties":{"alternateIds":{"type":"array","items":{"$ref":"#/components/schemas/AlternateId"}},"name":{"type":"string","description":"The best available version of the entity's display name."}},"description":"Available for any Entities with alternate ids in other systems.","title":"Aliases"},"UInt32Range":{"type":"object","properties":{"lowerBound":{"type":"integer","format":"uint"},"upperBound":{"type":"integer","format":"uint"}},"title":"UInt32Range"},"LlaAltitudeReference":{"type":"string","enum":["ALTITUDE_REFERENCE_INVALID","ALTITUDE_REFERENCE_HEIGHT_ABOVE_WGS84","ALTITUDE_REFERENCE_HEIGHT_ABOVE_EGM96","ALTITUDE_REFERENCE_UNKNOWN","ALTITUDE_REFERENCE_BAROMETRIC","ALTITUDE_REFERENCE_ABOVE_SEA_FLOOR","ALTITUDE_REFERENCE_BELOW_SEA_SURFACE"],"description":"Meaning of alt.\n altitude in meters above either WGS84 or EGM96, use altitude_reference to\n determine what zero means.","title":"LlaAltitudeReference"},"LLA":{"type":"object","properties":{"lon":{"type":"number","format":"double"},"lat":{"type":"number","format":"double"},"alt":{"type":"number","format":"double"},"is2d":{"type":"boolean"},"altitudeReference":{"$ref":"#/components/schemas/LlaAltitudeReference","description":"Meaning of alt.\n altitude in meters above either WGS84 or EGM96, use altitude_reference to\n determine what zero means."}},"title":"LLA"},"Pose":{"type":"object","properties":{"pos":{"$ref":"#/components/schemas/LLA","description":"Geospatial location defined by this Pose."},"attEnu":{"$ref":"#/components/schemas/Quaternion","description":"The quaternion to transform a point in the Pose frame to the ENU frame. The Pose frame could be Body, Turret,\n etc and is determined by the context in which this Pose is used.\n The normal convention for defining orientation is to list the frames of transformation, for example\n att_gimbal_to_enu is the quaternion which transforms a point in the gimbal frame to the body frame, but\n in this case we truncate to att_enu because the Pose frame isn't defined. A potentially better name for this\n field would have been att_pose_to_enu.\n\n Implementations of this quaternion should left multiply this quaternion to transform a point from the Pose frame\n to the enu frame.\n\n Point<Pose\\> posePt{1,0,0};\n Rotation<Enu, Pose\\> attPoseToEnu{};\n Point<Enu\\> = attPoseToEnu*posePt;\n\n This transformed point represents some vector in ENU space that is aligned with the x axis of the attPoseToEnu\n matrix.\n\n An alternative matrix expression is as follows:\n ptEnu = M x ptPose"}},"title":"Pose"},"TMat2":{"type":"object","properties":{"mxx":{"type":"number","format":"double"},"mxy":{"type":"number","format":"double"},"myy":{"type":"number","format":"double"}},"description":"symmetric 2d matrix only representing the upper right triangle, useful for\n covariance matrices","title":"TMat2"},"AngleOfArrival":{"type":"object","properties":{"relativePose":{"$ref":"#/components/schemas/Pose","description":"Origin (LLA) and attitude (relative to ENU) of a ray pointing towards the detection. The attitude represents a\n forward-left-up (FLU) frame where the x-axis (1, 0, 0) is pointing towards the target."},"bearingElevationCovarianceRad2":{"$ref":"#/components/schemas/TMat2","description":"Bearing/elevation covariance matrix where bearing is defined in radians CCW+ about the z-axis from the x-axis of FLU frame\n and elevation is positive down from the FL/XY plane.\n mxx = bearing variance in rad^2\n mxy = bearing/elevation covariance in rad^2\n myy = elevation variance in rad^2"}},"description":"The direction from which the signal is received","title":"AngleOfArrival"},"Measurement":{"type":"object","properties":{"value":{"type":"number","format":"double","description":"The value of the measurement."},"sigma":{"type":"number","format":"double","description":"Estimated one standard deviation in same unit as the value."}},"description":"A component that describes some measured value with error.","title":"Measurement"},"LineOfBearing":{"type":"object","properties":{"angleOfArrival":{"$ref":"#/components/schemas/AngleOfArrival","description":"The direction pointing from this entity to the detection"},"rangeEstimateM":{"$ref":"#/components/schemas/Measurement","description":"The estimated distance of the detection"},"maxRangeM":{"$ref":"#/components/schemas/Measurement","description":"The maximum distance of the detection"}},"description":"A line of bearing of a signal.","title":"LineOfBearing"},"Tracked":{"type":"object","properties":{"trackQualityWrapper":{"type":"integer","description":"Quality score, 0-15, nil if none"},"sensorHits":{"type":"integer","description":"Sensor hits aggregation on the tracked entity."},"numberOfObjects":{"$ref":"#/components/schemas/UInt32Range","description":"Estimated number of objects or units that are represented by this entity. Known as Strength in certain contexts (Link16)\n if UpperBound == LowerBound; (strength = LowerBound)\n If both UpperBound and LowerBound are defined; strength is between LowerBound and UpperBound (represented as string \"Strength: 4-5\")\n If UpperBound is defined only (LowerBound unset), Strength ≤ UpperBound\n If LowerBound is defined only (UpperBound unset), LowerBound ≤ Strength\n 0 indicates unset."},"radarCrossSection":{"type":"number","format":"double","description":"The radar cross section (RCS) is a measure of how detectable an object is by radar. A large RCS indicates an object is more easily\n detected. The unit is “decibels per square meter,” or dBsm"},"lastMeasurementTime":{"type":"string","format":"date-time","description":"Timestamp of the latest tracking measurement for this entity."},"lineOfBearing":{"$ref":"#/components/schemas/LineOfBearing","description":"The relative position of a track with respect to the entity that is tracking it. Used for tracks that do not yet have a 3D position.\n For this entity (A), being tracked by some entity (B), this LineOfBearing would express a ray from B to A."}},"description":"Available for Entities that are tracked.","title":"Tracked"},"PrimaryCorrelation":{"type":"object","properties":{"secondaryEntityIds":{"type":"array","items":{"type":"string"},"description":"The secondary entity IDs part of this correlation."}},"title":"PrimaryCorrelation"},"Provenance":{"type":"object","properties":{"integrationName":{"type":"string","description":"Name of the integration that produced this entity"},"dataType":{"type":"string","description":"Source data type of this entity. Examples: ADSB, Link16, etc."},"sourceId":{"type":"string","description":"An ID that allows an element from a source to be uniquely identified"},"sourceUpdateTime":{"type":"string","format":"date-time","description":"The time, according to the source system, that the data in the entity was last modified. Generally, this should\n be the time that the source-reported time of validity of the data in the entity. This field must be\n updated with every change to the entity or else Entity Manager will discard the update."},"sourceDescription":{"type":"string","description":"Description of the modification source. In the case of a user this is the email address."}},"description":"Data provenance.","title":"Provenance"},"CorrelationMetadataReplicationMode":{"type":"string","enum":["CORRELATION_REPLICATION_MODE_INVALID","CORRELATION_REPLICATION_MODE_LOCAL","CORRELATION_REPLICATION_MODE_GLOBAL"],"description":"Indicates how the correlation will be distributed. Because a correlation is composed of\n multiple secondaries, each of which may have been correlated with different replication\n modes, the distribution of the correlation is composed of distributions of the individual\n entities within the correlation set.\n For example, if there are two secondary entities A and B correlated against a primary C,\n with A having been correlated globally and B having been correlated locally, then the\n correlation set that is distributed globally than what is known locally in the node.","title":"CorrelationMetadataReplicationMode"},"CorrelationMetadataType":{"type":"string","enum":["CORRELATION_TYPE_INVALID","CORRELATION_TYPE_MANUAL","CORRELATION_TYPE_AUTOMATED"],"description":"What type of (de)correlation was this entity added with.","title":"CorrelationMetadataType"},"CorrelationMetadata":{"type":"object","properties":{"provenance":{"$ref":"#/components/schemas/Provenance","description":"Who or what added this entity to the (de)correlation."},"replicationMode":{"$ref":"#/components/schemas/CorrelationMetadataReplicationMode","description":"Indicates how the correlation will be distributed. Because a correlation is composed of\n multiple secondaries, each of which may have been correlated with different replication\n modes, the distribution of the correlation is composed of distributions of the individual\n entities within the correlation set.\n For example, if there are two secondary entities A and B correlated against a primary C,\n with A having been correlated globally and B having been correlated locally, then the\n correlation set that is distributed globally than what is known locally in the node."},"type":{"$ref":"#/components/schemas/CorrelationMetadataType","description":"What type of (de)correlation was this entity added with."}},"title":"CorrelationMetadata"},"SecondaryCorrelation":{"type":"object","properties":{"primaryEntityId":{"type":"string","description":"The primary of this correlation."},"metadata":{"$ref":"#/components/schemas/CorrelationMetadata","description":"Metadata about the correlation."}},"title":"SecondaryCorrelation"},"PrimaryMembership":{"type":"object","properties":{},"title":"PrimaryMembership"},"NonPrimaryMembership":{"type":"object","properties":{},"title":"NonPrimaryMembership"},"CorrelationMembership":{"type":"object","properties":{"correlationSetId":{"type":"string","description":"The ID of the correlation set this entity belongs to."},"primary":{"$ref":"#/components/schemas/PrimaryMembership","description":"This entity is the primary of a correlation set meaning that it serves as the representative\n entity of the correlation set."},"nonPrimary":{"$ref":"#/components/schemas/NonPrimaryMembership","description":"This entity is not the primary of the correlation set. Note that there may not\n be a primary at all."},"metadata":{"$ref":"#/components/schemas/CorrelationMetadata","description":"Additional metadata on this correlation."}},"title":"CorrelationMembership"},"DecorrelatedAll":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/CorrelationMetadata","description":"Metadata about the decorrelation."}},"title":"DecorrelatedAll"},"DecorrelatedSingle":{"type":"object","properties":{"entityId":{"type":"string","description":"The entity that was decorrelated against."},"metadata":{"$ref":"#/components/schemas/CorrelationMetadata","description":"Metadata about the decorrelation."}},"title":"DecorrelatedSingle"},"Decorrelation":{"type":"object","properties":{"all":{"$ref":"#/components/schemas/DecorrelatedAll","description":"This will be specified if this entity was decorrelated against all other entities."},"decorrelatedEntities":{"type":"array","items":{"$ref":"#/components/schemas/DecorrelatedSingle"},"description":"A list of decorrelated entities that have been explicitly decorrelated against this entity\n which prevents lower precedence correlations from overriding it in the future.\n For example, if an operator in the UI decorrelated tracks A and B, any automated\n correlators would be unable to correlate them since manual decorrelations have\n higher precedence than automatic ones. Precedence is determined by both correlation\n type and replication mode."}},"title":"Decorrelation"},"Correlation":{"type":"object","properties":{"primary":{"$ref":"#/components/schemas/PrimaryCorrelation","description":"This entity is the primary of a correlation meaning that it serves as the representative\n entity of the correlation set."},"secondary":{"$ref":"#/components/schemas/SecondaryCorrelation","description":"This entity is a secondary of a correlation meaning that it will be represented by the\n primary of the correlation set."},"membership":{"$ref":"#/components/schemas/CorrelationMembership","description":"If present, this entity is a part of a correlation set."},"decorrelation":{"$ref":"#/components/schemas/Decorrelation","description":"If present, this entity was explicitly decorrelated from one or more entities.\n An entity can be both correlated and decorrelated as long as they are disjoint sets.\n An example would be if a user in the UI decides that two tracks are not actually the\n same despite an automatic correlator having correlated them. The user would then\n decorrelate the two tracks and this decorrelation would be preserved preventing the\n correlator from re-correlating them at a later time."}},"description":"Available for Entities that are a correlated (N to 1) set of entities. This will be present on\n each entity in the set.","title":"Correlation"},"MilViewDisposition":{"type":"string","enum":["DISPOSITION_UNKNOWN","DISPOSITION_FRIENDLY","DISPOSITION_HOSTILE","DISPOSITION_SUSPICIOUS","DISPOSITION_ASSUMED_FRIENDLY","DISPOSITION_NEUTRAL","DISPOSITION_PENDING"],"title":"MilViewDisposition"},"MilViewEnvironment":{"type":"string","enum":["ENVIRONMENT_UNKNOWN","ENVIRONMENT_AIR","ENVIRONMENT_SURFACE","ENVIRONMENT_SUB_SURFACE","ENVIRONMENT_LAND","ENVIRONMENT_SPACE"],"title":"MilViewEnvironment"},"MilViewNationality":{"type":"string","enum":["NATIONALITY_INVALID","NATIONALITY_ALBANIA","NATIONALITY_ALGERIA","NATIONALITY_ARGENTINA","NATIONALITY_ARMENIA","NATIONALITY_AUSTRALIA","NATIONALITY_AUSTRIA","NATIONALITY_AZERBAIJAN","NATIONALITY_BELARUS","NATIONALITY_BELGIUM","NATIONALITY_BOLIVIA","NATIONALITY_BOSNIA_AND_HERZEGOVINA","NATIONALITY_BRAZIL","NATIONALITY_BULGARIA","NATIONALITY_CAMBODIA","NATIONALITY_CANADA","NATIONALITY_CHILE","NATIONALITY_CHINA","NATIONALITY_COLOMBIA","NATIONALITY_CROATIA","NATIONALITY_CUBA","NATIONALITY_CYPRUS","NATIONALITY_CZECH_REPUBLIC","NATIONALITY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA","NATIONALITY_DENMARK","NATIONALITY_DOMINICAN_REPUBLIC","NATIONALITY_ECUADOR","NATIONALITY_EGYPT","NATIONALITY_ESTONIA","NATIONALITY_ETHIOPIA","NATIONALITY_FINLAND","NATIONALITY_FRANCE","NATIONALITY_GEORGIA","NATIONALITY_GERMANY","NATIONALITY_GREECE","NATIONALITY_GUATEMALA","NATIONALITY_GUINEA","NATIONALITY_HUNGARY","NATIONALITY_ICELAND","NATIONALITY_INDIA","NATIONALITY_INDONESIA","NATIONALITY_INTERNATIONAL_RED_CROSS","NATIONALITY_IRAQ","NATIONALITY_IRELAND","NATIONALITY_ISLAMIC_REPUBLIC_OF_IRAN","NATIONALITY_ISRAEL","NATIONALITY_ITALY","NATIONALITY_JAMAICA","NATIONALITY_JAPAN","NATIONALITY_JORDAN","NATIONALITY_KAZAKHSTAN","NATIONALITY_KUWAIT","NATIONALITY_KYRGHYZ_REPUBLIC","NATIONALITY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC","NATIONALITY_LATVIA","NATIONALITY_LEBANON","NATIONALITY_LIBERIA","NATIONALITY_LITHUANIA","NATIONALITY_LUXEMBOURG","NATIONALITY_MADAGASCAR","NATIONALITY_MALAYSIA","NATIONALITY_MALTA","NATIONALITY_MEXICO","NATIONALITY_MOLDOVA","NATIONALITY_MONTENEGRO","NATIONALITY_MOROCCO","NATIONALITY_MYANMAR","NATIONALITY_NATO","NATIONALITY_NETHERLANDS","NATIONALITY_NEW_ZEALAND","NATIONALITY_NICARAGUA","NATIONALITY_NIGERIA","NATIONALITY_NORWAY","NATIONALITY_PAKISTAN","NATIONALITY_PANAMA","NATIONALITY_PARAGUAY","NATIONALITY_PERU","NATIONALITY_PHILIPPINES","NATIONALITY_POLAND","NATIONALITY_PORTUGAL","NATIONALITY_REPUBLIC_OF_KOREA","NATIONALITY_ROMANIA","NATIONALITY_RUSSIA","NATIONALITY_SAUDI_ARABIA","NATIONALITY_SENEGAL","NATIONALITY_SERBIA","NATIONALITY_SINGAPORE","NATIONALITY_SLOVAKIA","NATIONALITY_SLOVENIA","NATIONALITY_SOUTH_AFRICA","NATIONALITY_SPAIN","NATIONALITY_SUDAN","NATIONALITY_SWEDEN","NATIONALITY_SWITZERLAND","NATIONALITY_SYRIAN_ARAB_REPUBLIC","NATIONALITY_TAIWAN","NATIONALITY_TAJIKISTAN","NATIONALITY_THAILAND","NATIONALITY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA","NATIONALITY_TUNISIA","NATIONALITY_TURKEY","NATIONALITY_TURKMENISTAN","NATIONALITY_UGANDA","NATIONALITY_UKRAINE","NATIONALITY_UNITED_KINGDOM","NATIONALITY_UNITED_NATIONS","NATIONALITY_UNITED_REPUBLIC_OF_TANZANIA","NATIONALITY_UNITED_STATES_OF_AMERICA","NATIONALITY_URUGUAY","NATIONALITY_UZBEKISTAN","NATIONALITY_VENEZUELA","NATIONALITY_VIETNAM","NATIONALITY_YEMEN","NATIONALITY_ZIMBABWE"],"title":"MilViewNationality"},"MilView":{"type":"object","properties":{"disposition":{"$ref":"#/components/schemas/MilViewDisposition"},"environment":{"$ref":"#/components/schemas/MilViewEnvironment"},"nationality":{"$ref":"#/components/schemas/MilViewNationality"}},"description":"Provides the disposition, environment, and nationality of an Entity.","title":"MilView"},"OntologyTemplate":{"type":"string","enum":["TEMPLATE_INVALID","TEMPLATE_TRACK","TEMPLATE_SENSOR_POINT_OF_INTEREST","TEMPLATE_ASSET","TEMPLATE_GEO","TEMPLATE_SIGNAL_OF_INTEREST"],"description":"The template used when creating this entity. Specifies minimum required components.","title":"OntologyTemplate"},"Ontology":{"type":"object","properties":{"platformType":{"type":"string","description":"A string that describes the entity's high-level type with natural language."},"specificType":{"type":"string","description":"A string that describes the entity's exact model or type."},"template":{"$ref":"#/components/schemas/OntologyTemplate","description":"The template used when creating this entity. Specifies minimum required components."}},"description":"Ontology of the entity.","title":"Ontology"},"SensorOperationalState":{"type":"string","enum":["OPERATIONAL_STATE_INVALID","OPERATIONAL_STATE_OFF","OPERATIONAL_STATE_NON_OPERATIONAL","OPERATIONAL_STATE_DEGRADED","OPERATIONAL_STATE_OPERATIONAL","OPERATIONAL_STATE_DENIED"],"title":"SensorOperationalState"},"SensorSensorType":{"type":"string","enum":["SENSOR_TYPE_INVALID","SENSOR_TYPE_RADAR","SENSOR_TYPE_CAMERA","SENSOR_TYPE_TRANSPONDER","SENSOR_TYPE_RF","SENSOR_TYPE_GPS","SENSOR_TYPE_PTU_POS","SENSOR_TYPE_PERIMETER","SENSOR_TYPE_SONAR"],"description":"The type of sensor","title":"SensorSensorType"},"Frequency":{"type":"object","properties":{"frequencyHz":{"$ref":"#/components/schemas/Measurement","description":"Indicates a frequency of a signal (Hz) with its standard deviation."}},"description":"A component for describing frequency.","title":"Frequency"},"FrequencyRange":{"type":"object","properties":{"minimumFrequencyHz":{"$ref":"#/components/schemas/Frequency","description":"Indicates the lowest measured frequency of a signal (Hz)."},"maximumFrequencyHz":{"$ref":"#/components/schemas/Frequency","description":"Indicates the maximum measured frequency of a signal (Hz)."}},"description":"A component to represent a frequency range.","title":"FrequencyRange"},"Bandwidth":{"type":"object","properties":{"bandwidthHz":{"type":"number","format":"double"}},"description":"Describes the bandwidth of a signal","title":"Bandwidth"},"BandwidthRange":{"type":"object","properties":{"minimumBandwidth":{"$ref":"#/components/schemas/Bandwidth"},"maximumBandwidth":{"$ref":"#/components/schemas/Bandwidth"}},"description":"A component that describes the min and max bandwidths of a sensor","title":"BandwidthRange"},"RFConfiguration":{"type":"object","properties":{"frequencyRangeHz":{"type":"array","items":{"$ref":"#/components/schemas/FrequencyRange"},"description":"Frequency ranges that are available for this sensor."},"bandwidthRangeHz":{"type":"array","items":{"$ref":"#/components/schemas/BandwidthRange"},"description":"Bandwidth ranges that are available for this sensor."}},"description":"Represents RF configurations supported on this sensor.","title":"RFConfiguration"},"ProjectedFrustum":{"type":"object","properties":{"upperLeft":{"$ref":"#/components/schemas/Position","description":"Upper left point of the frustum."},"upperRight":{"$ref":"#/components/schemas/Position","description":"Upper right point of the frustum."},"bottomRight":{"$ref":"#/components/schemas/Position","description":"Bottom right point of the frustum."},"bottomLeft":{"$ref":"#/components/schemas/Position","description":"Bottom left point of the frustum."}},"description":"Represents a frustum in which which all four corner points project onto the ground. All points in this message\n are optional, if the projection to the ground fails then they will not be populated.","title":"ProjectedFrustum"},"EntityManager.Pose":{"type":"object","properties":{"pos":{"$ref":"#/components/schemas/Position","description":"Geospatial location defined by this Pose."},"orientation":{"$ref":"#/components/schemas/Quaternion","description":"The quaternion to transform a point in the Pose frame to the ENU frame. The Pose frame could be Body, Turret,\n etc and is determined by the context in which this Pose is used.\n The normal convention for defining orientation is to list the frames of transformation, for example\n att_gimbal_to_enu is the quaternion which transforms a point in the gimbal frame to the body frame, but\n in this case we truncate to att_enu because the Pose frame isn't defined. A potentially better name for this\n field would have been att_pose_to_enu.\n\n Implementations of this quaternion should left multiply this quaternion to transform a point from the Pose frame\n to the enu frame."}},"title":"EntityManager.Pose"},"FieldOfViewMode":{"type":"string","enum":["SENSOR_MODE_INVALID","SENSOR_MODE_SEARCH","SENSOR_MODE_TRACK","SENSOR_MODE_WEAPON_SUPPORT","SENSOR_MODE_AUTO","SENSOR_MODE_MUTE"],"description":"The mode that this sensor is currently in, used to display for context in the UI. Some sensors can emit multiple\n sensor field of views with different modes, for example a radar can simultaneously search broadly and perform\n tighter bounded tracking.","title":"FieldOfViewMode"},"FieldOfView":{"type":"object","properties":{"fovId":{"type":"integer","description":"The Id for one instance of a FieldOfView, persisted across multiple updates to provide continuity during\n smoothing. This is relevant for sensors where the dwell schedule is on the order of\n milliseconds, making multiple FOVs a requirement for proper display of search beams."},"mountId":{"type":"string","description":"The Id of the mount the sensor is on."},"projectedFrustum":{"$ref":"#/components/schemas/ProjectedFrustum","description":"The field of view the sensor projected onto the ground."},"projectedCenterRay":{"$ref":"#/components/schemas/Position","description":"Center ray of the frustum projected onto the ground."},"centerRayPose":{"$ref":"#/components/schemas/EntityManager.Pose","description":"The origin and direction of the center ray for this sensor relative to the ENU frame. A ray which is aligned with\n the positive X axis in the sensor frame will be transformed into the ray along the sensor direction in the ENU\n frame when transformed by the quaternion contained in this pose."},"horizontalFov":{"type":"string","title":"float","description":"Horizontal field of view in radians."},"verticalFov":{"type":"string","title":"float","description":"Vertical field of view in radians."},"range":{"type":"string","title":"float","description":"Sensor range in meters."},"mode":{"$ref":"#/components/schemas/FieldOfViewMode","description":"The mode that this sensor is currently in, used to display for context in the UI. Some sensors can emit multiple\n sensor field of views with different modes, for example a radar can simultaneously search broadly and perform\n tighter bounded tracking."}},"description":"Sensor Field Of View closely resembling fov.proto SensorFieldOfView.","title":"FieldOfView"},"Sensor":{"type":"object","properties":{"sensorId":{"type":"string","description":"This generally is used to indicate a specific type at a more detailed granularity. E.g. COMInt or LWIR"},"operationalState":{"$ref":"#/components/schemas/SensorOperationalState"},"sensorType":{"$ref":"#/components/schemas/SensorSensorType","description":"The type of sensor"},"sensorDescription":{"type":"string","description":"A human readable description of the sensor"},"rfConfiguraton":{"$ref":"#/components/schemas/RFConfiguration","description":"RF configuration details of the sensor"},"lastDetectionTimestamp":{"type":"string","format":"date-time","description":"Time of the latest detection from the sensor"},"fieldsOfView":{"type":"array","items":{"$ref":"#/components/schemas/FieldOfView"},"description":"Multiple fields of view for a single sensor component"}},"description":"Individual sensor configuration.","title":"Sensor"},"Sensors":{"type":"object","properties":{"sensors":{"type":"array","items":{"$ref":"#/components/schemas/Sensor"}}},"description":"List of sensors available for an entity.","title":"Sensors"},"PayloadConfigurationEffectiveEnvironmentItems":{"type":"string","enum":["ENVIRONMENT_UNKNOWN","ENVIRONMENT_AIR","ENVIRONMENT_SURFACE","ENVIRONMENT_SUB_SURFACE","ENVIRONMENT_LAND","ENVIRONMENT_SPACE"],"title":"PayloadConfigurationEffectiveEnvironmentItems"},"PayloadConfigurationPayloadOperationalState":{"type":"string","enum":["PAYLOAD_OPERATIONAL_STATE_INVALID","PAYLOAD_OPERATIONAL_STATE_OFF","PAYLOAD_OPERATIONAL_STATE_NON_OPERATIONAL","PAYLOAD_OPERATIONAL_STATE_DEGRADED","PAYLOAD_OPERATIONAL_STATE_OPERATIONAL","PAYLOAD_OPERATIONAL_STATE_OUT_OF_SERVICE","PAYLOAD_OPERATIONAL_STATE_UNKNOWN"],"description":"The operational state of this payload.","title":"PayloadConfigurationPayloadOperationalState"},"PayloadConfiguration":{"type":"object","properties":{"capabilityId":{"type":"string","description":"Identifying ID for the capability.\n This ID may be used multiple times to represent payloads that are the same capability but have different operational states"},"quantity":{"type":"integer","format":"uint","description":"The number of payloads currently available in the configuration."},"effectiveEnvironment":{"type":"array","items":{"$ref":"#/components/schemas/PayloadConfigurationEffectiveEnvironmentItems"},"description":"The target environments the configuration is effective against."},"payloadOperationalState":{"$ref":"#/components/schemas/PayloadConfigurationPayloadOperationalState","description":"The operational state of this payload."},"payloadDescription":{"type":"string","description":"A human readable description of the payload"}},"title":"PayloadConfiguration"},"Payload":{"type":"object","properties":{"config":{"$ref":"#/components/schemas/PayloadConfiguration"}},"description":"Individual payload configuration.","title":"Payload"},"Payloads":{"type":"object","properties":{"payloadConfigurations":{"type":"array","items":{"$ref":"#/components/schemas/Payload"}}},"description":"List of payloads available for an entity.","title":"Payloads"},"PowerSourcePowerStatus":{"type":"string","enum":["POWER_STATUS_INVALID","POWER_STATUS_UNKNOWN","POWER_STATUS_NOT_PRESENT","POWER_STATUS_OPERATING","POWER_STATUS_DISABLED","POWER_STATUS_ERROR"],"description":"Status of the power source.","title":"PowerSourcePowerStatus"},"PowerSourcePowerType":{"type":"string","enum":["POWER_TYPE_INVALID","POWER_TYPE_UNKNOWN","POWER_TYPE_GAS","POWER_TYPE_BATTERY"],"description":"Used to determine the type of power source.","title":"PowerSourcePowerType"},"PowerLevel":{"type":"object","properties":{"capacity":{"type":"string","title":"float","description":"Total power capacity of the system."},"remaining":{"type":"string","title":"float","description":"Remaining power capacity of the system."},"percentRemaining":{"type":"string","title":"float","description":"Percent of power remaining."},"voltage":{"type":"number","format":"double","description":"Voltage of the power source subsystem, as reported by the power source. If the source does not report this value\n this field will be null."},"currentAmps":{"type":"number","format":"double","description":"Current in amps of the power source subsystem, as reported by the power source. If the source does not\n report this value this field will be null."},"runTimeToEmptyMins":{"type":"number","format":"double","description":"Estimated minutes until empty. Calculated with consumption at the moment, as reported by the power source. If the source does not\n report this value this field will be null."},"consumptionRateLPerS":{"type":"number","format":"double","description":"Fuel consumption rate in liters per second."}},"description":"Represents the power level of a system.","title":"PowerLevel"},"PowerSource":{"type":"object","properties":{"powerStatus":{"$ref":"#/components/schemas/PowerSourcePowerStatus","description":"Status of the power source."},"powerType":{"$ref":"#/components/schemas/PowerSourcePowerType","description":"Used to determine the type of power source."},"powerLevel":{"$ref":"#/components/schemas/PowerLevel","description":"Power level of the system. If absent, the power level is assumed to be unknown."},"messages":{"type":"array","items":{"type":"string"},"description":"Set of human-readable messages with status of the power system. Typically this would be used in an error state\n to provide additional error information. This can also be used for informational messages."},"offloadable":{"type":"boolean","description":"Whether the power source is offloadable. If the value is missing (as opposed to false) then the entity does not\n report whether the power source is offloadable."}},"description":"Represents the state of a single power source that is connected to this entity.","title":"PowerSource"},"PowerState":{"type":"object","properties":{"sourceIdToState":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/PowerSource"},"description":"This is a map where the key is a unique id of the power source and the value is additional information about the\n power source."}},"description":"Represents the state of power sources connected to this entity.","title":"PowerState"},"OverrideStatus":{"type":"string","enum":["OVERRIDE_STATUS_INVALID","OVERRIDE_STATUS_APPLIED","OVERRIDE_STATUS_PENDING","OVERRIDE_STATUS_TIMEOUT","OVERRIDE_STATUS_REJECTED","OVERRIDE_STATUS_DELETION_PENDING"],"description":"status of the override","title":"OverrideStatus"},"OverrideType":{"type":"string","enum":["OVERRIDE_TYPE_INVALID","OVERRIDE_TYPE_LIVE","OVERRIDE_TYPE_POST_EXPIRY"],"description":"The type of the override, defined by the stage of the entity lifecycle that the entity was in when the override\n was requested.","title":"OverrideType"},"Override":{"type":"object","properties":{"requestId":{"type":"string","description":"override request id for an override request"},"fieldPath":{"type":"string","description":"proto field path which is the string representation of a field.\n example: correlated.primary_entity_id would be primary_entity_id in correlated component"},"maskedFieldValue":{"$ref":"#/components/schemas/Entity","description":"new field value corresponding to field path. In the shape of an empty entity with only the changed value.\n example: entity: { mil_view: { disposition: Disposition_DISPOSITION_HOSTILE } }"},"status":{"$ref":"#/components/schemas/OverrideStatus","description":"status of the override"},"provenance":{"$ref":"#/components/schemas/Provenance"},"type":{"$ref":"#/components/schemas/OverrideType","description":"The type of the override, defined by the stage of the entity lifecycle that the entity was in when the override\n was requested."},"requestTimestamp":{"type":"string","format":"date-time","description":"Timestamp of the override request. The timestamp is generated by the Entity Manager instance that receives the request."}},"description":"Details about an override. Last write wins.","title":"Override"},"Overrides":{"type":"object","properties":{"override":{"type":"array","items":{"$ref":"#/components/schemas/Override"}}},"description":"Metadata about entity overrides present.","title":"Overrides"},"Indicators":{"type":"object","properties":{"simulated":{"type":"boolean"},"exercise":{"type":"boolean"},"emergency":{"type":"boolean"},"c2":{"type":"boolean"},"egressable":{"type":"boolean","description":"Indicates the Entity should be egressed to external sources.\n Integrations choose how the egressing happens (e.g. if an Entity needs fuzzing)."},"starred":{"type":"boolean","description":"A signal of arbitrary importance such that the entity should be globally marked for all users"}},"description":"Indicators to describe entity to consumers.","title":"Indicators"},"HighValueTargetMatch":{"type":"object","properties":{"highValueTargetListId":{"type":"string","description":"The ID of the high value target list that matches the target description."},"highValueTargetDescriptionId":{"type":"string","description":"The ID of the specific high value target description within a high value target list that was matched against.\n The ID is considered to be a globally unique identifier across all high value target IDs."}},"title":"HighValueTargetMatch"},"HighValueTarget":{"type":"object","properties":{"isHighValueTarget":{"type":"boolean","description":"Indicates whether the target matches any description from a high value target list."},"targetPriority":{"type":"integer","format":"uint","description":"The priority associated with the target. If the target's description appears on multiple high value target lists,\n the priority will be a reflection of the highest priority of all of those list's target description.\n\n A lower value indicates the target is of a higher priority, with 1 being the highest possible priority. A value of\n 0 indicates there is no priority associated with this target."},"targetMatches":{"type":"array","items":{"$ref":"#/components/schemas/HighValueTargetMatch"},"description":"All of the high value target descriptions that the target matches against."},"isHighPayoffTarget":{"type":"boolean","description":"Indicates whether the target is a 'High Payoff Target'. Targets can be one or both of high value and high payoff."}},"description":"Describes whether something is a high value target or not.","title":"HighValueTarget"},"Threat":{"type":"object","properties":{"isThreat":{"type":"boolean","description":"Indicates that the entity has been determined to be a threat."}},"description":"Describes whether an entity is a threat or not.","title":"Threat"},"TargetPriority":{"type":"object","properties":{"highValueTarget":{"$ref":"#/components/schemas/HighValueTarget","description":"Describes the target priority in relation to high value target lists."},"threat":{"$ref":"#/components/schemas/Threat","description":"Describes whether the entity should be treated as a threat"}},"description":"The target prioritization associated with an entity.","title":"TargetPriority"},"Fixed":{"type":"object","properties":{},"description":"A fix of a signal. No extra fields but it is expected that location should be populated when using this report.","title":"Fixed"},"EmitterNotation":{"type":"object","properties":{"emitterNotation":{"type":"string"},"confidence":{"type":"number","format":"double","description":"confidence as a percentage that the emitter notation in this component is accurate"}},"description":"A representation of a single emitter notation.","title":"EmitterNotation"},"PulseRepetitionInterval":{"type":"object","properties":{"pulseRepetitionIntervalS":{"$ref":"#/components/schemas/Measurement"}},"description":"A component that describe the length in time between two pulses","title":"PulseRepetitionInterval"},"ScanCharacteristicsScanType":{"type":"string","enum":["SCAN_TYPE_INVALID","SCAN_TYPE_CIRCULAR","SCAN_TYPE_BIDIRECTIONAL_HORIZONTAL_SECTOR","SCAN_TYPE_BIDIRECTIONAL_VERTICAL_SECTOR","SCAN_TYPE_NON_SCANNING","SCAN_TYPE_IRREGULAR","SCAN_TYPE_CONICAL","SCAN_TYPE_LOBE_SWITCHING","SCAN_TYPE_RASTER","SCAN_TYPE_CIRCULAR_VERTICAL_SECTOR","SCAN_TYPE_CIRCULAR_CONICAL","SCAN_TYPE_SECTOR_CONICAL","SCAN_TYPE_AGILE_BEAM","SCAN_TYPE_UNIDIRECTIONAL_VERTICAL_SECTOR","SCAN_TYPE_UNIDIRECTIONAL_HORIZONTAL_SECTOR","SCAN_TYPE_UNIDIRECTIONAL_SECTOR","SCAN_TYPE_BIDIRECTIONAL_SECTOR"],"title":"ScanCharacteristicsScanType"},"ScanCharacteristics":{"type":"object","properties":{"scanType":{"$ref":"#/components/schemas/ScanCharacteristicsScanType"},"scanPeriodS":{"type":"number","format":"double"}},"description":"A component that describes the scanning characteristics of a signal","title":"ScanCharacteristics"},"Signal":{"type":"object","properties":{"frequencyCenter":{"$ref":"#/components/schemas/Frequency"},"frequencyRange":{"$ref":"#/components/schemas/FrequencyRange"},"bandwidthHz":{"type":"number","format":"double","description":"Indicates the bandwidth of a signal (Hz)."},"signalToNoiseRatio":{"type":"number","format":"double","description":"Indicates the signal to noise (SNR) of this signal."},"lineOfBearing":{"$ref":"#/components/schemas/LineOfBearing"},"fixed":{"$ref":"#/components/schemas/Fixed"},"emitterNotations":{"type":"array","items":{"$ref":"#/components/schemas/EmitterNotation"},"description":"Emitter notations associated with this entity."},"pulseWidthS":{"type":"number","format":"double","description":"length in time of a single pulse"},"pulseRepetitionInterval":{"$ref":"#/components/schemas/PulseRepetitionInterval","description":"length in time between the start of two pulses"},"scanCharacteristics":{"$ref":"#/components/schemas/ScanCharacteristics","description":"describes how a signal is observing the environment"},"receivedSignalStrengthDbm":{"$ref":"#/components/schemas/Measurement","description":"Indicates the received signal strength (RSSI) of this signal in decibels relative to one milliwatt (dBm)."}},"description":"A component that describes an entity's signal characteristics.","title":"Signal"},"TransponderCodesMode4InterrogationResponse":{"type":"string","enum":["INTERROGATION_RESPONSE_INVALID","INTERROGATION_RESPONSE_CORRECT","INTERROGATION_RESPONSE_INCORRECT","INTERROGATION_RESPONSE_NO_RESPONSE"],"description":"The validity of the response from the Mode 4 interrogation.","title":"TransponderCodesMode4InterrogationResponse"},"Mode5Mode5InterrogationResponse":{"type":"string","enum":["INTERROGATION_RESPONSE_INVALID","INTERROGATION_RESPONSE_CORRECT","INTERROGATION_RESPONSE_INCORRECT","INTERROGATION_RESPONSE_NO_RESPONSE"],"description":"The validity of the response from the Mode 5 interrogation.","title":"Mode5Mode5InterrogationResponse"},"Mode5":{"type":"object","properties":{"mode5InterrogationResponse":{"$ref":"#/components/schemas/Mode5Mode5InterrogationResponse","description":"The validity of the response from the Mode 5 interrogation."},"mode5":{"type":"integer","format":"uint","description":"The Mode 5 code assigned to military assets."},"mode5PlatformId":{"type":"integer","format":"uint","description":"The Mode 5 platform identification code."}},"description":"Describes the Mode 5 transponder interrogation status and codes.","title":"Mode5"},"ModeS":{"type":"object","properties":{"id":{"type":"string","description":"Mode S identifier which comprises of 8 alphanumeric characters."},"address":{"type":"integer","format":"uint","description":"The Mode S ICAO aircraft address. Expected values are between 1 and 16777214 decimal. The Mode S address is\n considered unique."}},"description":"Describes the Mode S codes.","title":"ModeS"},"TransponderCodes":{"type":"object","properties":{"mode1":{"type":"integer","format":"uint","description":"The mode 1 code assigned to military assets."},"mode2":{"type":"integer","format":"uint","description":"The Mode 2 code assigned to military assets."},"mode3":{"type":"integer","format":"uint","description":"The Mode 3 code assigned by ATC to the asset."},"mode4InterrogationResponse":{"$ref":"#/components/schemas/TransponderCodesMode4InterrogationResponse","description":"The validity of the response from the Mode 4 interrogation."},"mode5":{"$ref":"#/components/schemas/Mode5","description":"The Mode 5 transponder codes."},"modeS":{"$ref":"#/components/schemas/ModeS","description":"The Mode S transponder codes."},"modeCAltitudeFt":{"type":"integer","description":"The Mode C altitude reported by the transponder in feet. Mode C provides pressure altitude in 100-foot increments up\n to 10,000 feet MSL. Valid altitudes include 0 ft (sea level). An unset field indicates no Mode C response was received."}},"description":"A message describing any transponder codes associated with Mode 1, 2, 3, 4, 5, S, C interrogations.","title":"TransponderCodes"},"ClassificationInformationLevel":{"type":"string","enum":["CLASSIFICATION_LEVELS_INVALID","CLASSIFICATION_LEVELS_UNCLASSIFIED","CLASSIFICATION_LEVELS_CONTROLLED_UNCLASSIFIED","CLASSIFICATION_LEVELS_CONFIDENTIAL","CLASSIFICATION_LEVELS_SECRET","CLASSIFICATION_LEVELS_TOP_SECRET"],"description":"Classification level to be applied to the information in question.","title":"ClassificationInformationLevel"},"ClassificationInformation":{"type":"object","properties":{"level":{"$ref":"#/components/schemas/ClassificationInformationLevel","description":"Classification level to be applied to the information in question."},"caveats":{"type":"array","items":{"type":"string"},"description":"Caveats that may further restrict how the information can be disseminated."}},"description":"Represents all of the necessary information required to generate a summarized\n classification marking.\n\n > example: A summarized classification marking of \"TOPSECRET//NOFORN//FISA\"\n            would be defined as: { \"level\": 5, \"caveats\": [ \"NOFORN, \"FISA\" ] }","title":"ClassificationInformation"},"FieldClassificationInformation":{"type":"object","properties":{"fieldPath":{"type":"string","description":"Proto field path which is the string representation of a field.\n > example: signal.bandwidth_hz would be bandwidth_hz in the signal component"},"classificationInformation":{"$ref":"#/components/schemas/ClassificationInformation","description":"The information which makes up the field level classification marking."}},"description":"A field specific classification information definition.","title":"FieldClassificationInformation"},"Classification":{"type":"object","properties":{"default":{"$ref":"#/components/schemas/ClassificationInformation","description":"The default classification information which should be assumed to apply to everything in\n the entity unless a specific field level classification is present."},"fields":{"type":"array","items":{"$ref":"#/components/schemas/FieldClassificationInformation"},"description":"The set of individual field classification information which should always precedence\n over the default classification information."}},"description":"A component that describes an entity's security classification levels.","title":"Classification"},"TaskDefinition":{"type":"object","properties":{"taskSpecificationUrl":{"type":"string","description":"Url path must be prefixed with `type.googleapis.com/`."}},"description":"Defines a supported task by the task specification URL of its \"Any\" type.","title":"TaskDefinition"},"TaskCatalog":{"type":"object","properties":{"taskDefinitions":{"type":"array","items":{"$ref":"#/components/schemas/TaskDefinition"}}},"description":"Catalog of supported tasks.","title":"TaskCatalog"},"MediaItemType":{"type":"string","enum":["MEDIA_TYPE_INVALID","MEDIA_TYPE_IMAGE","MEDIA_TYPE_VIDEO"],"description":"The type of media for this item.","title":"MediaItemType"},"MediaItem":{"type":"object","properties":{"itemIdentifier":{"type":"string","description":"A unique identifier for this mediaItem."},"type":{"$ref":"#/components/schemas/MediaItemType","description":"The type of media for this item."},"relativePath":{"type":"string","description":"The path, relative to the environment base URL, where media related to an entity can be accessed"}},"title":"MediaItem"},"Media":{"type":"object","properties":{"media":{"type":"array","items":{"$ref":"#/components/schemas/MediaItem"}}},"description":"Media associated with an entity.","title":"Media"},"TrackedBy":{"type":"object","properties":{"activelyTrackingSensors":{"$ref":"#/components/schemas/Sensors","description":"Sensor details of the tracking entity's sensors that were active and tracking the tracked entity. This may be\n a subset of the total sensors available on the tracking entity."},"lastMeasurementTimestamp":{"type":"string","format":"date-time","description":"Latest time that any sensor in actively_tracking_sensors detected the tracked entity."}},"description":"Describes the relationship between the entity being tracked (\"tracked entity\") and the entity that is\n performing the tracking (\"tracking entity\").","title":"TrackedBy"},"GroupChild":{"type":"object","properties":{},"description":"A GroupChild relationship is a uni-directional relationship indicating that (1) this entity\n represents an Entity Group and (2) the related entity is a child member of this group. The presence of this\n relationship alone determines that the type of group is an Entity Group.","title":"GroupChild"},"GroupParent":{"type":"object","properties":{},"description":"A GroupParent relationship is a uni-directional relationship indicating that this entity is a member of\n the Entity Group represented by the related entity. The presence of this relationship alone determines that\n the type of group that this entity is a member of is an Entity Group.","title":"GroupParent"},"MergedFrom":{"type":"object","properties":{},"description":"A MergedFrom relationship is a uni-directional relationship indicating that this entity is a merged entity whose\n data has at least partially been merged from the related entity.","title":"MergedFrom"},"ActiveTarget":{"type":"object","properties":{},"description":"A target relationship is the inverse of TrackedBy; a one-way relation\n from sensor to target, indicating track(s) currently prioritized by a robot.","title":"ActiveTarget"},"RelationshipType":{"type":"object","properties":{"trackedBy":{"$ref":"#/components/schemas/TrackedBy"},"groupChild":{"$ref":"#/components/schemas/GroupChild"},"groupParent":{"$ref":"#/components/schemas/GroupParent"},"mergedFrom":{"$ref":"#/components/schemas/MergedFrom"},"activeTarget":{"$ref":"#/components/schemas/ActiveTarget"}},"description":"Determines the type of relationship between this entity and another.","title":"RelationshipType"},"Relationship":{"type":"object","properties":{"relatedEntityId":{"type":"string","description":"The entity ID to which this entity is related."},"relationshipId":{"type":"string","description":"A unique identifier for this relationship. Allows removing or updating relationships."},"relationshipType":{"$ref":"#/components/schemas/RelationshipType","description":"The relationship type"}},"description":"The relationship component indicates a relationship to another entity.","title":"Relationship"},"Relationships":{"type":"object","properties":{"relationships":{"type":"array","items":{"$ref":"#/components/schemas/Relationship"}}},"description":"The relationships between this entity and other entities in the common operational picture.","title":"Relationships"},"RangeRings":{"type":"object","properties":{"minDistanceM":{"type":"number","format":"double","description":"The minimum range ring distance, specified in meters."},"maxDistanceM":{"type":"number","format":"double","description":"The maximum range ring distance, specified in meters."},"ringCount":{"type":"integer","format":"uint","description":"The count of range rings."},"ringLineColor":{"$ref":"#/components/schemas/Color","description":"The color of range rings, specified in hex string."}},"description":"Range rings allow visual assessment of map distance at varying zoom levels.","title":"RangeRings"},"VisualDetails":{"type":"object","properties":{"rangeRings":{"$ref":"#/components/schemas/RangeRings","description":"The range rings to display around an entity."}},"description":"Visual details associated with the display of an entity in the client.","title":"VisualDetails"},"Dimensions":{"type":"object","properties":{"lengthM":{"type":"string","title":"float","description":"Length of the entity in meters"}},"title":"Dimensions"},"RouteDetails":{"type":"object","properties":{"destinationName":{"type":"string","description":"Free form text giving the name of the entity's destination"},"estimatedArrivalTime":{"type":"string","format":"date-time","description":"Estimated time of arrival at destination"}},"title":"RouteDetails"},"CronWindow":{"type":"object","properties":{"cronExpression":{"type":"string","description":"in UTC, describes when and at what cadence this window starts, in the quartz flavor of cron\n\n examples:\n    This schedule is begins at 7:00:00am UTC everyday between Monday and Friday\n        0 0 7 ? * MON-FRI *\n    This schedule begins every 5 minutes starting at 12:00:00pm UTC until 8:00:00pm UTC everyday\n        0 0/5 12-20 * * ? *\n    This schedule begins at 12:00:00pm UTC on March 2nd 2023\n        0 0 12 2 3 ? 2023"},"durationMillis":{"type":"string","description":"describes the duration"}},"title":"CronWindow"},"ScheduleScheduleType":{"type":"string","enum":["SCHEDULE_TYPE_INVALID","SCHEDULE_TYPE_ZONE_ENABLED","SCHEDULE_TYPE_ZONE_TEMP_ENABLED"],"description":"The schedule type","title":"ScheduleScheduleType"},"Schedule":{"type":"object","properties":{"windows":{"type":"array","items":{"$ref":"#/components/schemas/CronWindow"},"description":"expression that represents this schedule's \"ON\" state"},"scheduleId":{"type":"string","description":"A unique identifier for this schedule."},"scheduleType":{"$ref":"#/components/schemas/ScheduleScheduleType","description":"The schedule type"}},"description":"A Schedule associated with this entity","title":"Schedule"},"Schedules":{"type":"object","properties":{"schedules":{"type":"array","items":{"$ref":"#/components/schemas/Schedule"}}},"description":"Schedules associated with this entity","title":"Schedules"},"HealthConnectionStatus":{"type":"string","enum":["CONNECTION_STATUS_INVALID","CONNECTION_STATUS_ONLINE","CONNECTION_STATUS_OFFLINE"],"description":"Status indicating whether the entity is able to communicate with Entity Manager.","title":"HealthConnectionStatus"},"HealthHealthStatus":{"type":"string","enum":["HEALTH_STATUS_INVALID","HEALTH_STATUS_HEALTHY","HEALTH_STATUS_WARN","HEALTH_STATUS_FAIL","HEALTH_STATUS_OFFLINE","HEALTH_STATUS_NOT_READY"],"description":"Top-level health status; typically a roll-up of individual component healths.","title":"HealthHealthStatus"},"ComponentHealthHealth":{"type":"string","enum":["HEALTH_STATUS_INVALID","HEALTH_STATUS_HEALTHY","HEALTH_STATUS_WARN","HEALTH_STATUS_FAIL","HEALTH_STATUS_OFFLINE","HEALTH_STATUS_NOT_READY"],"description":"Health for this component.","title":"ComponentHealthHealth"},"ComponentMessageStatus":{"type":"string","enum":["HEALTH_STATUS_INVALID","HEALTH_STATUS_HEALTHY","HEALTH_STATUS_WARN","HEALTH_STATUS_FAIL","HEALTH_STATUS_OFFLINE","HEALTH_STATUS_NOT_READY"],"description":"The status associated with this message.","title":"ComponentMessageStatus"},"ComponentMessage":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/ComponentMessageStatus","description":"The status associated with this message."},"message":{"type":"string","description":"The human-readable content of the message."}},"description":"A message describing the component's health status.","title":"ComponentMessage"},"ComponentHealth":{"type":"object","properties":{"id":{"type":"string","description":"Consistent internal ID for this component."},"name":{"type":"string","description":"Display name for this component."},"health":{"$ref":"#/components/schemas/ComponentHealthHealth","description":"Health for this component."},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ComponentMessage"},"description":"Human-readable describing the component state. These messages should be understandable by end users."},"updateTime":{"type":"string","format":"date-time","description":"The last update time for this specific component.\n If this timestamp is unset, the data is assumed to be most recent"}},"description":"Health of an individual component.","title":"ComponentHealth"},"AlertLevel":{"type":"string","enum":["ALERT_LEVEL_INVALID","ALERT_LEVEL_ADVISORY","ALERT_LEVEL_CAUTION","ALERT_LEVEL_WARNING"],"description":"Alert level (Warning, Caution, or Advisory).","title":"AlertLevel"},"AlertCondition":{"type":"object","properties":{"conditionCode":{"type":"string","description":"Short, machine-readable code that describes this condition. This code is intended to provide systems off-asset\n with a lookup key to retrieve more detailed information about the condition."},"description":{"type":"string","description":"Human-readable description of this condition. The description is intended for display in the UI for human\n understanding and should not be used for machine processing. If the description is fixed and the vehicle controller\n provides no dynamic substitutions, then prefer lookup based on condition_code."}},"description":"A condition which may trigger an alert.","title":"AlertCondition"},"Alert":{"type":"object","properties":{"alertCode":{"type":"string","description":"Short, machine-readable code that describes this alert. This code is intended to provide systems off-asset\n with a lookup key to retrieve more detailed information about the alert."},"description":{"type":"string","description":"Human-readable description of this alert. The description is intended for display in the UI for human\n understanding and should not be used for machine processing. If the description is fixed and the vehicle controller\n provides no dynamic substitutions, then prefer lookup based on alert_code."},"level":{"$ref":"#/components/schemas/AlertLevel","description":"Alert level (Warning, Caution, or Advisory)."},"activatedTime":{"type":"string","format":"date-time","description":"Time at which this alert was activated."},"activeConditions":{"type":"array","items":{"$ref":"#/components/schemas/AlertCondition"},"description":"Set of conditions which have activated this alert."}},"description":"An alert informs operators of critical events related to system performance and mission\n execution. An alert is produced as a result of one or more alert conditions.","title":"Alert"},"Health":{"type":"object","properties":{"connectionStatus":{"$ref":"#/components/schemas/HealthConnectionStatus","description":"Status indicating whether the entity is able to communicate with Entity Manager."},"healthStatus":{"$ref":"#/components/schemas/HealthHealthStatus","description":"Top-level health status; typically a roll-up of individual component healths."},"components":{"type":"array","items":{"$ref":"#/components/schemas/ComponentHealth"},"description":"Health of individual components running on this Entity."},"updateTime":{"type":"string","format":"date-time","description":"The update time for the top-level health information.\n If this timestamp is unset, the data is assumed to be most recent"},"activeAlerts":{"type":"array","items":{"$ref":"#/components/schemas/Alert"},"description":"Active alerts indicate a critical change in system state sent by the asset\n that must be made known to an operator or consumer of the common operating picture.\n Alerts are different from ComponentHealth messages--an active alert does not necessarily\n indicate a component is in an unhealthy state. For example, an asset may trigger\n an active alert based on fuel levels running low. Alerts should be removed from this list when their conditions\n are cleared. In other words, only active alerts should be reported here."}},"description":"General health of the entity as reported by the entity.","title":"Health"},"Agent":{"type":"object","properties":{"entityId":{"type":"string","description":"Entity ID of the agent."}},"description":"Represents an agent capable of processing tasks.","title":"Agent"},"Team":{"type":"object","properties":{"entityId":{"type":"string","description":"Entity ID of the team"},"members":{"type":"array","items":{"$ref":"#/components/schemas/Agent"}}},"description":"Represents a team of agents","title":"Team"},"PlatformSubcomponents":{"type":"object","properties":{},"description":"Describes a PlatformSubcomponents group type. Comprised of entities which\n are subcomponents of the parent platform and the parent platform itself.\n Subcomponents are assumed to be positionally related to the parent group.\n relationship to a radar entity.","title":"PlatformSubcomponents"},"EchelonArmyEchelon":{"type":"string","enum":["ARMY_ECHELON_INVALID","ARMY_ECHELON_FIRE_TEAM","ARMY_ECHELON_SQUAD","ARMY_ECHELON_PLATOON","ARMY_ECHELON_COMPANY","ARMY_ECHELON_BATTALION","ARMY_ECHELON_REGIMENT","ARMY_ECHELON_BRIGADE","ARMY_ECHELON_DIVISION","ARMY_ECHELON_CORPS","ARMY_ECHELON_ARMY"],"title":"EchelonArmyEchelon"},"Echelon":{"type":"object","properties":{"armyEchelon":{"$ref":"#/components/schemas/EchelonArmyEchelon"}},"description":"Describes a Echelon group type.  Comprised of entities which are members of the\n same unit or echelon. Ex: A group of tanks within a armored company or that same company\n as a member of a battalion.","title":"Echelon"},"GroupDetails":{"type":"object","properties":{"team":{"$ref":"#/components/schemas/Team"},"platformSubcomponents":{"$ref":"#/components/schemas/PlatformSubcomponents"},"echelon":{"$ref":"#/components/schemas/Echelon"}},"description":"Details related to grouping for this entity","title":"GroupDetails"},"Munition":{"type":"object","properties":{"munitionId":{"type":"string","description":"Unique munition identifier"},"name":{"type":"string","description":"Long form name of the munition"},"quantityUnits":{"type":"integer","format":"uint","description":"Number of units"}},"description":"Munition describes an entity's munitions stores","title":"Munition"},"Fuel":{"type":"object","properties":{"fuelId":{"type":"string","description":"Unique fuel identifier"},"name":{"type":"string","description":"Long form name of the fuel source."},"reportedDate":{"type":"string","format":"date-time","description":"Timestamp the information was reported"},"amountGallons":{"type":"integer","format":"uint","description":"Amount of gallons on hand"},"maxAuthorizedCapacityGallons":{"type":"integer","format":"uint","description":"How much the asset is allowed to have available (in gallons)"},"operationalRequirementGallons":{"type":"integer","format":"uint","description":"Minimum required for operations (in gallons)"},"dataClassification":{"$ref":"#/components/schemas/Classification","description":"Fuel in a single asset may have different levels of classification\n Use case: fuel for a SECRET asset while diesel fuel may be UNCLASSIFIED"},"dataSource":{"type":"string","description":"Source of information"}},"description":"Fuel describes an entity's repository of fuels stores including current amount, operational requirements, and maximum authorized capacity","title":"Fuel"},"Supplies":{"type":"object","properties":{"munitions":{"type":"array","items":{"$ref":"#/components/schemas/Munition"}},"fuel":{"type":"array","items":{"$ref":"#/components/schemas/Fuel"}}},"description":"Represents the state of supplies associated with an entity (available but not in condition to use immediately)","title":"Supplies"},"OrbitMeanElementsMetadataRefFrame":{"type":"string","enum":["ECI_REFERENCE_FRAME_INVALID","ECI_REFERENCE_FRAME_TEME"],"description":"Reference frame, assumed to be Earth-centered","title":"OrbitMeanElementsMetadataRefFrame"},"OrbitMeanElementsMetadataMeanElementTheory":{"type":"string","enum":["MEAN_ELEMENT_THEORY_INVALID","MEAN_ELEMENT_THEORY_SGP4"],"title":"OrbitMeanElementsMetadataMeanElementTheory"},"OrbitMeanElementsMetadata":{"type":"object","properties":{"creationDate":{"type":"string","format":"date-time","description":"Creation date/time in UTC"},"originator":{"type":"string","description":"Creating agency or operator"},"messageId":{"type":"string","description":"ID that uniquely identifies a message from a given originator."},"refFrame":{"$ref":"#/components/schemas/OrbitMeanElementsMetadataRefFrame","description":"Reference frame, assumed to be Earth-centered"},"refFrameEpoch":{"type":"string","format":"date-time","description":"Reference frame epoch in UTC - mandatory only if not intrinsic to frame definition"},"meanElementTheory":{"$ref":"#/components/schemas/OrbitMeanElementsMetadataMeanElementTheory"}},"title":"OrbitMeanElementsMetadata"},"MeanKeplerianElements":{"type":"object","properties":{"epoch":{"type":"string","format":"date-time","description":"UTC time of validity"},"semiMajorAxisKm":{"type":"number","format":"double","description":"Preferred: semi major axis in kilometers"},"meanMotion":{"type":"number","format":"double","description":"If using SGP/SGP4, provide the Keplerian Mean Motion in revolutions per day"},"eccentricity":{"type":"number","format":"double"},"inclinationDeg":{"type":"number","format":"double","description":"Angle of inclination in deg"},"raOfAscNodeDeg":{"type":"number","format":"double","description":"Right ascension of the ascending node in deg"},"argOfPericenterDeg":{"type":"number","format":"double","description":"Argument of pericenter in deg"},"meanAnomalyDeg":{"type":"number","format":"double","description":"Mean anomaly in deg"},"gm":{"type":"number","format":"double","description":"Optional: gravitational coefficient (Gravitational Constant x central mass) in kg^3 / s^2"}},"title":"MeanKeplerianElements"},"TleParameters":{"type":"object","properties":{"ephemerisType":{"type":"integer","format":"uint","description":"Integer specifying TLE ephemeris type"},"classificationType":{"type":"string","description":"User-defined free-text message classification/caveats of this TLE"},"noradCatId":{"type":"integer","format":"uint","description":"Norad catalog number: integer up to nine digits."},"elementSetNo":{"type":"integer","format":"uint"},"revAtEpoch":{"type":"integer","format":"uint","description":"Optional: revolution number"},"bstar":{"type":"number","format":"double","description":"Drag parameter for SGP-4 in units 1 / Earth radii"},"bterm":{"type":"number","format":"double","description":"Drag parameter for SGP4-XP in units m^2 / kg"},"meanMotionDot":{"type":"number","format":"double","description":"First time derivative of mean motion in rev / day^2"},"meanMotionDdot":{"type":"number","format":"double","description":"Second time derivative of mean motion in rev / day^3. For use with SGP or PPT3."},"agom":{"type":"number","format":"double","description":"Solar radiation pressure coefficient A_gamma / m in m^2 / kg. For use with SGP4-XP."}},"title":"TleParameters"},"OrbitMeanElements":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/OrbitMeanElementsMetadata"},"meanKeplerianElements":{"$ref":"#/components/schemas/MeanKeplerianElements"},"tleParameters":{"$ref":"#/components/schemas/TleParameters"}},"description":"Orbit Mean Elements data, analogous to the Orbit Mean Elements Message in CCSDS 502.0-B-3","title":"OrbitMeanElements"},"Orbit":{"type":"object","properties":{"orbitMeanElements":{"$ref":"#/components/schemas/OrbitMeanElements","description":"Orbit Mean Elements data, analogous to the Orbit Mean Elements Message in CCSDS 502.0-B-3"}},"title":"Orbit"},"MilStd2525C":{"type":"object","properties":{"sidc":{"type":"string"}},"title":"MilStd2525C"},"Symbology":{"type":"object","properties":{"milStd2525C":{"$ref":"#/components/schemas/MilStd2525C"}},"description":"Symbology associated with an entity.","title":"Symbology"},"Entity":{"type":"object","properties":{"entityId":{"type":"string","description":"A Globally Unique Identifier (GUID) for your entity. This is a required\n field."},"description":{"type":"string","description":"A human-readable entity description that's helpful for debugging purposes and human\n traceability. If this field is empty, the Entity Manager API generates one for you."},"isLive":{"type":"boolean","description":"Indicates the entity is active and should have a lifecycle state of CREATE or UPDATE.\n Set this field to true when publishing an entity."},"createdTime":{"type":"string","format":"date-time","description":"The time when the entity was first known to the entity producer. If this field is empty, the Entity Manager API uses the\n current timestamp of when the entity is first received.\n For example, when a drone is first powered on, it might report its startup time as the created time.\n The timestamp doesn't change for the lifetime of an entity."},"expiryTime":{"type":"string","format":"date-time","description":"Future time that expires an entity and updates the is_live flag.\n For entities that are constantly updating, the expiry time also updates.\n In some cases, this may differ from is_live.\n Example: Entities with tasks exported to an external system must remain\n active even after they expire.\n This field is required when publishing a prepopulated entity.\n The expiry time must be in the future, but less than 30 days from the current time."},"noExpiry":{"type":"boolean","description":"Use noExpiry only when the entity contains information that should be available to other\n tasks or integrations beyond its immediate operational context. For example, use noExpiry\n for long-living geographical entities that maintain persistent relevance across multiple\n operations or tasks."},"status":{"$ref":"#/components/schemas/Status","description":"Human-readable descriptions of what the entity is currently doing."},"location":{"$ref":"#/components/schemas/Location","description":"Geospatial data related to the entity, including its position, kinematics, and orientation. Populate either\n this field (and `location_uncertainty`) or `kinematics`, not both. Populating both can lead to conflicting or\n inconsistent kinematics data for the entity."},"locationUncertainty":{"$ref":"#/components/schemas/LocationUncertainty","description":"Indicates uncertainty of the entity's position and kinematics."},"kinematics":{"$ref":"#/components/schemas/Kinematics","description":"Kinematics data related to the entity to a higher degree of granularity than Location. This is preferred for Track Entities.\n Populate either `location`/`location_uncertainty` or this field, not both.\n Populating both can lead to conflicting or inconsistent kinematics data for the entity."},"geoShape":{"$ref":"#/components/schemas/GeoShape","description":"Geospatial representation of the entity, including entities that cover an area rather than a fixed point."},"geoDetails":{"$ref":"#/components/schemas/GeoDetails","description":"Additional details on what the geospatial area or point represents, along with visual display details."},"aliases":{"$ref":"#/components/schemas/Aliases","description":"Entity name displayed in the Lattice UI side panel. Also includes identifiers that other systems can use to reference the same entity."},"tracked":{"$ref":"#/components/schemas/Tracked","description":"If this entity is tracked by another entity, this component contains data related to how it's being tracked."},"correlation":{"$ref":"#/components/schemas/Correlation","description":"If this entity has been correlated or decorrelated to another one, this component contains information on the correlation or decorrelation."},"milView":{"$ref":"#/components/schemas/MilView","description":"View of the entity."},"ontology":{"$ref":"#/components/schemas/Ontology","description":"Ontology defines an entity's categorization in Lattice, and improves data retrieval and integration. Builds a standardized representation of the entity."},"sensors":{"$ref":"#/components/schemas/Sensors","description":"Details an entity's available sensors."},"payloads":{"$ref":"#/components/schemas/Payloads","description":"Details an entity's available payloads."},"powerState":{"$ref":"#/components/schemas/PowerState","description":"Details the entity's power source."},"provenance":{"$ref":"#/components/schemas/Provenance","description":"The primary data source provenance for this entity."},"overrides":{"$ref":"#/components/schemas/Overrides","description":"Provenance of override data."},"indicators":{"$ref":"#/components/schemas/Indicators","description":"Describes an entity's specific characteristics and the operations that can be performed on the entity.\n For example, \"simulated\" informs the operator that the entity is from a simulation, and \"deletable\"\n informs the operator (and system) that the delete operation is valid against the entity."},"targetPriority":{"$ref":"#/components/schemas/TargetPriority","description":"The prioritization associated with an entity, such as if it's a threat or a high-value target."},"signal":{"$ref":"#/components/schemas/Signal","description":"Describes an entity's signal characteristics, primarily used when an entity is a signal of interest."},"transponderCodes":{"$ref":"#/components/schemas/TransponderCodes","description":"A message describing any transponder codes associated with Mode 1, 2, 3, 4, 5, S, C interrogations. These are related to ADS-B modes."},"dataClassification":{"$ref":"#/components/schemas/Classification","description":"Describes an entity's security classification levels at an overall classification level and on a per\n field level."},"taskCatalog":{"$ref":"#/components/schemas/TaskCatalog","description":"A catalog of tasks that can be performed by an entity."},"media":{"$ref":"#/components/schemas/Media","description":"Media associated with an entity, such as videos, images, or thumbnails."},"relationships":{"$ref":"#/components/schemas/Relationships","description":"The relationships between this entity and other entities in the common operational picture (COP)."},"visualDetails":{"$ref":"#/components/schemas/VisualDetails","description":"Visual details associated with the display of an entity in the client."},"dimensions":{"$ref":"#/components/schemas/Dimensions","description":"Physical dimensions of the entity."},"routeDetails":{"$ref":"#/components/schemas/RouteDetails","description":"Additional information about an entity's route."},"schedules":{"$ref":"#/components/schemas/Schedules","description":"Schedules associated with this entity."},"health":{"$ref":"#/components/schemas/Health","description":"Health metrics or connection status reported by the entity."},"groupDetails":{"$ref":"#/components/schemas/GroupDetails","description":"Details for the group associated with this entity."},"supplies":{"$ref":"#/components/schemas/Supplies","description":"Contains relevant supply information for the entity, such as fuel."},"orbit":{"$ref":"#/components/schemas/Orbit","description":"Orbit information for space objects."},"symbology":{"$ref":"#/components/schemas/Symbology","description":"Symbology/iconography for the entity respecting an existing standard."}},"description":"The entity object represents a single known object within the Lattice operational environment. It contains\n all data associated with the entity, such as its name, ID, and other relevant components.","title":"Entity"},"Error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"title":"Error"},"EntityOverride":{"type":"object","properties":{"entity":{"$ref":"#/components/schemas/Entity","description":"The entity containing the overridden fields. The service will extract the overridable fields from \nthe object and ignore all other fields."},"provenance":{"$ref":"#/components/schemas/Provenance","description":"Additional information about the source of the override."}},"title":"EntityOverride"},"EntityEventRequest":{"type":"object","properties":{"sessionToken":{"type":"string","description":"Long-poll session identifier. Leave empty to start a new polling session."},"batchSize":{"type":"integer","description":"Maximum size of response batch. Defaults to 100. Must be between 1 and 2000 (inclusive)."}},"required":["sessionToken"],"title":"EntityEventRequest"},"EntityEventEventType":{"type":"string","enum":["EVENT_TYPE_INVALID","EVENT_TYPE_CREATED","EVENT_TYPE_UPDATE","EVENT_TYPE_DELETED","EVENT_TYPE_PREEXISTING","EVENT_TYPE_POST_EXPIRY_OVERRIDE"],"title":"EntityEventEventType"},"EntityEvent":{"type":"object","properties":{"eventType":{"$ref":"#/components/schemas/EntityEventEventType"},"time":{"type":"string","format":"date-time"},"entity":{"$ref":"#/components/schemas/Entity"}},"description":"Event representing some type of entity change.","title":"EntityEvent"},"EntityEventResponse":{"type":"object","properties":{"sessionToken":{"type":"string","description":"Long-poll session identifier. Use this token to resume polling on subsequent requests."},"entityEvents":{"type":"array","items":{"$ref":"#/components/schemas/EntityEvent"}}},"title":"EntityEventResponse"},"BooleanType":{"type":"object","properties":{"value":{"type":"boolean"}},"description":"The BooleanType represents a static boolean value.","title":"BooleanType"},"NumericType":{"type":"object","properties":{"doubleValue":{"type":"number","format":"double"},"floatValue":{"type":"string","title":"float"},"int32Value":{"type":"integer"},"int64Value":{"type":"string"},"uint32Value":{"type":"integer","format":"uint"},"uint64Value":{"type":"string"}},"description":"The NumericType represents static numeric values. It supports all numeric primitives supported\n by the proto3 language specification.","title":"NumericType"},"StringType":{"type":"object","properties":{"value":{"type":"string"}},"description":"The StringType represents static string values.","title":"StringType"},"EnumType":{"type":"object","properties":{"value":{"type":"integer"}},"description":"The EnumType represents members of well-known anduril ontologies, such as \"disposition.\" When\n such a value is specified, the evaluation library expects the integer representation of the enum\n value. For example, a disposition derived from ontology.v1 such as \"DISPOSITION_HOSTILE\" should be\n represented with the integer value 2.","title":"EnumType"},"TimestampType":{"type":"object","properties":{"value":{"type":"string","format":"date-time"}},"description":"The TimestampType represents a static timestamp value.","title":"TimestampType"},"BoundedShapeType":{"type":"object","properties":{"polygonValue":{"$ref":"#/components/schemas/GeoPolygon"}},"description":"The BoundedShapeType represents any static fully-enclosed shape.","title":"BoundedShapeType"},"PositionType":{"type":"object","properties":{"value":{"$ref":"#/components/schemas/Position"}},"description":"The PositionType represents any fixed LLA point in space.","title":"PositionType"},"HeadingType":{"type":"object","properties":{"value":{"type":"integer"}},"description":"The HeadingType represents the heading in degrees for an entity's\n attitudeEnu quaternion to be compared against. Defaults between a range of 0 to 360","title":"HeadingType"},"ListType":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Value"}}},"description":"A List of Values for use with the IN comparator.","title":"ListType"},"RangeType":{"type":"object","properties":{"start":{"$ref":"#/components/schemas/NumericType"},"end":{"$ref":"#/components/schemas/NumericType"}},"description":"The RangeType represents a numeric range.\n Whether endpoints are included are based on the comparator used.\n Both endpoints must be of the same numeric type.","title":"RangeType"},"Value":{"type":"object","properties":{"booleanType":{"$ref":"#/components/schemas/BooleanType"},"numericType":{"$ref":"#/components/schemas/NumericType"},"stringType":{"$ref":"#/components/schemas/StringType"},"enumType":{"$ref":"#/components/schemas/EnumType"},"timestampType":{"$ref":"#/components/schemas/TimestampType"},"boundedShapeType":{"$ref":"#/components/schemas/BoundedShapeType"},"positionType":{"$ref":"#/components/schemas/PositionType"},"headingType":{"$ref":"#/components/schemas/HeadingType"},"listType":{"$ref":"#/components/schemas/ListType"},"rangeType":{"$ref":"#/components/schemas/RangeType"}},"description":"The Value represents the information against which an entity field is evaluated. It is one of\n a fixed set of types, each of which correspond to specific comparators. See \"ComparatorType\"\n for the full list of Value <-> Comparator mappings.","title":"Value"},"PredicateComparator":{"type":"string","enum":["COMPARATOR_INVALID","COMPARATOR_MATCH_ALL","COMPARATOR_EQUALITY","COMPARATOR_IN","COMPARATOR_LESS_THAN","COMPARATOR_GREATER_THAN","COMPARATOR_LESS_THAN_EQUAL_TO","COMPARATOR_GREATER_THAN_EQUAL_TO","COMPARATOR_WITHIN","COMPARATOR_EXISTS","COMPARATOR_CASE_INSENSITIVE_EQUALITY","COMPARATOR_CASE_INSENSITIVE_EQUALITY_IN","COMPARATOR_RANGE_CLOSED"],"description":"The comparator determines the manner in which the entity field and static value are compared.\n Comparators may only be applied to certain values. For example, the WITHIN comparator cannot\n be used for a boolean value comparison.","title":"PredicateComparator"},"Predicate":{"type":"object","properties":{"fieldPath":{"type":"string","description":"The field_path determines which field on an entity is being referenced in this predicate. For\n example: correlated.primary_entity_id would be primary_entity_id in correlated component."},"value":{"$ref":"#/components/schemas/Value","description":"The value determines the fixed value against which the entity field is to be compared.\n In the case of COMPARATOR_MATCH_ALL, the value contents do not matter as long as the Value is a supported\n type."},"comparator":{"$ref":"#/components/schemas/PredicateComparator","description":"The comparator determines the manner in which the entity field and static value are compared.\n Comparators may only be applied to certain values. For example, the WITHIN comparator cannot\n be used for a boolean value comparison."}},"description":"The Predicate fully encodes the information required to make an evaluation of an entity field\n against a given static value, resulting in a boolean TRUE/FALSE result. The structure of a\n predicate will always follow: \"{entity-value} {comparator} {fixed-value}\" where the entity value\n is determined by the field path.\n\n For example, a predicate would read as: \"{entity.location.velocity_enu} {LESS_THAN} {500kph}\"","title":"Predicate"},"PredicateSet":{"type":"object","properties":{"predicates":{"type":"array","items":{"$ref":"#/components/schemas/Predicate"}}},"description":"The PredicateSet represents a list of predicates or \"leaf nodes\" in the expression tree, which\n can be directly evaluated to a boolean TRUE/FALSE result.","title":"PredicateSet"},"StatementSet":{"type":"object","properties":{"statements":{"type":"array","items":{"$ref":"#/components/schemas/Statement"}}},"description":"The StatementSet represents a list of statements or \"tree nodes,\" each of which follow the same\n behavior as the Statement proto message.","title":"StatementSet"},"AndOperation":{"type":"object","properties":{"predicateSet":{"$ref":"#/components/schemas/PredicateSet"},"statementSet":{"$ref":"#/components/schemas/StatementSet"}},"description":"The AndOperation represents the boolean AND operation, which is to be applied to the list of\n children statement(s) or predicate(s).","title":"AndOperation"},"OrOperation":{"type":"object","properties":{"predicateSet":{"$ref":"#/components/schemas/PredicateSet"},"statementSet":{"$ref":"#/components/schemas/StatementSet"}},"description":"The OrOperation represents the boolean OR operation, which is to be applied to the list of\n children statement(s) or predicate(s).","title":"OrOperation"},"NotOperation":{"type":"object","properties":{"predicate":{"$ref":"#/components/schemas/Predicate"},"statement":{"$ref":"#/components/schemas/Statement"}},"description":"The NotOperation represents the boolean NOT operation, which can only be applied to a single\n child predicate or statement.","title":"NotOperation"},"ListOperationListComparator":{"type":"string","enum":["LIST_COMPARATOR_INVALID","LIST_COMPARATOR_ANY_OF"],"description":"The list_comparator specifies how to compose the boolean results from the child statement\n for each member of the specified list.","title":"ListOperationListComparator"},"ListOperation":{"type":"object","properties":{"listPath":{"type":"string","description":"The list_path specifies the repeated field on an entity to which this operation applies."},"listComparator":{"$ref":"#/components/schemas/ListOperationListComparator","description":"The list_comparator specifies how to compose the boolean results from the child statement\n for each member of the specified list."},"statement":{"$ref":"#/components/schemas/Statement","description":"The statement is a new expression tree conceptually rooted at type of the list. It determines\n how each member of the list is evaluated."}},"description":"The ListOperation represents an operation against a proto list. If the list is of primitive proto\n type (e.g. int32), paths in all child predicates should be left empty. If the list is of message\n proto type (e.g. Sensor), paths in all child predicates should be relative to the list path.\n\n For example, the criteria \"take an action if an entity has any sensor with sensor_id='sensor' and\n OperationalState=STATE_OFF\" would be modeled as:\n Predicate1: { path: \"sensor_id\", comparator: EQUAL_TO, value: \"sensor\" }\n Predicate2: { path: \"operational_state\", comparator: EQUAL_TO, value: STATE_OFF }\n\n Statement2: { AndOperation: PredicateSet: { <Predicate1>, <Predicate2> } }\n ListOperation: { list_path: \"sensors.sensors\", list_comparator: ANY, statement: <Statement2> }\n Statement1: { ListOperation: <ListOperation> }\n\n Note that in the above, the child predicates of the list operation have paths relative to the\n list_path because the list is comprised of message not primitive types.","title":"ListOperation"},"Statement":{"type":"object","properties":{"and":{"$ref":"#/components/schemas/AndOperation"},"or":{"$ref":"#/components/schemas/OrOperation"},"not":{"$ref":"#/components/schemas/NotOperation"},"list":{"$ref":"#/components/schemas/ListOperation"},"predicate":{"$ref":"#/components/schemas/Predicate"}},"description":"A Statement is the building block of the entity filter. The outermost statement is conceptually\n the root node of an \"expression tree\" which allows for the construction of complete boolean\n logic statements. Statements are formed by grouping sets of children statement(s) or predicate(s)\n according to the boolean operation which is to be applied.\n\n For example, the criteria \"take an action if an entity is hostile and an air vehicle\" can be\n represented as: Statement1: { AndOperation: { Predicate1, Predicate2 } }. Where Statement1\n is the root of the expression tree, with an AND operation that is applied to children\n predicates. The predicates themselves encode \"entity is hostile\" and \"entity is air vehicle.\"","title":"Statement"},"EntityStreamRequest":{"type":"object","properties":{"heartbeatIntervalMS":{"type":"integer","description":"at what interval to send heartbeat events, defaults to 30s."},"preExistingOnly":{"type":"boolean","description":"only stream pre-existing entities in the environment and then close the connection, defaults to false."},"componentsToInclude":{"type":"array","items":{"type":"string"},"description":"list of components to include, leave empty to include all components."},"filter":{"$ref":"#/components/schemas/Statement","description":"Optional root of a Statement filter expression tree. If provided, only entities matching\nthe filter are streamed. Applied dynamically: an entity that begins matching is delivered\nas a CREATE, and one that stops matching is delivered as a DELETE. Mirrors the filter on\nthe gRPC StreamEntityComponents endpoint."}},"title":"EntityStreamRequest"},"Timestamp":{"type":"string","description":"The datetime string in ISO 8601 format.","title":"Timestamp"},"EntityStreamHeartbeatEvent":{"type":"string","enum":["heartbeat"],"title":"EntityStreamHeartbeatEvent"},"EntityStreamEventEvent":{"type":"string","enum":["entity"],"title":"EntityStreamEventEvent"},"Entities_streamEntities_Response_200":{"oneOf":[{"type":"object","properties":{"event":{"$ref":"#/components/schemas/EntityStreamHeartbeatEvent"},"timestamp":{"$ref":"#/components/schemas/Timestamp","description":"The timestamp at which the heartbeat message was sent."}},"required":["event"],"description":"heartbeat variant"},{"type":"object","properties":{"event":{"$ref":"#/components/schemas/EntityStreamEventEvent"},"eventType":{"$ref":"#/components/schemas/EntityEventEventType"},"time":{"type":"string","format":"date-time"},"entity":{"$ref":"#/components/schemas/Entity"}},"required":["event"],"description":"entity variant"}],"discriminator":{"propertyName":"event"},"description":"The stream event response.","title":"Entities_streamEntities_Response_200"},"GoogleProtobufAny":{"type":"object","properties":{"@type":{"type":"string","description":"The type of the serialized message."}},"description":"Contains an arbitrary serialized message along with a @type that describes the type of the serialized message.","title":"GoogleProtobufAny"},"System":{"type":"object","properties":{"serviceName":{"type":"string","description":"Name of the service associated with this System."},"entityId":{"type":"string","description":"The Entity ID of the System."},"managesOwnScheduling":{"type":"boolean","description":"Whether the System Principal (for example, an Asset) can own scheduling.\n This means we bypass manager-owned scheduling and defer to the system\n Principal to handle scheduling and give us status updates for the task.\n Regardless of the value defined by the client, the Task Manager will\n determine and set this value appropriately."}},"description":"System Principal representing some autonomous system.","title":"System"},"User":{"type":"object","properties":{"userId":{"type":"string","description":"The User ID associated with this User."}},"description":"A User Principal representing a human.","title":"User"},"Principal":{"type":"object","properties":{"system":{"$ref":"#/components/schemas/System"},"user":{"$ref":"#/components/schemas/User"},"team":{"$ref":"#/components/schemas/Team"},"onBehalfOf":{"$ref":"#/components/schemas/Principal","description":"The Principal _this_ Principal is acting on behalf of.\n\n Likely only populated once in the nesting (i.e. the \"on_behalf_of\" Principal would not have another \"on_behalf_of\" in most cases)."}},"description":"A Principal is an entity that has authority over this task.","title":"Principal"},"Relations":{"type":"object","properties":{"assignee":{"$ref":"#/components/schemas/Principal","description":"The system, user, or team assigned to the task."},"parentTaskId":{"type":"string","description":"Identifies the parent task if the task is a sub-task."}},"description":"Describes the relationships associated with this task: the system assigned to\n execute the task, and the parent task, if one exists.","title":"Relations"},"TaskEntity":{"type":"object","properties":{"entity":{"$ref":"#/components/schemas/Entity","description":"The wrapped entity."},"snapshot":{"type":"boolean","description":"Indicates that this entity was generated from a snapshot of a live entity."}},"description":"An entity wrapper used in task definitions, with additional metadata.\n\n TaskEntity wraps an entity reference with additional contextual information for task execution.\n This structure allows entities to be passed to tasks with supplementary metadata that aids\n in proper task execution, while also serving as an extension point for future capabilities.","title":"TaskEntity"},"FixedRetry":{"type":"object","properties":{"retryInterval":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]{0,11})(?:\\.[0-9]{1,9})?s$","description":"Specifies the interval between retries. A default interval of 5 seconds is used if this field is not set."}},"description":"Defaults to an interval of 5 seconds. If the DeliverBefore field in the task's DeliveryConstraints isn't populated, Lattice does not retry delivery and instead logs a warning.","title":"FixedRetry"},"RetryStrategy":{"type":"object","properties":{"fixedRetryStrategy":{"$ref":"#/components/schemas/FixedRetry"}},"description":"Sets an optional try strategy for tasks. Use this option to control how Lattice attempts to retry delivery of tasks to assets with intermittent access or network connectivity to your environment.","title":"RetryStrategy"},"DeliveryConstraints":{"type":"object","properties":{"deliverAfter":{"type":"string","format":"date-time","description":"Optional earliest time the task can attempt to be delivered."},"deliverBefore":{"type":"string","format":"date-time","description":"The latest time by which the task should be delivered.\n If this deadline passes without successful delivery of the task, then the task will time\n out with DELIVERY_ERROR_CODE_TIMEOUT.\n This field is only required for tasks with retry strategies."},"requireAcknowledgement":{"type":"boolean","description":"Requires the agent to acknowledge the request before Lattice considers it delivered.\n Without this, a request sent over a streaming agent connection is marked delivered as soon\n as the send returns, which only proves it reached a local buffer and not that the agent\n received it. With this set, the task is not marked delivered until the agent reports a\n status confirming receipt; Lattice re-sends until it does, and eventually fails delivery\n with DELIVERY_ERROR_CODE_NOT_ACKNOWLEDGED. Requires deliver_before, which bounds that\n retrying."}},"description":"DeliveryConstraints defines when Lattice should deliver the task to the agent.","title":"DeliveryConstraints"},"ExecutionConstraints":{"type":"object","properties":{"startAfter":{"type":"string","format":"date-time","description":"The timestamp after which the agent can execute the task"},"completeBefore":{"type":"string","format":"date-time","description":"The timestamp before which the agent can execute the task."}},"description":"`ExecutionConstraints` provides scheduling details that informs the agent when to execute the task.","title":"ExecutionConstraints"},"TaskCreation":{"type":"object","properties":{"taskId":{"type":"string","description":"If non-empty, will set the requested Task ID, otherwise will generate a new random\nGUID. Will reject if supplied Task ID does not match [A-Za-z0-9_-.]{5,36}."},"displayName":{"type":"string","description":"Human readable display name for this Task, should be short (<100 chars).","deprecated":true},"description":{"type":"string","description":"Longer, free form human readable description of this Task."},"specification":{"$ref":"#/components/schemas/GoogleProtobufAny","description":"The path for the Protobuf task definition, and the complete task data."},"author":{"$ref":"#/components/schemas/Principal"},"relations":{"$ref":"#/components/schemas/Relations","description":"Any relationships associated with this Task, such as a parent Task or an assignee\nthis Task is designated to for execution."},"isExecutedElsewhere":{"type":"boolean","description":"If set, then the service will not trigger execution of this task on an agent. Useful\nfor when ingesting tasks from an external system that is triggering execution of tasks\non agents."},"initialEntities":{"type":"array","items":{"$ref":"#/components/schemas/TaskEntity"},"description":"Indicates an initial set of entities that can be used to execute an entity aware\ntask. For example, an entity Objective, an entity Keep In Zone, etc."},"retryStrategy":{"$ref":"#/components/schemas/RetryStrategy","description":"Any retry strategy for task execution or update."},"deliveryConstraints":{"$ref":"#/components/schemas/DeliveryConstraints","description":"Describes scheduling constraints for Lattice when delivering the task to the agent."},"executionConstraints":{"$ref":"#/components/schemas/ExecutionConstraints","description":"Describes scheduling constraints for the agent executing the task after it has been delivered."}},"title":"TaskCreation"},"TaskVersion":{"type":"object","properties":{"taskId":{"type":"string","description":"The unique identifier for this task, used to distinguish it from all other tasks in the system."},"definitionVersion":{"type":"integer","format":"uint","description":"Counter that increments on changes to the task definition.\n Unset (0) initially, starts at 1 on creation, and increments with each update to task fields."},"statusVersion":{"type":"integer","format":"uint","description":"Counter that increments on changes to TaskStatus.\n Unset (0) initially, starts at 1 on creation, and increments with each status update."}},"description":"Versioning information for a task.\n\n TaskVersion provides a unique identifier for each task, along with separate version counters\n for tracking changes to the task's definition and its status. This versioning system enables\n optimistic concurrency control, ensuring that updates from multiple sources don't conflict.","title":"TaskVersion"},"TaskStatusStatus":{"type":"string","enum":["STATUS_INVALID","STATUS_CREATED","STATUS_SCHEDULED_IN_MANAGER","STATUS_SENT","STATUS_MACHINE_RECEIPT","STATUS_ACK","STATUS_WILCO","STATUS_EXECUTING","STATUS_WAITING_FOR_UPDATE","STATUS_DONE_OK","STATUS_DONE_NOT_OK","STATUS_REPLACED","STATUS_CANCEL_REQUESTED","STATUS_COMPLETE_REQUESTED","STATUS_VERSION_REJECTED"],"description":"Status of the task.","title":"TaskStatusStatus"},"TaskErrorCode":{"type":"string","enum":["ERROR_CODE_INVALID","ERROR_CODE_CANCELLED","ERROR_CODE_REJECTED","ERROR_CODE_TIMEOUT","ERROR_CODE_FAILED"],"description":"Error code for task error.","title":"TaskErrorCode"},"TaskError":{"type":"object","properties":{"code":{"$ref":"#/components/schemas/TaskErrorCode","description":"Error code for task error."},"message":{"type":"string","description":"Descriptive human-readable string regarding this error."},"errorDetails":{"$ref":"#/components/schemas/GoogleProtobufAny","description":"Any additional details regarding this error."}},"description":"Error information associated with a task.\n\n TaskError contains structured error details, including an error code, a human-readable\n message, and optional extended error information. This structure is used when a task\n encounters problems during its lifecycle.","title":"TaskError"},"Allocation":{"type":"object","properties":{"activeAgents":{"type":"array","items":{"$ref":"#/components/schemas/Agent"},"description":"Agents actively being utilized in a task."}},"description":"Allocation contains a list of agents allocated to a task.","title":"Allocation"},"TaskStatus":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/TaskStatusStatus","description":"Status of the task."},"taskError":{"$ref":"#/components/schemas/TaskError","description":"Any errors associated with the task."},"progress":{"$ref":"#/components/schemas/GoogleProtobufAny","description":"Any incremental progress on the task, should be from the tasks/v*/progress folder."},"result":{"$ref":"#/components/schemas/GoogleProtobufAny","description":"Any final result of the task, should be from tasks/v*/result folder."},"startTime":{"type":"string","format":"date-time","description":"Time the task began execution, may not be known even for executing Tasks."},"estimate":{"$ref":"#/components/schemas/GoogleProtobufAny","description":"Any estimate for how the task will progress, should be from tasks/v*/estimates folder."},"allocation":{"$ref":"#/components/schemas/Allocation","description":"Any allocated agents of the task."},"lastUpdateTime":{"type":"string","format":"date-time","description":"Last time the task status changed.\n Used to guard against out of order updates."},"endTime":{"type":"string","format":"date-time","description":"Time the Task finished execution."}},"description":"Comprehensive status information for a task at a given point in time.\n\n TaskStatus contains all status-related information for a task, including its current state,\n any error conditions, progress details, results, timing information, and resource allocations.\n This object evolves throughout a task's lifecycle, providing increasing detail as the task\n progresses from creation through execution to completion.","title":"TaskStatus"},"Replication":{"type":"object","properties":{"staleTime":{"type":"string","format":"date-time","description":"The time by which this task should be assumed to be stale."}},"description":"Any metadata associated with the replication of a task.","title":"Replication"},"Owner":{"type":"object","properties":{"entityId":{"type":"string","description":"Entity ID of the owner."}},"description":"Owner designates the entity responsible for writes of task data.","title":"Owner"},"DeliveryStateStatus":{"type":"string","enum":["DELIVERY_STATUS_INVALID","DELIVERY_STATUS_DELIVERED","DELIVERY_STATUS_PENDING_EXECUTE","DELIVERY_STATUS_PENDING_CANCEL","DELIVERY_STATUS_PENDING_COMPLETE"],"description":"The current status of the delivery.","title":"DeliveryStateStatus"},"DeliveryErrorCode":{"type":"string","enum":["DELIVERY_ERROR_CODE_INVALID","DELIVERY_ERROR_CODE_UNAVAILABLE","DELIVERY_ERROR_CODE_TIMEOUT","DELIVERY_ERROR_CODE_REJECTED","DELIVERY_ERROR_CODE_NOT_ACKNOWLEDGED"],"description":"Error code for Delivery error.","title":"DeliveryErrorCode"},"DeliveryError":{"type":"object","properties":{"code":{"$ref":"#/components/schemas/DeliveryErrorCode","description":"Error code for Delivery error."},"message":{"type":"string","description":"Descriptive human-readable string regarding this delivery error."}},"description":"DeliveryError contains an error code and message associated with task delivery.","title":"DeliveryError"},"DeliveryState":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/DeliveryStateStatus","description":"The current status of the delivery."},"error":{"$ref":"#/components/schemas/DeliveryError","description":"Errors associated with the delivery, if any."},"deliveryConstraints":{"$ref":"#/components/schemas/DeliveryConstraints","description":"Optional scheduling constraints for Lattice delivery of the task."}},"description":"Defines the current state of a task's delivery.","title":"DeliveryState"},"Task":{"type":"object","properties":{"version":{"$ref":"#/components/schemas/TaskVersion","description":"Version of this task."},"displayName":{"type":"string","description":"DEPRECATED: Human readable display name for this task, should be short (<100 chars)."},"specification":{"$ref":"#/components/schemas/GoogleProtobufAny","description":"The path for the Protobuf task definition, and the complete task data."},"createdBy":{"$ref":"#/components/schemas/Principal","description":"Records who created this task. This field will not change after the task has been created."},"lastUpdatedBy":{"$ref":"#/components/schemas/Principal","description":"Records who updated this task last."},"lastUpdateTime":{"type":"string","format":"date-time","description":"Records the time of last update."},"status":{"$ref":"#/components/schemas/TaskStatus","description":"The status of this task."},"scheduledTime":{"type":"string","format":"date-time","description":"If the task has been scheduled to execute, what time it should execute at."},"relations":{"$ref":"#/components/schemas/Relations","description":"Any related Tasks associated with this, typically includes an assignee for this task and/or a parent."},"description":{"type":"string","description":"Longer, free form human readable description of this task"},"isExecutedElsewhere":{"type":"boolean","description":"If set, execution of this task is managed elsewhere, not by Task Manager.\n In other words, task manager will not attempt to update the assigned agent with execution instructions."},"createTime":{"type":"string","format":"date-time","description":"Time of task creation."},"replication":{"$ref":"#/components/schemas/Replication","description":"If populated, designates this to be a replicated task."},"initialEntities":{"type":"array","items":{"$ref":"#/components/schemas/TaskEntity"},"description":"If populated, indicates an initial set of entities that can be used to execute an entity aware task\n For example, an entity Objective, an entity Keep In Zone, etc.\n These will not be updated during execution. If a taskable agent needs continuous updates on the entities from the\n COP, can call entity-manager, or use an AlternateId escape hatch."},"owner":{"$ref":"#/components/schemas/Owner","description":"The networked owner of this task. It is used to ensure that linear writes occur on the node responsible\n for replication of task data to other nodes running Task Manager."},"retryStrategy":{"$ref":"#/components/schemas/RetryStrategy","description":"Sets an optional try strategy for tasks. Use this option to control how Lattice attempts to retry delivery of tasks to assets with intermittent access or network connectivity to your environment."},"deliveryState":{"$ref":"#/components/schemas/DeliveryState","description":"The current delivery state of a task."},"executionConstraints":{"$ref":"#/components/schemas/ExecutionConstraints","description":"Any execution-related scheduling constraints for the agent after task delivery."}},"description":"A task represents a structured unit of work that can be assigned to an agent for execution.\n\n Tasks are the fundamental building blocks of work assignment in the Lattice.\n Each task has a unique identifier, a specification defining what needs to be done,\n status information tracking its progress, and various metadata facilitating its lifecycle management.\n\n Tasks can be related to each other, through parent-child relationships, assigned to\n specific agents, and tracked through a well-defined state machine from creation to completion.\n They support rich status reporting, including progress updates, error handling, and results.","title":"Task"},"TaskStatusUpdate":{"type":"object","properties":{"statusVersion":{"type":"integer","description":"The status version of the task to update. This version number increments to indicate the task's \ncurrent stage in its status lifecycle. Specifically, whenever a task's status updates, the status \nversion increments by one. Any status updates received with a lower status version number than what \nis known are considered stale and ignored."},"newStatus":{"$ref":"#/components/schemas/TaskStatus","description":"The new status of the task."},"author":{"$ref":"#/components/schemas/Principal"}},"description":"Request to update the status of an existing Task.\n\nThis message contains a status update that includes the task's version information\nand the new status details. The Tasks API uses optimistic concurrency control\nto handle updates - the status_version in the request must match the current version\nin the system, otherwise the update will be rejected. Each successful update\nincrements the task's status_version.","title":"TaskStatusUpdate"},"TaskCancellation":{"type":"object","properties":{"author":{"$ref":"#/components/schemas/Principal","description":"Who or what is requesting to cancel this task."}},"description":"Request to cancel an existing task.\n\nThis message initiates cancellation for the specified task.","title":"TaskCancellation"},"TaskQueryStatusFilterStatus":{"type":"string","enum":["STATUS_INVALID","STATUS_CREATED","STATUS_SCHEDULED_IN_MANAGER","STATUS_SENT","STATUS_MACHINE_RECEIPT","STATUS_ACK","STATUS_WILCO","STATUS_EXECUTING","STATUS_WAITING_FOR_UPDATE","STATUS_DONE_OK","STATUS_DONE_NOT_OK","STATUS_REPLACED","STATUS_CANCEL_REQUESTED","STATUS_COMPLETE_REQUESTED","STATUS_VERSION_REJECTED"],"description":"Status of the task to filter by, inclusive.","title":"TaskQueryStatusFilterStatus"},"TaskQueryStatusFilter":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/TaskQueryStatusFilterStatus","description":"Status of the task to filter by, inclusive."}},"title":"TaskQueryStatusFilter"},"TaskQueryUpdateTimeRange":{"type":"object","properties":{"startTime":{"$ref":"#/components/schemas/Timestamp","description":"If provided, returns tasks only updated after this time."},"endTime":{"$ref":"#/components/schemas/Timestamp","description":"If provided, returns tasks only updated before this time."}},"description":"If provided, only provides tasks updated within the time range.","title":"TaskQueryUpdateTimeRange"},"TaskQuery":{"type":"object","properties":{"pageToken":{"type":"string","description":"If set, returns results starting from the given pageToken."},"parentTaskId":{"type":"string","description":"If present matches tasks with this parent task ID.\nThis is mutually exclusive with all other query parameters, for example, either provide parent task ID, or\nany of the remaining parameters, but not both."},"statusFilter":{"$ref":"#/components/schemas/TaskQueryStatusFilter"},"updateTimeRange":{"$ref":"#/components/schemas/TaskQueryUpdateTimeRange","description":"If provided, only provides tasks updated within the time range."}},"description":"Request to search for Tasks based on various filtering criteria.\n\nThis message allows filtering and retrieving tasks that match specific conditions:\nstatus, update time, and parent-child relationships.\nResults are paginated, with the ability to request subsequent pages using a `page_token`.\n\nBy default, Lattice returns the latest version of all tasks.\nYou can combine filters to narrow results, but note that `parent_task_id` filtering\nis mutually exclusive with other filtering options.","title":"TaskQuery"},"TaskQueryResults":{"type":"object","properties":{"tasks":{"type":"array","items":{"$ref":"#/components/schemas/Task"}},"nextPageToken":{"type":"string","description":"Incomplete results can be detected by a non-empty nextPageToken field in the query results. In order to retrieve \nthe next page, perform the exact same request as previously and append a pageToken field with the value of \nnextPageToken from the previous page. A new nextPageToken is provided on the following pages until all the \nresults are retrieved."}},"description":"Response containing tasks that match the query criteria.\n\nThis message returns a list of Task objects that satisfy the filter conditions\nspecified in the request. When there are more matching tasks than can be returned\nin a single response, a page_token is provided to retrieve the next batch in\na subsequent request. An empty tasks list with no page_token indicates that\nthere are no more matching tasks.","title":"TaskQueryResults"},"TaskStreamRequestTaskType0":{"type":"object","properties":{"taskTypeUrls":{"type":"array","items":{"type":"string"},"description":"List of exact task type URLs to match."}},"required":["taskTypeUrls"],"title":"TaskStreamRequestTaskType0"},"TaskStreamRequestTaskType1":{"type":"object","properties":{"taskTypePrefix":{"type":"string","description":"Prefix string to match task types. Any task with a type that starts with this prefix will be included."}},"required":["taskTypePrefix"],"title":"TaskStreamRequestTaskType1"},"TaskStreamRequestTaskType":{"oneOf":[{"$ref":"#/components/schemas/TaskStreamRequestTaskType0"},{"$ref":"#/components/schemas/TaskStreamRequestTaskType1"}],"description":"Optional filter that only returns tasks with specific types. If not provided, all task types will be streamed.","title":"TaskStreamRequestTaskType"},"TaskStreamRequestStatusFilterStatusesItems":{"type":"string","enum":["STATUS_INVALID","STATUS_CREATED","STATUS_SCHEDULED_IN_MANAGER","STATUS_SENT","STATUS_MACHINE_RECEIPT","STATUS_ACK","STATUS_WILCO","STATUS_EXECUTING","STATUS_WAITING_FOR_UPDATE","STATUS_DONE_OK","STATUS_DONE_NOT_OK","STATUS_REPLACED","STATUS_CANCEL_REQUESTED","STATUS_COMPLETE_REQUESTED","STATUS_VERSION_REJECTED"],"title":"TaskStreamRequestStatusFilterStatusesItems"},"TaskStreamRequestStatusFilterFilterType":{"type":"string","enum":["FILTER_TYPE_INVALID","FILTER_TYPE_INCLUSIVE","FILTER_TYPE_EXCLUSIVE"],"description":"The type of filter to apply.","title":"TaskStreamRequestStatusFilterFilterType"},"TaskStreamRequestStatusFilter":{"type":"object","properties":{"statuses":{"type":"array","items":{"$ref":"#/components/schemas/TaskStreamRequestStatusFilterStatusesItems"},"description":"The statuses to filter by."},"filterType":{"$ref":"#/components/schemas/TaskStreamRequestStatusFilterFilterType","description":"The type of filter to apply."}},"description":"A filter for task statuses (inclusive or exclusive).","title":"TaskStreamRequestStatusFilter"},"TaskStreamRequest":{"type":"object","properties":{"heartbeatIntervalMs":{"type":"integer","description":"The time interval, in milliseconds, that determines the frequency at which to send heartbeat events. Defaults to 30000 (30 seconds)."},"rateLimit":{"type":"integer","default":0,"description":"The time interval, in milliseconds, after an update for a given task before another one will be sent for the same task.\nIf set, value must be >= 250."},"excludePreexistingTasks":{"type":"boolean","default":false,"description":"Optional flag to only include tasks created or updated after the stream is initiated, and not any previous preexisting tasks.\nIf unset or false, the stream will include any new tasks and task updates, as well as all preexisting tasks."},"taskType":{"$ref":"#/components/schemas/TaskStreamRequestTaskType","description":"Optional filter that only returns tasks with specific types. If not provided, all task types will be streamed."},"updateStartTime":{"$ref":"#/components/schemas/Timestamp","description":"If provided, returns tasks which have been updated since the given time."},"parentTaskId":{"type":"string","description":"A filter for tasks with a specific parent task ID.\nNote: This filter is mutually exclusive with all other filter fields (`updateStartTime`, `assignee`, `statusFilter`, `taskType`).\nEither provide `parentTaskId` or any combination of the other filters, but not both."},"assignee":{"$ref":"#/components/schemas/Principal","description":"A filter for tasks assigned to a specific principal."},"statusFilter":{"$ref":"#/components/schemas/TaskStreamRequestStatusFilter","description":"A filter for task statuses (inclusive or exclusive)."}},"description":"The request to establish a streaming connection using Server-Sent Events (SSE) for receiving task events.\n\nThis message defines the filtering criteria for which tasks the client wants to receive\nevents for, along with rate limiting and heartbeat configurations.","title":"TaskStreamRequest"},"StreamHeartbeatEvent":{"type":"string","enum":["heartbeat"],"title":"StreamHeartbeatEvent"},"TaskEventDataTaskEventEventType":{"type":"string","enum":["EVENT_TYPE_INVALID","EVENT_TYPE_CREATED","EVENT_TYPE_UPDATE","EVENT_TYPE_PREEXISTING"],"description":"The type of event that occurred for this task.","title":"TaskEventDataTaskEventEventType"},"TaskEventDataTaskEvent":{"type":"object","properties":{"eventType":{"$ref":"#/components/schemas/TaskEventDataTaskEventEventType","description":"The type of event that occurred for this task."},"task":{"$ref":"#/components/schemas/Task","description":"The task associated with this event."}},"description":"The task event that occurred.","title":"TaskEventDataTaskEvent"},"TaskStreamEventEvent":{"type":"string","enum":["task_event"],"title":"TaskStreamEventEvent"},"Tasks_streamTasks_Response_200":{"oneOf":[{"type":"object","properties":{"event":{"$ref":"#/components/schemas/StreamHeartbeatEvent"},"timestamp":{"$ref":"#/components/schemas/Timestamp","description":"The timestamp at which the heartbeat message was sent."}},"required":["event"],"description":"heartbeat variant"},{"type":"object","properties":{"event":{"$ref":"#/components/schemas/TaskStreamEventEvent"},"taskEvent":{"$ref":"#/components/schemas/TaskEventDataTaskEvent","description":"The task event that occurred."}},"required":["event"],"description":"task_event variant"}],"discriminator":{"propertyName":"event"},"description":"The stream event response.","title":"Tasks_streamTasks_Response_200"},"EntityIdsSelector":{"type":"object","properties":{"entityIds":{"type":"array","items":{"type":"string"},"description":"Receive tasks as an assignee for one or more of the supplied entity ids."}},"title":"EntityIdsSelector"},"AgentListener":{"type":"object","properties":{"agentSelector":{"$ref":"#/components/schemas/EntityIdsSelector","description":"Selector criteria to determine which Agent Tasks the agent receives"}},"description":"Request to establish a streaming connection for receiving Tasks as an agent.\n\nThis message defines the criteria for which tasks the agent wants to receive,\ntypically based on the agent's identity (through entity_ids). When an agent\nestablishes this connection, the Tasks API will stream relevant tasks\nto that agent for execution, cancellation, or completion.","title":"AgentListener"},"ExecuteRequest":{"type":"object","properties":{"task":{"$ref":"#/components/schemas/Task","description":"The task to execute."}},"description":"The request to execute a task.\n Contains the unique ID of the task to execute.","title":"ExecuteRequest"},"CancelRequest":{"type":"object","properties":{"taskId":{"type":"string","description":"The unique task ID of the task to cancel."},"assignee":{"$ref":"#/components/schemas/Principal","description":"The assignee of the Task. Useful for agent routing where an endpoint owns multiple agents,\n especially onBehalfOf assignees."},"author":{"$ref":"#/components/schemas/Principal","description":"The principal that requested to cancel the task."}},"description":"The request to cancel a task.\n Contains the task, and the assignee of the request to cancel the task.","title":"CancelRequest"},"CompleteRequest":{"type":"object","properties":{"taskId":{"type":"string","description":"ID of the task to complete."}},"description":"The request to complete a task.\n Contains the unique ID of the task to complete.","title":"CompleteRequest"},"AgentRequest":{"type":"object","properties":{"executeRequest":{"$ref":"#/components/schemas/ExecuteRequest"},"cancelRequest":{"$ref":"#/components/schemas/CancelRequest"},"completeRequest":{"$ref":"#/components/schemas/CompleteRequest"}},"description":"Response streamed to an agent containing task actions to perform.\n\nThis message is streamed from Tasks API to agents and contains one of three\npossible requests: execute a task, cancel a task, or complete a task. The agent\nshould process these requests according to its capabilities and report status\nupdates back to Tasks API using the UpdateStatus endpoint.\n\nMultiple responses may be sent for different tasks, and the agent should maintain\nthe connection to receive ongoing task requests. The connection may also be used\nfor heartbeat messages to ensure the agent is still responsive.","title":"AgentRequest"},"AgentStreamRequest":{"type":"object","properties":{"agentSelector":{"$ref":"#/components/schemas/EntityIdsSelector","description":"The selector criteria to determine which tasks the agent receives."},"heartbeatIntervalMs":{"type":"integer","description":"The time interval, in milliseconds, that determines the frequency at which to send heartbeat events. Defaults to 30000 (30 seconds)."}},"description":"The request to establish a streaming connection using Server-Sent Events (SSE) for receiving Tasks as an agent.\n\nThis message defines the criteria for which tasks the agent wants to receive,\ntypically specified using the agent's `entityId`. When an agent\nestablishes this connection, the Lattice will stream relevant tasks\nto that agent to execute, cancel, or complete.","title":"AgentStreamRequest"},"AgentStreamEventEvent":{"type":"string","enum":["agent_request"],"title":"AgentStreamEventEvent"},"Tasks_streamAsAgent_Response_200":{"oneOf":[{"type":"object","properties":{"event":{"$ref":"#/components/schemas/StreamHeartbeatEvent"},"timestamp":{"$ref":"#/components/schemas/Timestamp","description":"The timestamp at which the heartbeat message was sent."}},"required":["event"],"description":"heartbeat variant"},{"type":"object","properties":{"event":{"$ref":"#/components/schemas/AgentStreamEventEvent"},"executeRequest":{"$ref":"#/components/schemas/ExecuteRequest"},"cancelRequest":{"$ref":"#/components/schemas/CancelRequest"},"completeRequest":{"$ref":"#/components/schemas/CompleteRequest"}},"required":["event"],"description":"agent_request variant"}],"discriminator":{"propertyName":"event"},"description":"The stream event response.","title":"Tasks_streamAsAgent_Response_200"},"ManualControlStreamRequest":{"type":"object","properties":{"heartbeatIntervalMs":{"type":"integer","description":"The time interval, in milliseconds, that determines the frequency at which to send heartbeat events. Defaults to 30000 (30 seconds)."}},"description":"The request to establish a streaming connection using server-sent events (SSE) for receiving\nmanual control frames for a specific task.","title":"ManualControlStreamRequest"},"ManualControlFrameEventEvent":{"type":"string","enum":["manual_control_frame"],"title":"ManualControlFrameEventEvent"},"Tasks_streamManualControlFrames_Response_200":{"oneOf":[{"type":"object","properties":{"event":{"$ref":"#/components/schemas/StreamHeartbeatEvent"},"timestamp":{"$ref":"#/components/schemas/Timestamp","description":"The timestamp at which the heartbeat message was sent."}},"required":["event"],"description":"heartbeat variant"},{"type":"object","properties":{"event":{"$ref":"#/components/schemas/ManualControlFrameEventEvent"},"taskId":{"type":"string","description":"The ID of the manual control task this frame belongs to."},"epochMicros":{"type":"string","description":"Unix timestamp in microseconds identifying the control session.\n Increases each time a client starts a new control session for this task.\n Agents should ignore frames with a lower epoch to handle stale sessions\n or operator handoffs."},"sequence":{"type":"string","description":"The sequence number of this frame within a control session, incremented for each frame.\n Agents can use this to detect out-of-order delivery within the same epoch."},"creationTime":{"type":"string","format":"date-time","description":"The time at which this frame was created.\n Agents can use this to detect stale frame data."},"specification":{"$ref":"#/components/schemas/GoogleProtobufAny","description":"The control instructions for this frame, passed through from the client.\n The format of each task is specific to the task, and not visible to Lattice."}},"required":["event"],"description":"manual_control_frame variant"}],"discriminator":{"propertyName":"event"},"description":"The stream event response.","title":"Tasks_streamManualControlFrames_Response_200"},"ManualControlFrameRequest":{"type":"object","properties":{"sessionEpochMicros":{"type":"string","description":"Unix timestamp in microseconds identifying the control session. The client generates this\nvalue when it begins a control session, and includes the same value in every request for\nthat session. Higher values replace previous sessions. Lower values are rejected as stale."},"sequence":{"type":"string","description":"The sequence number of this frame within the current session. The client must increase it\nwith each frame so that agents can detect out-of-order delivery. Reset it to 1 when starting a\nnew session."},"specification":{"$ref":"#/components/schemas/GoogleProtobufAny","description":"The control instructions for this frame. The format is specific to the task, and is passed\nthrough to the agent without being inspected by Lattice."}},"required":["sessionEpochMicros"],"description":"The request to send a single manual control frame for a task.\n\nThe client manages the control session using `sessionEpochMicros` and `sequence`.\nA higher epoch replaces the current session, an equal epoch continues it, and a lower\nepoch is rejected as stale.","title":"ManualControlFrameRequest"},"ManualControlFrameResponse":{"type":"object","properties":{},"description":"The response returned after Lattice accepts a manual control frame.","title":"ManualControlFrameResponse"},"ContentIdentifier":{"type":"object","properties":{"path":{"type":"string","description":"A valid path must not contain the following:\n- Spaces or Tabs\n- Special characters other than underscore (_), dash (-), period (.) and slash (/)\n- Non-ASCII characters such as accents or symbols\nPaths must not start with a leading space.\n"},"checksum":{"type":"string","description":"The SHA-256 checksum of this object."}},"required":["path","checksum"],"title":"ContentIdentifier"},"PathMetadata":{"type":"object","properties":{"content_identifier":{"$ref":"#/components/schemas/ContentIdentifier"},"size_bytes":{"type":"integer","format":"uint64"},"last_updated_at":{"type":"string","format":"date-time","description":"When this object arrived on the node that holds it, according to that node's clock. Because an object is never modified in place, this is effectively the time the object was created on that node.\n\nThe value is local to the node holding the object and may differ when the same object is held on multiple nodes. It is not propagated from the node where the object originated.\n"},"expiry_time":{"type":"string","format":"date-time"}},"required":["content_identifier","size_bytes","last_updated_at"],"title":"PathMetadata"},"ListResponse":{"type":"object","properties":{"path_metadatas":{"type":"array","items":{"$ref":"#/components/schemas/PathMetadata"}},"next_page_token":{"type":"string"}},"required":["path_metadatas"],"title":"ListResponse"},"ApiV1ObjectsObjectPathGetParametersAcceptEncoding":{"type":"string","enum":["identity","zstd"],"title":"ApiV1ObjectsObjectPathGetParametersAcceptEncoding"},"ApiV1ObjectsObjectPathPostParametersDistributionMode":{"type":"string","enum":["force"],"title":"ApiV1ObjectsObjectPathPostParametersDistributionMode"},"Objects_getObjectMetadata_Response_200":{"type":"object","properties":{},"description":"Empty response body","title":"Objects_getObjectMetadata_Response_200"},"oauth_getToken_Response_200":{"type":"object","properties":{"access_token":{"type":"string","description":"The access token"},"token_type":{"type":"string","description":"The type of token (typically \"Bearer\")"},"expires_in":{"type":"integer","description":"Lifetime of the access token in seconds"},"refresh_expires_in":{"type":"integer","description":"Lifetime of the refresh token"},"not-before-policy":{"type":"integer","description":"Enforce that a token cannot be used before a specific unixtime"},"scope":{"type":"string","description":"The scope of the access token"}},"required":["access_token","token_type"],"title":"oauth_getToken_Response_200"},"GetTokenRequestBadRequestError":{"type":"object","properties":{"error":{"type":"string"},"error_description":{"type":"string"}},"required":["error"],"title":"GetTokenRequestBadRequestError"},"GetTokenRequestUnauthorizedError":{"type":"object","properties":{"error":{"type":"string"},"error_description":{"type":"string"}},"required":["error"],"title":"GetTokenRequestUnauthorizedError"},"RtspEgress":{"type":"object","properties":{"url":{"type":"string","description":"The RTSP URL the downstream consumer should pull from."}},"description":"RTSP egress connection details.","title":"RtspEgress"},"SrtEgress":{"type":"object","properties":{"url":{"type":"string","description":"The URL on which Lattice listens. The downstream consumer pulls from this URL."},"sessionId":{"type":"string","description":"Unique session identifier the consumer must supply on the SRT connection."}},"description":"SRT egress connection details.","title":"SrtEgress"},"EgressStream":{"type":"object","properties":{"egressId":{"type":"string","description":"Service-generated identifier for the egress stream."},"ingressId":{"type":"string","description":"Identifier of the ingress stream this egress stream publishes."},"rtsp":{"$ref":"#/components/schemas/RtspEgress"},"srt":{"$ref":"#/components/schemas/SrtEgress"}},"description":"An egress stream publishes a single stream to a downstream consumer over a chosen\n transport.","title":"EgressStream"},"ListEgressStreamsResponse":{"type":"object","properties":{"egressStreams":{"type":"array","items":{"$ref":"#/components/schemas/EgressStream"},"description":"The egress streams on this page. Up to `pageSize` entries\n (defaults to 50, capped at 100). Ordered by egress stream create time."},"nextPageToken":{"type":"string","description":"Pass this back as `pageToken` to retrieve the next page.\n Empty when there are no more pages."}},"title":"ListEgressStreamsResponse"},"google.protobuf.Any":{"type":"object","properties":{"@type":{"type":"string","description":"The type of the serialized message."}},"description":"Contains an arbitrary serialized message along with a @type that describes the type of the serialized message.","title":"google.protobuf.Any"},"google.rpc.Status":{"type":"object","properties":{"code":{"type":"integer","description":"The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code]."},"message":{"type":"string","description":"A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client."},"details":{"type":"array","items":{"$ref":"#/components/schemas/google.protobuf.Any"},"description":"A list of messages that carry the error details.  There is a common set of message types for APIs to use."}},"description":"The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).","title":"google.rpc.Status"},"RtspSettings":{"type":"object","properties":{"url":{"type":"string","description":"The upstream RTSP URL the service should pull frames from. Must use\n the `rtsp://` scheme."}},"description":"Settings for RTSP.","title":"RtspSettings"},"SrtSettings":{"type":"object","properties":{"passphrase":{"type":"string","description":"Optional passphrase for the stream, set by the user, that applies AES encryption."}},"description":"The Lattice video service supports SRT protocol for push operations (ingress)\n and pull operations (egress).\n\n When configuring SRT for ingress, CreateIngressStreamResponse will\n return to the user a url to push to which contains a unique `sessionId` to use\n on the connection. If supplied, passphrase will be applied on incoming\n connections.\n\n When configuring SRT for egress, CreateEgressStreamResponse will\n return to the user a url from which to pull a stream. Use the supplied\n sessionId and passphrase in your StreamId if applicable.\n See the SRT documentation on Access Control for more information.","title":"SrtSettings"},"CreateEgressStreamRequest":{"type":"object","properties":{"ingressId":{"type":"string","description":"Identifier of the live ingress stream to re-publish as an egress stream."},"rtsp":{"$ref":"#/components/schemas/RtspSettings"},"srt":{"$ref":"#/components/schemas/SrtSettings"}},"title":"CreateEgressStreamRequest"},"CreateEgressStreamResponse":{"type":"object","properties":{"egressId":{"type":"string","description":"Service-generated identifier for the new egress stream. Use it for subsequent\n `GetEgressStream` and `DeleteEgressStream` calls."},"rtsp":{"$ref":"#/components/schemas/RtspEgress"},"srt":{"$ref":"#/components/schemas/SrtEgress"}},"title":"CreateEgressStreamResponse"},"GetEgressStreamResponse":{"type":"object","properties":{"egressStream":{"$ref":"#/components/schemas/EgressStream","description":"The egress stream corresponding to the requested `egressId`."}},"title":"GetEgressStreamResponse"},"DeleteEgressStreamResponse":{"type":"object","properties":{},"title":"DeleteEgressStreamResponse"},"IngressStreamStatus":{"type":"string","enum":["STREAM_STATUS_UNSPECIFIED","STREAM_STATUS_LIVE","STREAM_STATUS_INACTIVE","STREAM_STATUS_UNAVAILABLE","STREAM_STATUS_ARCHIVED"],"description":"Current lifecycle status of the stream. See StreamStatus for the full state machine.","title":"IngressStreamStatus"},"MpegTsIngress":{"type":"object","properties":{"url":{"type":"string","description":"The URL that the producer should push the MPEG-TS stream to."}},"description":"MPEG-TS ingress connection details.\n\n MPEG-TS ingress is supported only at the edge, in closed networks; in a cloud\n environment reached over the public internet it may be disabled per deployment. These\n details are populated only when a stream was successfully created with `mpegTs`. An\n MPEG-TS stream created at the edge can still be listed and inspected on the\n IngressStream read model even when cloud ingress is disabled.","title":"MpegTsIngress"},"RtspIngress":{"type":"object","properties":{"url":{"type":"string","description":"The upstream RTSP URL. Lattice will pull from the supplied URL.\n The URL must be prefixed with `rtsp://`."}},"description":"RTSP ingress connection details.","title":"RtspIngress"},"SrtIngress":{"type":"object","properties":{"url":{"type":"string","description":"The URL the producer should push the SRT stream to."},"sessionId":{"type":"string","description":"Unique session identifier the producer must include on the SRT connection. See\n SrtSettings for context."}},"description":"SRT ingress connection details. Returned to the producer so it knows where to\n push the stream.","title":"SrtIngress"},"IngressStream":{"type":"object","properties":{"ingressId":{"type":"string","description":"Unique identifier for the ingress stream."},"title":{"type":"string","description":"Human-readable title supplied at creation time."},"status":{"$ref":"#/components/schemas/IngressStreamStatus","description":"Current lifecycle status of the stream. See StreamStatus for the full state machine."},"mpegTs":{"$ref":"#/components/schemas/MpegTsIngress"},"rtsp":{"$ref":"#/components/schemas/RtspIngress"},"srt":{"$ref":"#/components/schemas/SrtIngress"},"createdAt":{"type":"string","format":"date-time","description":"Wall-clock time the stream was created."},"updatedAt":{"type":"string","format":"date-time","description":"Wall-clock time the stream's status (STREAM_STATUS) was changed. The status can change based on the activity or\n the deletion of the stream."},"egressIds":{"type":"array","items":{"type":"string"},"description":"Identifiers of the egress streams currently consuming this ingress stream."}},"description":"An ingress stream represents a single source feeding frames into Lattice.\n Ingress streams are replicated across Lattice and visible anywhere in the deployment.","title":"IngressStream"},"ListIngressStreamsResponse":{"type":"object","properties":{"ingressStreams":{"type":"array","items":{"$ref":"#/components/schemas/IngressStream"},"description":"The ingress streams on this page. Up to `pageSize` entries\n (defaults to 50, capped at 100). Ordered by ingress stream create time."},"nextPageToken":{"type":"string","description":"Pass this back as `pageToken` to retrieve the next page.\n Empty when there are no more pages."}},"title":"ListIngressStreamsResponse"},"MpegTsSettings":{"type":"object","properties":{},"description":"Settings for MPEG-TS ingress. Empty by default, the service allocates a UDP port\n from a service-wide pool and returns the push URL in CreateIngressStreamResponse.\n\n MPEG-TS ingress is supported only at the edge, in closed networks. When Lattice runs\n in a cloud environment reached over the public internet, MPEG-TS ingress may be\n disabled per deployment. When it is disabled, a CreateIngressStream request that\n selects `mpegTs` is rejected with a gRPC error rather than accepted, so callers should\n be prepared to fall back to RTSP or SRT. An MPEG-TS stream created at the edge can\n still be listed and inspected on the IngressStream read model even when cloud ingress\n is disabled.","title":"MpegTsSettings"},"CreateIngressStreamRequest":{"type":"object","properties":{"ingressId":{"type":"string","description":"Caller-supplied identifier for the new stream. If omitted, the service generates a GUID.\n If supplied, a consistent and recognizable pattern is recommended. A common convention\n is a group prefix (organization, platform, or asset) followed by a specific identifier\n using underscore or dot as a separator, for example, `drone_1`, `vessel_2`, or\n `teamalpha.drone1`.\n\n When supplied, an ingressId must be between 4 and 36 characters long and use only\n printable ASCII characters with no spaces; the 36-character ceiling leaves room for a\n full GUID. A value outside that length range, or one containing spaces, control\n characters, or non-ASCII characters, is rejected, as is an ingressId that another\n ingress stream is already using."},"title":{"type":"string","description":"Human-readable title for the stream. A title is required: surrounding whitespace is\n trimmed before it is stored, and what remains must be non-empty, valid UTF-8, and no\n longer than 64 characters. Otherwise the request is rejected."},"mpegTs":{"$ref":"#/components/schemas/MpegTsSettings","description":"Receive an MPEG-TS push from the producer. The service allocates a UDP port and\n returns the URL the producer must push to in CreateIngressStreamResponse.\n\n MPEG-TS ingress is supported only at the edge, in closed networks. When Lattice\n runs in a cloud environment reached over the public internet, MPEG-TS ingress may\n be disabled per deployment. When it is disabled, a request that selects `mpegTs` is\n rejected with a gRPC error rather than accepted, so callers should be prepared to\n fall back to RTSP or SRT. An MPEG-TS stream created at the edge can still be listed\n and inspected on the IngressStream read model even when cloud ingress is disabled."},"rtsp":{"$ref":"#/components/schemas/RtspSettings","description":"Pull from a caller-supplied RTSP URL."},"srt":{"$ref":"#/components/schemas/SrtSettings","description":"Receive an SRT push from the producer. The service returns a URL and sessionId\n in CreateIngressStreamResponse."}},"title":"CreateIngressStreamRequest"},"CreateIngressStreamResponse":{"type":"object","properties":{"ingressId":{"type":"string","description":"Identifier of the newly created ingress stream. Echoes the caller-supplied\n `ingressId` if one was provided, otherwise a service-generated GUID."},"mpegTs":{"$ref":"#/components/schemas/MpegTsIngress","description":"Connection details for an MPEG-TS push. Only returned when the request selected\n `mpegTs` and MPEG-TS ingress is enabled for the deployment. MPEG-TS ingress is\n supported only at the edge, in closed networks; in a cloud environment reached over\n the public internet it may be disabled per deployment, in which case the create\n request is rejected and this field is never populated."},"srt":{"$ref":"#/components/schemas/SrtIngress"}},"title":"CreateIngressStreamResponse"},"GetIngressStreamResponse":{"type":"object","properties":{"ingressStream":{"$ref":"#/components/schemas/IngressStream","description":"The ingress stream corresponding to the requested `ingressId`."}},"title":"GetIngressStreamResponse"},"DeleteIngressStreamResponse":{"type":"object","properties":{},"title":"DeleteIngressStreamResponse"}},"securitySchemes":{"OAuth":{"type":"http","scheme":"bearer"}}}}