diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index ddf99de..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Release -on: - push: - branches: - - master - -permissions: - contents: read - -jobs: - release: - name: Release - runs-on: ubuntu-latest - permissions: - contents: write # to be able to publish a GitHub release - issues: write # to be able to comment on released issues - pull-requests: write # to be able to comment on released pull requests - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Semantic Release - uses: cycjimmy/semantic-release-action@v4 - with: - semantic_version: 24.2.0 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.releaserc.yml b/.releaserc.yml deleted file mode 100644 index fce64bb..0000000 --- a/.releaserc.yml +++ /dev/null @@ -1,5 +0,0 @@ -plugins: [ - "@semantic-release/commit-analyzer", - '@semantic-release/release-notes-generator', - "@semantic-release/github" -] \ No newline at end of file diff --git a/README.md b/README.md index 0aeed00..bea55d1 100644 --- a/README.md +++ b/README.md @@ -1,54 +1,4 @@ # Lattice SDK C++ -[![Version](https://img.shields.io/github/v/release/anduril/lattice-sdk-cpp)](https://github.com/anduril/lattice-sdk-cpp/releases) - -The official [Anduril](https://www.anduril.com/) Lattice SDK for C++. - -## Documentation - -See the documentation for [Lattice C++ SDK](https://docs.anduril.com/guide/sdks/cpp). - -## Requirements - -> [!WARNING] -> It's very important that the versions of libprotobuf match the version that it was compiled with as C++ requires very specific [guarantees](https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp). -> -The current requirements are: -* `gRPC == 1.68.0` -* `Protobuf == 29.0.0` -* `CMake >= 3.16` - -As an alternative, we also provide the underlying Protobuf files in the `protos` directory if you wish to compile these yourselves with specific versions of Protobuf/gRPC. - -Alternatively, use specific versions of Protobuf or gRPC by compiling the Protobuf files in the [`protos` directory](https://github.com/anduril/lattice-sdk-cpp/tree/master/protos). - -## Installation - -The only supported way of install the C++ SDK is by fetching the package using CMake. Please use a fixed version of `GIT_TAG` to ensure that -you are not impacted by dependency updates of `gRPC` or `Protobuf`. The latest version is available [here](https://github.com/anduril/lattice-sdk-cpp/releases/latest). - -### CMakeLists.txt - -```cmake -cmake_minimum_required(VERSION 3.14.0) -project(lattice-sdk-example) - -# Download the SDK from github and add it as part of the project -include(FetchContent) -FetchContent_Declare( - lattice-sdk-cpp - GIT_REPOSITORY https://github.com/anduril/lattice-sdk-cpp.git - GIT_TAG v1.0.0 -) -FetchContent_MakeAvailable(lattice-sdk-cpp) - -# Other build instructions -.... - -# Link SDK with your sample application. -target_link_libraries(sample_app lattice-sdk-cpp) -``` - -## Support - -For support with this library please reach out to your Anduril representative. +> [!IMPORTANT] +> As of 07/24/2025, this repository has been archived and will no longer receive any updates. The Protobuf files used to generate the files here are now available via the [Buf Schema Registry](https://buf.build/anduril/lattice-sdk). The specific plugin used to generate this repository is [grpc/cpp@1.68.0](https://buf.build/anduril/lattice-sdk/sdks/main:grpc/cpp?version=v1.68.0). For any additional support please reach out to your Anduril representative. diff --git a/protos/anduril/entitymanager/v1/classification.pub.proto b/protos/anduril/entitymanager/v1/classification.pub.proto deleted file mode 100644 index c1e6613..0000000 --- a/protos/anduril/entitymanager/v1/classification.pub.proto +++ /dev/null @@ -1,52 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "ClassificationLevelsProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -// A component that describes an entity's security classification levels. -message Classification { - // The default classification information which should be assumed to apply to everything in - // the entity unless a specific field level classification is present. - ClassificationInformation default = 2; - // The set of individual field classification information which should always precedence - // over the default classification information. - repeated FieldClassificationInformation fields = 3; - - reserved 1; -} - -// A field specific classification information definition. -message FieldClassificationInformation { - // Proto field path which is the string representation of a field. - // > example: signal.bandwidth_hz would be bandwidth_hz in the signal component - string field_path = 1; - // The information which makes up the field level classification marking. - ClassificationInformation classification_information = 2; -} - -// Represents all of the necessary information required to generate a summarized -// classification marking. -// -// > example: A summarized classification marking of "TOPSECRET//NOFORN//FISA" -// would be defined as: { "level": 5, "caveats": [ "NOFORN, "FISA" ] } -message ClassificationInformation { - // Classification level to be applied to the information in question. - ClassificationLevels level = 1; - // Caveats that may further restrict how the information can be disseminated. - repeated string caveats = 2; -} - -// An enumeration of security classification levels. -enum ClassificationLevels { - CLASSIFICATION_LEVELS_INVALID = 0; - CLASSIFICATION_LEVELS_UNCLASSIFIED = 1; - CLASSIFICATION_LEVELS_CONTROLLED_UNCLASSIFIED = 2; - CLASSIFICATION_LEVELS_CONFIDENTIAL = 3; - CLASSIFICATION_LEVELS_SECRET = 4; - CLASSIFICATION_LEVELS_TOP_SECRET = 5; -} diff --git a/protos/anduril/entitymanager/v1/dimensions.pub.proto b/protos/anduril/entitymanager/v1/dimensions.pub.proto deleted file mode 100644 index e44bf51..0000000 --- a/protos/anduril/entitymanager/v1/dimensions.pub.proto +++ /dev/null @@ -1,14 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "DimensionsProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -message Dimensions { - // Length of the entity in meters - float length_m = 1; -} diff --git a/protos/anduril/entitymanager/v1/entities_openapi.pub.yaml b/protos/anduril/entitymanager/v1/entities_openapi.pub.yaml deleted file mode 100644 index f0a01c3..0000000 --- a/protos/anduril/entitymanager/v1/entities_openapi.pub.yaml +++ /dev/null @@ -1,296 +0,0 @@ -openapi: 3.0.0 -info: - title: The Entities API - description: |- - The Entities API provides a common understanding of entities within the common operational picture (COP). Every object - in a COP is represented as an "Entity". Each Entity is essentially an ID, with a life cycle, and a collection - of data components. Each data component is a separate top level field within the entity type definition. - - The Entities API provides a way to query the currently live set of entities within a set of filter constraints, - as well as a limited set of management APIs to change the grouping or relationships between entities. - version: '1.0.0' -security: - - bearerHttpAuthentication: [] -servers: -- url: "{server}/api/v1" - variables: - server: - default: "developer.anduril.com" - description: The Lattice server instance to connect to. -paths: - /entities: - put: - tags: - - entity - summary: Create or update an entity - description: |- - Publish an entity for ingest into the Entities API. Entities created with this method are "owned" by the originator: other sources, - such as the UI, may not edit or delete these entities. The server validates entities at API call time and - returns an error if the entity is invalid. - - An entity ID must be provided when calling this endpoint. If the entity referenced by the entity ID does not exist - then it will be created. Otherwise the entity will be updated. An entity will only be updated if its - provenance.sourceUpdateTime is greater than the provenance.sourceUpdateTime of the existing entity. - operationId: publishEntityRest - requestBody: - content: - application/json: - schema: - $ref: 'entities_openapi_model.gen.yaml#/components/schemas/Entity' - responses: - '200': - description: The request was valid and accepted. - content: - application/json: - schema: - $ref: 'entities_openapi_model.gen.yaml#/components/schemas/Entity' - '400': - $ref: '#/components/responses/BadRequest' - '401': - $ref: '#/components/responses/Unauthorized' - /entities/{entityId}: - get: - tags: - - entity - summary: Get the content of an entity - operationId: getEntityById - 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: 'entities_openapi_model.gen.yaml#/components/schemas/Entity' - '400': - $ref: '#/components/responses/BadRequest' - '401': - $ref: '#/components/responses/Unauthorized' - '404': - $ref: '#/components/responses/NotFound' - /entities/{entityId}/override/{fieldPath}: - put: - tags: - - entity - summary: Override an entity component - description: |- - Only fields marked with overridable can be overridden. Please refer to our documentation to see the comprehensive - list of fields that can be overridden. The entity in the request body should only have a value set on the field - specified in the field path parameter. Field paths are rooted in the base entity object and must be represented - using lower_snake_case. Do not include "entity" in the field path. - - Note that overrides are applied in an eventually consistent manner. If multiple overrides are created - concurrently for the same field path, the last writer wins. - operationId: putEntityOverrideRest - parameters: - - name: entityId - in: path - description: ID of the entity to override - required: true - schema: - type: string - - name: fieldPath - in: path - description: fieldPath to override - required: true - schema: - type: string - example: mil_view.disposition - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/EntityOverride' - responses: - '200': - description: |- - The Entities API accepts the override. - content: - application/json: - schema: - $ref: 'entities_openapi_model.gen.yaml#/components/schemas/Entity' - '400': - $ref: '#/components/responses/BadRequest' - '401': - $ref: '#/components/responses/Unauthorized' - '404': - $ref: '#/components/responses/NotFound' - delete: - tags: - - entity - summary: Remove an entity override - description: |- - This operation clears the override value from the specified field path on the entity. - operationId: removeEntityOverrideRest - parameters: - - name: entityId - in: path - description: ID of the entity to undo an override from - required: true - schema: - type: string - - name: fieldPath - in: path - description: fieldPath to clear overrides from - required: true - schema: - type: string - example: mil_view.disposition - responses: - '200': - description: Removal of entity override was successful - content: - application/json: - schema: - $ref: 'entities_openapi_model.gen.yaml#/components/schemas/Entity' - '400': - $ref: '#/components/responses/BadRequest' - '401': - $ref: '#/components/responses/Unauthorized' - '404': - $ref: '#/components/responses/NotFound' - /entities/events: - post: - tags: - - entity - summary: Retrieve batches of entity events in real-time - description: |- - This is a long polling API that will first return all preexisting data and then return all new data as - it becomes available. If you want to start a new polling session then open a request with an empty - 'sessionToken' in the request body. The server will return a new session token in the response. - If you want to retrieve the next batch of results from an existing polling session then send the session - token you received from the server in the request body. If no new data is available then the server will - hold the connection open for up to 5 minutes. After the 5 minute timeout period, the server will close the - connection with no results and you may resume polling with the same session token. If your session falls behind - more than 3x the total number of entities in the environment, the server will terminate your session. - In this case you must start a new session by sending a request with an empty session token. - operationId: longPollEntityEvents - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/EntityEventRequest' - responses: - '200': - description: Entity event batch retrieval was successful - content: - application/json: - schema: - $ref: '#/components/schemas/EntityEventResponse' - '400': - $ref: '#/components/responses/BadRequest' - '401': - $ref: '#/components/responses/Unauthorized' - '404': - $ref: '#/components/responses/NotFound' - '408': - $ref: '#/components/responses/SessionTimeout' - '429': - $ref: '#/components/responses/ResourceExhausted' -components: -# security - securitySchemes: - bearerHttpAuthentication: - description: Bearer token using a JWT - type: http - scheme: bearer - bearerFormat: JWT -# shared response types - responses: - BadRequest: - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - Unauthorized: - description: Unauthorized to access resource - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - NotFound: - description: The specified resource was not found - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - SessionTimeout: - description: |- - The server has terminated the session. The server will send this error when the client has fallen too far - behind in processing entity events. If the server sends this error, then the session token is invalid and a - new session must be initiated to receive entity events. - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - ResourceExhausted: - 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' -# manual data schemas - schemas: - Error: - type: object - properties: - errorCode: - type: string - message: - type: string - required: - - errorCode - - message - Timestamp: - description: Datetime string in ISO 8601 format. - type: string - EntityOverride: - type: object - properties: - entity: - description: |- - The entity containing the overridden fields. The service will extract the overridable fields from - the object and ignore all other fields. - allOf: - - $ref: 'entities_openapi_model.gen.yaml#/components/schemas/Entity' - provenance: - description: |- - Additional information about the source of the override. - allOf: - - $ref: 'entities_openapi_model.gen.yaml#/components/schemas/Provenance' - EntityEventRequest: - type: object - properties: - sessionToken: - type: string - description: Long-poll session identifier. Leave empty to start a new polling session. - batchSize: - description: Maximum size of response batch. Defaults to 100. Must be between 1 and 2000 (inclusive). - type: integer - required: - - sessionToken - 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: 'entities_openapi_model.gen.yaml#/components/schemas/EntityEvent' -tags: - - name: entity - description: The Entities API - x-displayName: The Entities API -x-tagGroups: - - name: General - tags: - - entity diff --git a/protos/anduril/entitymanager/v1/entities_openapi_model.gen.yaml b/protos/anduril/entitymanager/v1/entities_openapi_model.gen.yaml deleted file mode 100644 index 1763e6f..0000000 --- a/protos/anduril/entitymanager/v1/entities_openapi_model.gen.yaml +++ /dev/null @@ -1,2383 +0,0 @@ -# Generated with protoc-gen-openapi -# https://github.com/google/gnostic/tree/master/cmd/protoc-gen-openapi - -openapi: 3.0.3 -info: - title: EntityManagerRestAPI API - version: 0.0.1 -paths: - /entity-event: - get: - tags: - - EntityManagerRestAPI - operationId: EntityManagerRestAPI_GetEntityEvent - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/GetEntityEventResponse' - default: - description: Default error response - content: - application/json: - schema: - $ref: '#/components/schemas/Status' - /entity/get/{entityId}: - get: - tags: - - EntityManagerRestAPI - operationId: EntityManagerRestAPI_GetEntity - parameters: - - name: entityId - in: path - required: true - schema: - type: string - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/GetEntityResponse' - default: - description: Default error response - content: - application/json: - schema: - $ref: '#/components/schemas/Status' -components: - schemas: - ACMDetails: - type: object - properties: - acmType: - enum: - - ACM_DETAIL_TYPE_INVALID - - ACM_DETAIL_TYPE_LANDING_ZONE - type: string - format: enum - acmDescription: - type: string - description: |- - Used for loosely typed associations, such as assignment to a specific fires unit. - Limit to 150 characters. - ActiveTarget: - type: object - properties: {} - description: |- - A target relationship is the inverse of TrackedBy; a one-way relation - from sensor to target, indicating track(s) currently prioritized by a robot. - 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 - 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 - understanding and should not be used for machine processing. If the description is fixed and the vehicle controller - provides no dynamic substitutions, then prefer lookup based on alert_code. - level: - enum: - - ALERT_LEVEL_INVALID - - ALERT_LEVEL_ADVISORY - - ALERT_LEVEL_CAUTION - - ALERT_LEVEL_WARNING - type: string - description: Alert level (Warning, Caution, or Advisory). - format: enum - activatedTime: - type: string - description: Time at which this alert was activated. - format: date-time - 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 - execution. An alert is produced as a result of one or more alert conditions. - 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 - 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 - understanding and should not be used for machine processing. If the description is fixed and the vehicle controller - provides no dynamic substitutions, then prefer lookup based on condition_code. - description: A condition which may trigger an alert. - 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. - AlternateId: - type: object - properties: - id: - type: string - type: - 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 - type: string - format: enum - description: An alternate id for an Entity. - AngleOfArrival: - type: object - properties: - relativePose: - allOf: - - $ref: '#/components/schemas/Pose' - description: |- - Origin (LLA) and attitude (relative to ENU) of a ray pointing towards the detection. The attitude represents a - forward-left-up (FLU) frame where the x-axis (1, 0, 0) is pointing towards the target. - bearingElevationCovarianceRad2: - allOf: - - $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 - and elevation is positive down from the FL/XY plane. - mxx = bearing variance in rad^2 - mxy = bearing/elevation covariance in rad^2 - myy = elevation variance in rad^2 - description: The direction from which the signal is received - Bandwidth: - type: object - properties: - bandwidthHz: - type: number - format: double - description: Describes the bandwidth of a signal - 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 - Classification: - type: object - properties: - default: - allOf: - - $ref: '#/components/schemas/ClassificationInformation' - description: |- - The default classification information which should be assumed to apply to everything in - 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 - over the default classification information. - description: A component that describes an entity's security classification levels. - ClassificationInformation: - type: object - properties: - level: - enum: - - CLASSIFICATION_LEVELS_INVALID - - CLASSIFICATION_LEVELS_UNCLASSIFIED - - CLASSIFICATION_LEVELS_CONTROLLED_UNCLASSIFIED - - CLASSIFICATION_LEVELS_CONFIDENTIAL - - CLASSIFICATION_LEVELS_SECRET - - CLASSIFICATION_LEVELS_TOP_SECRET - type: string - description: Classification level to be applied to the information in question. - format: enum - 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 - classification marking. - - > example: A summarized classification marking of "TOPSECRET//NOFORN//FISA" - would be defined as: { "level": 5, "caveats": [ "NOFORN, "FISA" ] } - Color: - type: object - properties: - red: - type: number - description: The amount of red in the color as a value in the interval [0, 1]. - format: float - green: - type: number - description: The amount of green in the color as a value in the interval [0, 1]. - format: float - blue: - type: number - description: The amount of blue in the color as a value in the interval [0, 1]. - format: float - alpha: - type: number - description: |- - The fraction of this color that should be applied to the pixel. That is, - the final pixel color is defined by the equation: - - `pixel color = alpha * (this color) + (1.0 - alpha) * (background color)` - - This means that a value of 1.0 corresponds to a solid color, whereas - a value of 0.0 corresponds to a completely transparent color. This - uses a wrapper message rather than a simple float scalar so that it is - possible to distinguish between a default value and the value being unset. - If omitted, this color object is rendered as a solid color - (as if the alpha value had been explicitly given a value of 1.0). - format: float - ComponentHealth: - type: object - properties: - id: - type: string - description: Consistent internal ID for this component. - name: - type: string - description: Display name for this component. - health: - enum: - - HEALTH_STATUS_INVALID - - HEALTH_STATUS_HEALTHY - - HEALTH_STATUS_WARN - - HEALTH_STATUS_FAIL - - HEALTH_STATUS_OFFLINE - - HEALTH_STATUS_NOT_READY - type: string - description: Health for this component. - format: enum - 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 - description: |- - The last update time for this specific component. - If this timestamp is unset, the data is assumed to be most recent - format: date-time - description: Health of an individual component. - ComponentMessage: - type: object - properties: - status: - enum: - - HEALTH_STATUS_INVALID - - HEALTH_STATUS_HEALTHY - - HEALTH_STATUS_WARN - - HEALTH_STATUS_FAIL - - HEALTH_STATUS_OFFLINE - - HEALTH_STATUS_NOT_READY - type: string - description: The status associated with this message. - format: enum - message: - type: string - description: The human-readable content of the message. - description: A message describing the component's health status. - ControlAreaDetails: - type: object - properties: - type: - 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 - type: string - format: enum - description: |- - Determines the type of control area being represented by the geo-entity, - in which an asset can, or cannot, operate. - Correlation: - type: object - properties: - primary: - allOf: - - $ref: '#/components/schemas/PrimaryCorrelation' - description: |- - This entity is the primary of a correlation meaning that it serves as the representative - entity of the correlation set. - secondary: - allOf: - - $ref: '#/components/schemas/SecondaryCorrelation' - description: |- - This entity is a secondary of a correlation meaning that it will be represented by the - primary of the correlation set. - membership: - allOf: - - $ref: '#/components/schemas/CorrelationMembership' - description: If present, this entity is a part of a correlation set. - decorrelation: - allOf: - - $ref: '#/components/schemas/Decorrelation' - description: |- - If present, this entity was explicitly decorrelated from one or more entities. - An entity can be both correlated and decorrelated as long as they are disjoint sets. - An example would be if a user in the UI decides that two tracks are not actually the - same despite an automatic correlator having correlated them. The user would then - decorrelate the two tracks and this decorrelation would be preserved preventing the - 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 - each entity in the set. - CorrelationMembership: - type: object - properties: - correlationSetId: - type: string - description: The ID of the correlation set this entity belongs to. - primary: - allOf: - - $ref: '#/components/schemas/PrimaryMembership' - description: |- - This entity is the primary of a correlation set meaning that it serves as the representative - entity of the correlation set. - nonPrimary: - allOf: - - $ref: '#/components/schemas/NonPrimaryMembership' - description: |- - This entity is not the primary of the correlation set. Note that there may not - be a primary at all. - metadata: - allOf: - - $ref: '#/components/schemas/CorrelationMetadata' - description: Additional metadata on this correlation. - CorrelationMetadata: - type: object - properties: - provenance: - allOf: - - $ref: '#/components/schemas/Provenance' - description: Who or what added this entity to the (de)correlation. - replicationMode: - enum: - - CORRELATION_REPLICATION_MODE_INVALID - - CORRELATION_REPLICATION_MODE_LOCAL - - CORRELATION_REPLICATION_MODE_GLOBAL - type: string - description: |- - Indicates how the correlation will be distributed. Because a correlation is composed of - multiple secondaries, each of which may have been correlated with different replication - modes, the distribution of the correlation is composed of distributions of the individual - entities within the correlation set. - For example, if there are two secondary entities A and B correlated against a primary C, - with A having been correlated globally and B having been correlated locally, then the - correlation set that is distributed globally than what is known locally in the node. - format: enum - type: - enum: - - CORRELATION_TYPE_INVALID - - CORRELATION_TYPE_MANUAL - - CORRELATION_TYPE_AUTOMATED - type: string - description: What type of (de)correlation was this entity added with. - format: enum - 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 - - examples: - This schedule is begins at 7:00:00am UTC everyday between Monday and Friday - 0 0 7 ? * MON-FRI * - This schedule begins every 5 minutes starting at 12:00:00pm UTC until 8:00:00pm UTC everyday - 0 0/5 12-20 * * ? * - This schedule begins at 12:00:00pm UTC on March 2nd 2023 - 0 0 12 2 3 ? 2023 - durationMillis: - type: string - description: describes the duration - DecorrelatedAll: - type: object - properties: - metadata: - allOf: - - $ref: '#/components/schemas/CorrelationMetadata' - description: Metadata about the decorrelation. - DecorrelatedSingle: - type: object - properties: - entityId: - type: string - description: The entity that was decorrelated against. - metadata: - allOf: - - $ref: '#/components/schemas/CorrelationMetadata' - description: Metadata about the decorrelation. - Decorrelation: - type: object - properties: - all: - allOf: - - $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 - which prevents lower precedence correlations from overriding it in the future. - For example, if an operator in the UI decorrelated tracks A and B, any automated - correlators would be unable to correlate them since manual decorrelations have - higher precedence than automatic ones. Precedence is determined by both correlation - type and replication mode. - Dimensions: - type: object - properties: - lengthM: - type: number - description: Length of the entity in meters - format: float - ENU: - type: object - properties: - e: - type: number - format: double - n: - type: number - format: double - u: - type: number - format: double - Echelon: - type: object - properties: - armyEchelon: - 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 - type: string - format: enum - description: |- - Describes a Echelon group type. Comprised of entities which are members of the - same unit or echelon. Ex: A group of tanks within a armored company or that same company - as a member of a battalion. - EmitterNotation: - type: object - properties: - emitterNotation: - type: string - confidence: - type: number - description: confidence as a percentage that the emitter notation in this component is accurate - format: double - description: A representation of a single emitter notation. - Entity: - type: object - properties: - entityId: - type: string - description: |- - A Globally Unique Identifier (GUID) for your entity. If this field is empty, the Entity Manager API - automatically generates an ID when it creates the entity. - description: - type: string - description: |- - A human-readable entity description that's helpful for debugging purposes and human - 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. - Set this field to true when publishing an entity. - createdTime: - type: string - description: |- - The time when the entity was first known to the entity producer. If this field is empty, the Entity Manager API uses the - current timestamp of when the entity is first received. - For example, when a drone is first powered on, it might report its startup time as the created time. - The timestamp doesn't change for the lifetime of an entity. - format: date-time - expiryTime: - type: string - description: |- - Future time that expires an entity and updates the is_live flag. - For entities that are constantly updating, the expiry time also updates. - In some cases, this may differ from is_live. - Example: Entities with tasks exported to an external system must remain - active even after they expire. - This field is required when publishing a prepopulated entity. - The expiry time must be in the future, but less than 30 days from the current time. - format: date-time - status: - allOf: - - $ref: '#/components/schemas/Status' - description: Human-readable descriptions of what the entity is currently doing. - location: - allOf: - - $ref: '#/components/schemas/Location' - description: Geospatial data related to the entity, including its position, kinematics, and orientation. - locationUncertainty: - allOf: - - $ref: '#/components/schemas/LocationUncertainty' - description: Indicates uncertainty of the entity's position and kinematics. - geoShape: - allOf: - - $ref: '#/components/schemas/GeoShape' - description: Geospatial representation of the entity, including entities that cover an area rather than a fixed point. - geoDetails: - allOf: - - $ref: '#/components/schemas/GeoDetails' - description: Additional details on what the geospatial area or point represents, along with visual display details. - aliases: - allOf: - - $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: - allOf: - - $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: - allOf: - - $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: - allOf: - - $ref: '#/components/schemas/MilView' - description: View of the entity. - ontology: - allOf: - - $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: - allOf: - - $ref: '#/components/schemas/Sensors' - description: Details an entity's available sensors. - payloads: - allOf: - - $ref: '#/components/schemas/Payloads' - description: Details an entity's available payloads. - powerState: - allOf: - - $ref: '#/components/schemas/PowerState' - description: Details the entity's power source. - provenance: - allOf: - - $ref: '#/components/schemas/Provenance' - description: The primary data source provenance for this entity. - overrides: - allOf: - - $ref: '#/components/schemas/Overrides' - description: Provenance of override data. - indicators: - allOf: - - $ref: '#/components/schemas/Indicators' - description: |- - Describes an entity's specific characteristics and the operations that can be performed on the entity. - For example, "simulated" informs the operator that the entity is from a simulation, and "deletable" - informs the operator (and system) that the delete operation is valid against the entity. - targetPriority: - allOf: - - $ref: '#/components/schemas/TargetPriority' - description: The prioritization associated with an entity, such as if it's a threat or a high-value target. - signal: - allOf: - - $ref: '#/components/schemas/Signal' - description: Describes an entity's signal characteristics, primarily used when an entity is a signal of interest. - transponderCodes: - allOf: - - $ref: '#/components/schemas/TransponderCodes' - description: A message describing any transponder codes associated with Mode 1, 2, 3, 4, 5, S interrogations. These are related to ADS-B modes. - dataClassification: - allOf: - - $ref: '#/components/schemas/Classification' - description: |- - Describes an entity's security classification levels at an overall classification level and on a per - field level. - taskCatalog: - allOf: - - $ref: '#/components/schemas/TaskCatalog' - description: A catalog of tasks that can be performed by an entity. - media: - allOf: - - $ref: '#/components/schemas/Media' - description: Media associated with an entity, such as videos, images, or thumbnails. - relationships: - allOf: - - $ref: '#/components/schemas/Relationships' - description: The relationships between this entity and other entities in the common operational picture (COP). - visualDetails: - allOf: - - $ref: '#/components/schemas/VisualDetails' - description: Visual details associated with the display of an entity in the client. - dimensions: - allOf: - - $ref: '#/components/schemas/Dimensions' - description: Physical dimensions of the entity. - routeDetails: - allOf: - - $ref: '#/components/schemas/RouteDetails' - description: Additional information about an entity's route. - schedules: - allOf: - - $ref: '#/components/schemas/Schedules' - description: Schedules associated with this entity. - health: - allOf: - - $ref: '#/components/schemas/Health' - description: Health metrics or connection status reported by the entity. - groupDetails: - allOf: - - $ref: '#/components/schemas/GroupDetails' - description: Details for the group associated with this entity. - supplies: - allOf: - - $ref: '#/components/schemas/Supplies' - description: Contains relevant supply information for the entity, such as fuel. - orbit: - allOf: - - $ref: '#/components/schemas/Orbit' - description: Orbit information for space objects. - description: |- - The entity object represents a single known object within the Lattice operational environment. It contains - all data associated with the entity, such as its name, ID, and other relevant components. - EntityEvent: - type: object - properties: - eventType: - enum: - - EVENT_TYPE_INVALID - - EVENT_TYPE_CREATED - - EVENT_TYPE_UPDATE - - EVENT_TYPE_DELETED - - EVENT_TYPE_PREEXISTING - - EVENT_TYPE_POST_EXPIRY_OVERRIDE - type: string - format: enum - time: - type: string - format: date-time - entity: - $ref: '#/components/schemas/Entity' - description: Event representing some type of entity change. - ErrorEllipse: - type: object - properties: - probability: - type: number - description: 'Defines the probability in percentage that an entity lies within the given ellipse: 0-1.' - format: double - semiMajorAxisM: - type: number - description: Defines the distance from the center point of the ellipse to the furthest distance on the perimeter in meters. - format: double - semiMinorAxisM: - type: number - description: Defines the distance from the center point of the ellipse to the shortest distance on the perimeter in meters. - format: double - orientationD: - type: number - 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.' - format: double - description: Indicates ellipse characteristics and probability that an entity lies within the defined ellipse. - FieldClassificationInformation: - type: object - properties: - fieldPath: - type: string - description: |- - Proto field path which is the string representation of a field. - > example: signal.bandwidth_hz would be bandwidth_hz in the signal component - classificationInformation: - allOf: - - $ref: '#/components/schemas/ClassificationInformation' - description: The information which makes up the field level classification marking. - description: A field specific classification information definition. - FieldOfView: - type: object - properties: - fovId: - type: integer - description: |- - The Id for one instance of a FieldOfView, persisted across multiple updates to provide continuity during - smoothing. This is relevant for sensors where the dwell schedule is on the order of - milliseconds, making multiple FOVs a requirement for proper display of search beams. - format: int32 - mountId: - type: string - description: The Id of the mount the sensor is on. - projectedFrustum: - allOf: - - $ref: '#/components/schemas/ProjectedFrustum' - description: The field of view the sensor projected onto the ground. - projectedCenterRay: - allOf: - - $ref: '#/components/schemas/Position' - description: Center ray of the frustum projected onto the ground. - centerRayPose: - allOf: - - $ref: '#/components/schemas/Pose' - description: |- - The origin and direction of the center ray for this sensor relative to the ENU frame. A ray which is aligned with - the positive X axis in the sensor frame will be transformed into the ray along the sensor direction in the ENU - frame when transformed by the quaternion contained in this pose. - horizontalFov: - type: number - description: Horizontal field of view in radians. - format: float - verticalFov: - type: number - description: Vertical field of view in radians. - format: float - range: - type: number - description: Sensor range in meters. - format: float - mode: - enum: - - SENSOR_MODE_INVALID - - SENSOR_MODE_SEARCH - - SENSOR_MODE_TRACK - - SENSOR_MODE_WEAPON_SUPPORT - - SENSOR_MODE_AUTO - - SENSOR_MODE_MUTE - type: string - description: |- - The mode that this sensor is currently in, used to display for context in the UI. Some sensors can emit multiple - sensor field of views with different modes, for example a radar can simultaneously search broadly and perform - tighter bounded tracking. - format: enum - description: Sensor Field Of View closely resembling fov.proto SensorFieldOfView. - 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. - Frequency: - type: object - properties: - frequencyHz: - allOf: - - $ref: '#/components/schemas/Measurement' - description: Indicates a frequency of a signal (Hz) with its standard deviation. - description: A component for describing frequency. - FrequencyRange: - type: object - properties: - minimumFrequencyHz: - allOf: - - $ref: '#/components/schemas/Frequency' - description: Indicates the lowest measured frequency of a signal (Hz). - maximumFrequencyHz: - allOf: - - $ref: '#/components/schemas/Frequency' - description: Indicates the maximum measured frequency of a signal (Hz). - description: A component to represent a frequency range. - 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 - description: timestamp the information was reported - format: date-time - amountGallons: - type: integer - description: amount of gallons on hand - format: uint32 - maxAuthorizedCapacityGallons: - type: integer - description: how much the asset is allowed to have available (in gallons) - format: uint32 - operationalRequirementGallons: - type: integer - description: minimum required for operations (in gallons) - format: uint32 - dataClassification: - allOf: - - $ref: '#/components/schemas/Classification' - description: |- - fuel in a single asset may have different levels of classification - 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 - GeoDetails: - type: object - properties: - type: - 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 - type: string - format: enum - controlArea: - $ref: '#/components/schemas/ControlAreaDetails' - acm: - $ref: '#/components/schemas/ACMDetails' - description: A component that describes a geo-entity. - GeoEllipse: - type: object - properties: - semiMajorAxisM: - type: number - description: Defines the distance from the center point of the ellipse to the furthest distance on the perimeter in meters. - format: double - semiMinorAxisM: - type: number - description: Defines the distance from the center point of the ellipse to the shortest distance on the perimeter in meters. - format: double - orientationD: - type: number - 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.' - format: double - heightM: - type: number - description: Optional height above entity position to extrude in meters. A non-zero value creates an elliptic cylinder - format: double - description: |- - An ellipse shaped geo-entity. - For a circle, the major and minor axis would be the same values. - This shape is NOT Geo-JSON compatible. - GeoEllipsoid: - type: object - properties: - forwardAxisM: - type: number - description: Defines the distance from the center point to the surface along the forward axis - format: double - sideAxisM: - type: number - description: Defines the distance from the center point to the surface along the side axis - format: double - upAxisM: - type: number - description: Defines the distance from the center point to the surface along the up axis - format: double - description: |- - An ellipsoid shaped geo-entity. - Principal axis lengths are defined in entity body space - This shape is NOT Geo-JSON compatible. - GeoLine: - type: object - properties: - positions: - type: array - items: - $ref: '#/components/schemas/Position' - description: |- - A line shaped geo-entity. - See https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.4 - GeoPoint: - type: object - properties: - position: - $ref: '#/components/schemas/Position' - description: |- - A point shaped geo-entity. - See https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.2 - 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: - * exactly 1 linear ring with 5 points (starting corner, 3 other corners and start again) - * each point has the same altitude corresponding with the plane of the rectangle - * each point has the same height (either all present and equal, or all not present) - description: |- - A polygon shaped geo-entity. - See https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.6, only canonical representations accepted - GeoPolygonPosition: - type: object - properties: - position: - allOf: - - $ref: '#/components/schemas/Position' - description: base position. if no altitude set, its on the ground. - heightM: - type: number - description: |- - optional height above base position to extrude in meters. - for a given polygon, all points should have a height or none of them. - strictly GeoJSON compatible polygons will not have this set. - format: float - description: A position in a GeoPolygon with an optional extruded height. - 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. - GetEntityEventResponse: - type: object - properties: - entityEvent: - $ref: '#/components/schemas/EntityEvent' - GetEntityResponse: - type: object - properties: - entity: - allOf: - - $ref: '#/components/schemas/Entity' - description: An Entity object that corresponds with the requested entityId. - GoogleProtobufAny: - type: object - properties: - '@type': - type: string - description: The type of the serialized message. - additionalProperties: true - description: Contains an arbitrary serialized message along with a @type that describes the type of the serialized message. - GroupChild: - type: object - properties: {} - description: |- - A GroupChild relationship is a uni-directional relationship indicating that (1) this entity - represents an Entity Group and (2) the related entity is a child member of this group. The presence of this - relationship alone determines that the type of group is an Entity Group. - GroupDetails: - type: object - properties: - team: - $ref: '#/components/schemas/Team' - echelon: - $ref: '#/components/schemas/Echelon' - description: Details related to grouping for this entity - GroupParent: - type: object - properties: {} - description: |- - A GroupParent relationship is a uni-directional relationship indicating that this entity is a member of - the Entity Group represented by the related entity. The presence of this relationship alone determines that - the type of group that this entity is a member of is an Entity Group. - Health: - type: object - properties: - connectionStatus: - enum: - - CONNECTION_STATUS_INVALID - - CONNECTION_STATUS_ONLINE - - CONNECTION_STATUS_OFFLINE - type: string - description: Status indicating whether the entity is able to communicate with Entity Manager. - format: enum - healthStatus: - enum: - - HEALTH_STATUS_INVALID - - HEALTH_STATUS_HEALTHY - - HEALTH_STATUS_WARN - - HEALTH_STATUS_FAIL - - HEALTH_STATUS_OFFLINE - - HEALTH_STATUS_NOT_READY - type: string - description: Top-level health status; typically a roll-up of individual component healths. - format: enum - components: - type: array - items: - $ref: '#/components/schemas/ComponentHealth' - description: Health of individual components running on this Entity. - updateTime: - type: string - description: |- - The update time for the top-level health information. - If this timestamp is unset, the data is assumed to be most recent - format: date-time - activeAlerts: - type: array - items: - $ref: '#/components/schemas/Alert' - description: |- - Active alerts indicate a critical change in system state sent by the asset - that must be made known to an operator or consumer of the common operating picture. - Alerts are different from ComponentHealth messages--an active alert does not necessarily - indicate a component is in an unhealthy state. For example, an asset may trigger - an active alert based on fuel levels running low. Alerts should be removed from this list when their conditions - are cleared. In other words, only active alerts should be reported here. - description: General health of the entity as reported by the entity. - HighValueTarget: - type: object - properties: - isHighValueTarget: - type: boolean - description: Indicates whether the target matches any description from a high value target list. - targetPriority: - type: integer - description: |- - The priority associated with the target. If the target's description appears on multiple high value target lists, - the priority will be a reflection of the highest priority of all of those list's target description. - - A lower value indicates the target is of a higher priority, with 1 being the highest possible priority. A value of - 0 indicates there is no priority associated with this target. - format: uint32 - 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. - 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. - The ID is considered to be a globally unique identifier across all high value target IDs. - 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. - 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. - LLA: - type: object - properties: - lon: - type: number - format: double - lat: - type: number - format: double - alt: - type: number - format: double - is2d: - type: boolean - altitudeReference: - 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 - type: string - description: |- - Meaning of alt. - altitude in meters above either WGS84 or EGM96, use altitude_reference to - determine what zero means. - format: enum - LineOfBearing: - type: object - properties: - angleOfArrival: - allOf: - - $ref: '#/components/schemas/AngleOfArrival' - description: The direction pointing from this entity to the detection - rangeEstimateM: - allOf: - - $ref: '#/components/schemas/Measurement' - description: The estimated distance of the detection - maxRangeM: - allOf: - - $ref: '#/components/schemas/Measurement' - description: The maximum distance of the detection - description: A line of bearing of a signal. - 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. - Location: - type: object - properties: - position: - allOf: - - $ref: '#/components/schemas/Position' - description: see Position definition for details. - velocityEnu: - allOf: - - $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 - description: Speed is the magnitude of velocity_enu vector [sqrt(e^2 + n^2 + u^2)] when present, measured in m/s. - format: double - acceleration: - allOf: - - $ref: '#/components/schemas/ENU' - description: The entity's acceleration in meters/s^2. - attitudeEnu: - allOf: - - $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. - LocationUncertainty: - type: object - properties: - positionEnuCov: - allOf: - - $ref: '#/components/schemas/TMat3' - description: |- - Positional covariance represented by the upper triangle of the covariance matrix. It is valid to populate - only the diagonal of the matrix if the full covariance matrix is unknown. - velocityEnuCov: - allOf: - - $ref: '#/components/schemas/TMat3' - description: |- - Velocity covariance represented by the upper triangle of the covariance matrix. It is valid to populate - only the diagonal of the matrix if the full covariance matrix is unknown. - positionErrorEllipse: - allOf: - - $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. - MeanKeplerianElements: - type: object - properties: - epoch: - type: string - description: UTC time of validity - format: date-time - semiMajorAxisKm: - type: number - description: 'Preferred: semi major axis in kilometers' - format: double - meanMotion: - type: number - description: If using SGP/SGP4, provide the Keplerian Mean Motion in revolutions per day - format: double - eccentricity: - type: number - format: double - inclinationDeg: - type: number - description: Angle of inclination in deg - format: double - raOfAscNodeDeg: - type: number - description: Right ascension of the ascending node in deg - format: double - argOfPericenterDeg: - type: number - description: Argument of pericenter in deg - format: double - meanAnomalyDeg: - type: number - description: Mean anomaly in deg - format: double - gm: - type: number - description: 'Optional: gravitational coefficient (Gravitational Constant x central mass) in kg^3 / s^2' - format: double - Measurement: - type: object - properties: - value: - type: number - description: The value of the measurement. - format: double - sigma: - type: number - description: Estimated one standard deviation in same unit as the value. - format: double - description: A component that describes some measured value with error. - Media: - type: object - properties: - media: - type: array - items: - $ref: '#/components/schemas/MediaItem' - description: Media associated with an entity. - MediaItem: - type: object - properties: - type: - enum: - - MEDIA_TYPE_INVALID - - MEDIA_TYPE_IMAGE - - MEDIA_TYPE_VIDEO - type: string - format: enum - relativePath: - type: string - description: The path, relative to the environment base URL, where media related to an entity can be accessed - MergedFrom: - type: object - properties: {} - description: |- - A MergedFrom relationship is a uni-directional relationship indicating that this entity is a merged entity whose - data has at least partially been merged from the related entity. - MilView: - type: object - properties: - disposition: - enum: - - DISPOSITION_UNKNOWN - - DISPOSITION_FRIENDLY - - DISPOSITION_HOSTILE - - DISPOSITION_SUSPICIOUS - - DISPOSITION_ASSUMED_FRIENDLY - - DISPOSITION_NEUTRAL - - DISPOSITION_PENDING - type: string - format: enum - environment: - enum: - - ENVIRONMENT_UNKNOWN - - ENVIRONMENT_AIR - - ENVIRONMENT_SURFACE - - ENVIRONMENT_SUB_SURFACE - - ENVIRONMENT_LAND - - ENVIRONMENT_SPACE - type: string - format: enum - nationality: - 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 - type: string - format: enum - description: Provides the disposition, environment, and nationality of an Entity. - Mode5: - type: object - properties: - mode5InterrogationResponse: - enum: - - INTERROGATION_RESPONSE_INVALID - - INTERROGATION_RESPONSE_CORRECT - - INTERROGATION_RESPONSE_INCORRECT - - INTERROGATION_RESPONSE_NO_RESPONSE - type: string - description: The validity of the response from the Mode 5 interrogation. - format: enum - mode5: - type: integer - description: The Mode 5 code assigned to military assets. - format: uint32 - mode5PlatformId: - type: integer - description: The Mode 5 platform identification code. - format: uint32 - description: Describes the Mode 5 transponder interrogation status and codes. - ModeS: - type: object - properties: - id: - type: string - description: Mode S identifier which comprises of 8 alphanumeric characters. - address: - type: integer - description: |- - The Mode S ICAO aircraft address. Expected values are between 1 and 16777214 decimal. The Mode S address is - considered unique. - format: uint32 - description: Describes the Mode S codes. - NonPrimaryMembership: - type: object - properties: {} - 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: - enum: - - TEMPLATE_INVALID - - TEMPLATE_TRACK - - TEMPLATE_SENSOR_POINT_OF_INTEREST - - TEMPLATE_ASSET - - TEMPLATE_GEO - - TEMPLATE_SIGNAL_OF_INTEREST - type: string - description: The template used when creating this entity. Specifies minimum required components. - format: enum - description: Ontology of the entity. - Orbit: - type: object - properties: - orbitMeanElements: - allOf: - - $ref: '#/components/schemas/OrbitMeanElements' - description: Orbit Mean Elements data, analogous to the Orbit Mean Elements Message in CCSDS 502.0-B-3 - 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 - OrbitMeanElementsMetadata: - type: object - properties: - creationDate: - type: string - description: Creation date/time in UTC - format: date-time - originator: - type: string - description: Creating agency or operator - messageId: - type: string - description: ID that uniquely identifies a message from a given originator. - refFrame: - enum: - - ECI_REFERENCE_FRAME_INVALID - - ECI_REFERENCE_FRAME_TEME - type: string - description: Reference frame, assumed to be Earth-centered - format: enum - refFrameEpoch: - type: string - description: Reference frame epoch in UTC - mandatory only if not intrinsic to frame definition - format: date-time - meanElementTheory: - enum: - - MEAN_ELEMENT_THEORY_INVALID - - MEAN_ELEMENT_THEORY_SGP4 - type: string - format: enum - 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. - example: correlated.primary_entity_id would be primary_entity_id in correlated component - maskedFieldValue: - allOf: - - $ref: '#/components/schemas/Entity' - description: |- - new field value corresponding to field path. In the shape of an empty entity with only the changed value. - example: entity: { mil_view: { disposition: Disposition_DISPOSITION_HOSTILE } } - status: - enum: - - OVERRIDE_STATUS_INVALID - - OVERRIDE_STATUS_APPLIED - - OVERRIDE_STATUS_PENDING - - OVERRIDE_STATUS_TIMEOUT - - OVERRIDE_STATUS_REJECTED - - OVERRIDE_STATUS_DELETION_PENDING - type: string - description: status of the override - format: enum - provenance: - $ref: '#/components/schemas/Provenance' - type: - enum: - - OVERRIDE_TYPE_INVALID - - OVERRIDE_TYPE_LIVE - - OVERRIDE_TYPE_POST_EXPIRY - type: string - description: |- - The type of the override, defined by the stage of the entity lifecycle that the entity was in when the override - was requested. - format: enum - requestTimestamp: - type: string - description: Timestamp of the override request. The timestamp is generated by the Entity Manager instance that receives the request. - format: date-time - description: Details about an override. Last write wins. - Overrides: - type: object - properties: - override: - type: array - items: - $ref: '#/components/schemas/Override' - description: Metadata about entity overrides present. - Payload: - type: object - properties: - config: - $ref: '#/components/schemas/PayloadConfiguration' - description: Individual payload configuration. - PayloadConfiguration: - type: object - properties: - capabilityId: - type: string - description: |- - Identifying ID for the capability. - This ID may be used multiple times to represent payloads that are the same capability but have different operational states - quantity: - type: integer - description: The number of payloads currently available in the configuration. - format: uint32 - effectiveEnvironment: - type: array - items: - enum: - - ENVIRONMENT_UNKNOWN - - ENVIRONMENT_AIR - - ENVIRONMENT_SURFACE - - ENVIRONMENT_SUB_SURFACE - - ENVIRONMENT_LAND - - ENVIRONMENT_SPACE - type: string - format: enum - description: The target environments the configuration is effective against. - payloadOperationalState: - 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 - type: string - description: The operational state of this payload. - format: enum - payloadDescription: - type: string - description: A human readable description of the payload - Payloads: - type: object - properties: - payloadConfigurations: - type: array - items: - $ref: '#/components/schemas/Payload' - description: List of payloads available for an entity. - Pose: - type: object - properties: - pos: - allOf: - - $ref: '#/components/schemas/LLA' - description: Geospatial location defined by this Pose. - attEnu: - allOf: - - $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, - etc and is determined by the context in which this Pose is used. - The normal convention for defining orientation is to list the frames of transformation, for example - att_gimbal_to_enu is the quaternion which transforms a point in the gimbal frame to the body frame, but - in this case we truncate to att_enu because the Pose frame isn't defined. A potentially better name for this - field would have been att_pose_to_enu. - - Implementations of this quaternion should left multiply this quaternion to transform a point from the Pose frame - to the enu frame. - - Point posePt{1,0,0}; - Rotation attPoseToEnu{}; - Point = attPoseToEnu*posePt; - - This transformed point represents some vector in ENU space that is aligned with the x axis of the attPoseToEnu - matrix. - - An alternative matrix expression is as follows: - ptEnu = M x ptPose - Position: - type: object - properties: - latitudeDegrees: - type: number - description: WGS84 geodetic latitude in decimal degrees. - format: double - longitudeDegrees: - type: number - description: WGS84 longitude in decimal degrees. - format: double - altitudeHaeMeters: - type: number - description: |- - altitude as height above ellipsoid (WGS84) in meters. DoubleValue wrapper is used to distinguish optional from - default 0. - format: double - altitudeAglMeters: - type: number - description: |- - Altitude as AGL (Above Ground Level) if the upstream data source has this value set. This value represents the - entity's height above the terrain. This is typically measured with a radar altimeter or by using a terrain tile - set lookup. If the value is not set from the upstream, this value is not set. - format: double - altitudeAsfMeters: - type: number - 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 - not set. - format: double - pressureDepthMeters: - type: number - description: |- - The depth of the entity from the surface of the water through sensor measurements based on differential pressure - between the interior and exterior of the vessel. If the value is not set from the upstream, this value is not set. - format: double - description: |- - WGS84 position. Position includes four altitude references. - The data model does not currently support Mean Sea Level (MSL) references, - such as the Earth Gravitational Model 1996 (EGM-96) and the Earth Gravitational Model 2008 (EGM-08). - If the only altitude reference available to your integration is MSL, convert it to - Height Above Ellipsoid (HAE) and populate the altitude_hae_meters field. - PowerLevel: - type: object - properties: - capacity: - type: number - description: Total power capacity of the system. - format: float - remaining: - type: number - description: Remaining power capacity of the system. - format: float - percentRemaining: - type: number - description: Percent of power remaining. - format: float - voltage: - type: number - description: |- - Voltage of the power source subsystem, as reported by the power source. If the source does not report this value - this field will be null. - format: double - currentAmps: - type: number - description: |- - Current in amps of the power source subsystem, as reported by the power source. If the source does not - report this value this field will be null. - format: double - runTimeToEmptyMins: - type: number - description: |- - Estimated minutes until empty. Calculated with consumption at the moment, as reported by the power source. If the source does not - report this value this field will be null. - format: double - consumptionRateLPerS: - type: number - description: Fuel consumption rate in liters per second. - format: double - description: Represents the power level of a system. - PowerSource: - type: object - properties: - powerStatus: - enum: - - POWER_STATUS_INVALID - - POWER_STATUS_UNKNOWN - - POWER_STATUS_NOT_PRESENT - - POWER_STATUS_OPERATING - - POWER_STATUS_DISABLED - - POWER_STATUS_ERROR - type: string - description: Status of the power source. - format: enum - powerType: - enum: - - POWER_TYPE_INVALID - - POWER_TYPE_UNKNOWN - - POWER_TYPE_GAS - - POWER_TYPE_BATTERY - type: string - description: Used to determine the type of power source. - format: enum - powerLevel: - allOf: - - $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 - 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 - report whether the power source is offloadable. - description: Represents the state of a single power source that is connected to this entity. - 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 - power source. - description: Represents the state of power sources connected to this entity. - PrimaryCorrelation: - type: object - properties: - secondaryEntityIds: - type: array - items: - type: string - description: The secondary entity IDs part of this correlation. - PrimaryMembership: - type: object - properties: {} - ProjectedFrustum: - type: object - properties: - upperLeft: - allOf: - - $ref: '#/components/schemas/Position' - description: Upper left point of the frustum. - upperRight: - allOf: - - $ref: '#/components/schemas/Position' - description: Upper right point of the frustum. - bottomRight: - allOf: - - $ref: '#/components/schemas/Position' - description: Bottom right point of the frustum. - bottomLeft: - allOf: - - $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 - are optional, if the projection to the ground fails then they will not be populated. - 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 - description: |- - The time, according to the source system, that the data in the entity was last modified. Generally, this should - be the time that the source-reported time of validity of the data in the entity. This field must be - updated with every change to the entity or else Entity Manager will discard the update. - format: date-time - sourceDescription: - type: string - description: Description of the modification source. In the case of a user this is the email address. - description: Data provenance. - PulseRepetitionInterval: - type: object - properties: - pulseRepetitionIntervalS: - $ref: '#/components/schemas/Measurement' - description: A component that describe the length in time between two pulses - Quaternion: - type: object - properties: - x: - type: number - description: x, y, z are vector portion, w is scalar - format: double - y: - type: number - format: double - z: - type: number - format: double - w: - type: number - format: double - 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. - RangeRings: - type: object - properties: - minDistanceM: - type: number - description: The minimum range ring distance, specified in meters. - format: double - maxDistanceM: - type: number - description: The maximum range ring distance, specified in meters. - format: double - ringCount: - type: integer - description: The count of range rings. - format: uint32 - ringLineColor: - allOf: - - $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. - 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: - allOf: - - $ref: '#/components/schemas/RelationshipType' - description: The relationship type - description: The relationship component indicates a relationship to another entity. - 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. - 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. - RouteDetails: - type: object - properties: - destinationName: - type: string - description: Free form text giving the name of the entity's destination - estimatedArrivalTime: - type: string - description: Estimated time of arrival at destination - format: date-time - ScanCharacteristics: - type: object - properties: - scanType: - 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 - type: string - format: enum - scanPeriodS: - type: number - format: double - description: A component that describes the scanning characteristics of a signal - 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: - enum: - - SCHEDULE_TYPE_INVALID - - SCHEDULE_TYPE_ZONE_ENABLED - - SCHEDULE_TYPE_ZONE_TEMP_ENABLED - type: string - description: The schedule type - format: enum - description: A Schedule associated with this entity - Schedules: - type: object - properties: - schedules: - type: array - items: - $ref: '#/components/schemas/Schedule' - description: Schedules associated with this entity - SecondaryCorrelation: - type: object - properties: - primaryEntityId: - type: string - description: The primary of this correlation. - metadata: - allOf: - - $ref: '#/components/schemas/CorrelationMetadata' - description: Metadata about the correlation. - 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: - enum: - - OPERATIONAL_STATE_INVALID - - OPERATIONAL_STATE_OFF - - OPERATIONAL_STATE_NON_OPERATIONAL - - OPERATIONAL_STATE_DEGRADED - - OPERATIONAL_STATE_OPERATIONAL - - OPERATIONAL_STATE_DENIED - type: string - format: enum - sensorType: - 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 - type: string - description: The type of sensor - format: enum - sensorDescription: - type: string - description: A human readable description of the sensor - rfConfiguraton: - allOf: - - $ref: '#/components/schemas/RFConfiguration' - description: RF configuration details of the sensor - lastDetectionTimestamp: - type: string - description: Time of the latest detection from the sensor - format: date-time - fieldsOfView: - type: array - items: - $ref: '#/components/schemas/FieldOfView' - description: Multiple fields of view for a single sensor component - description: Individual sensor configuration. - Sensors: - type: object - properties: - sensors: - type: array - items: - $ref: '#/components/schemas/Sensor' - description: List of sensors available for an entity. - Signal: - type: object - properties: - frequencyCenter: - $ref: '#/components/schemas/Frequency' - frequencyRange: - $ref: '#/components/schemas/FrequencyRange' - bandwidthHz: - type: number - description: Indicates the bandwidth of a signal (Hz). - format: double - signalToNoiseRatio: - type: number - description: Indicates the signal to noise (SNR) of this signal. - format: double - 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 - description: length in time of a single pulse - format: double - pulseRepetitionInterval: - allOf: - - $ref: '#/components/schemas/PulseRepetitionInterval' - description: length in time between the start of two pulses - scanCharacteristics: - allOf: - - $ref: '#/components/schemas/ScanCharacteristics' - description: describes how a signal is observing the environment - description: A component that describes an entity's signal characteristics. - Status: - type: object - properties: - code: - type: integer - description: The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code]. - format: int32 - 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/GoogleProtobufAny' - 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).' - Supplies: - type: object - properties: - 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) - 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 - covariance matrices - TMat3: - type: object - properties: - mxx: - type: number - format: float - mxy: - type: number - format: float - mxz: - type: number - format: float - myy: - type: number - format: float - myz: - type: number - format: float - mzz: - type: number - format: float - description: Symmetric 3d matrix only representing the upper right triangle. - TargetPriority: - type: object - properties: - highValueTarget: - allOf: - - $ref: '#/components/schemas/HighValueTarget' - description: Describes the target priority in relation to high value target lists. - threat: - allOf: - - $ref: '#/components/schemas/Threat' - description: Describes whether the entity should be treated as a threat - description: The target prioritization associated with an entity. - TaskCatalog: - type: object - properties: - taskDefinitions: - type: array - items: - $ref: '#/components/schemas/TaskDefinition' - description: Catalog of supported tasks. - 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. - Team: - type: object - properties: {} - description: |- - Describes a Team group type. Comprised of autonomous entities where an entity - in a Team can only be a part of a single Team at a time. - 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. - TleParameters: - type: object - properties: - ephemerisType: - type: integer - description: Integer specifying TLE ephemeris type - format: uint32 - classificationType: - type: string - description: User-defined free-text message classification/caveats of this TLE - noradCatId: - type: integer - description: 'Norad catalog number: integer up to nine digits.' - format: uint32 - elementSetNo: - type: integer - format: uint32 - revAtEpoch: - type: integer - description: 'Optional: revolution number' - format: uint32 - bstar: - type: number - description: Drag parameter for SGP-4 in units 1 / Earth radii - format: double - bterm: - type: number - description: Drag parameter for SGP4-XP in units m^2 / kg - format: double - meanMotionDot: - type: number - description: First time derivative of mean motion in rev / day^2 - format: double - meanMotionDdot: - type: number - description: Second time derivative of mean motion in rev / day^3. For use with SGP or PPT3. - format: double - agom: - type: number - description: Solar radiation pressure coefficient A_gamma / m in m^2 / kg. For use with SGP4-XP. - format: double - Tracked: - type: object - properties: - trackQualityWrapper: - type: integer - description: Quality score, 0-15, nil if none - format: int32 - sensorHits: - type: integer - description: Sensor hits aggregation on the tracked entity. - format: int32 - numberOfObjects: - allOf: - - $ref: '#/components/schemas/UInt32Range' - description: |- - Estimated number of objects or units that are represented by this entity. Known as Strength in certain contexts (Link16) - if UpperBound == LowerBound; (strength = LowerBound) - If both UpperBound and LowerBound are defined; strength is between LowerBound and UpperBound (represented as string "Strength: 4-5") - If UpperBound is defined only (LowerBound unset), Strength ≤ UpperBound - If LowerBound is defined only (UpperBound unset), LowerBound ≤ Strength - 0 indicates unset. - radarCrossSection: - type: number - 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 - detected. The unit is “decibels per square meter,” or dBsm - format: double - lastMeasurementTime: - type: string - description: Timestamp of the latest tracking measurement for this entity. - format: date-time - lineOfBearing: - allOf: - - $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. - 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. - TrackedBy: - type: object - properties: - activelyTrackingSensors: - allOf: - - $ref: '#/components/schemas/Sensors' - description: |- - Sensor details of the tracking entity's sensors that were active and tracking the tracked entity. This may be - a subset of the total sensors available on the tracking entity. - lastMeasurementTimestamp: - type: string - description: Latest time that any sensor in actively_tracking_sensors detected the tracked entity. - format: date-time - description: |- - Describes the relationship between the entity being tracked ("tracked entity") and the entity that is - performing the tracking ("tracking entity"). - TransponderCodes: - type: object - properties: - mode1: - type: integer - description: The mode 1 code assigned to military assets. - format: uint32 - mode2: - type: integer - description: The Mode 2 code assigned to military assets. - format: uint32 - mode3: - type: integer - description: The Mode 3 code assigned by ATC to the asset. - format: uint32 - mode4InterrogationResponse: - enum: - - INTERROGATION_RESPONSE_INVALID - - INTERROGATION_RESPONSE_CORRECT - - INTERROGATION_RESPONSE_INCORRECT - - INTERROGATION_RESPONSE_NO_RESPONSE - type: string - description: The validity of the response from the Mode 4 interrogation. - format: enum - mode5: - allOf: - - $ref: '#/components/schemas/Mode5' - description: The Mode 5 transponder codes. - modeS: - allOf: - - $ref: '#/components/schemas/ModeS' - description: The Mode S transponder codes. - description: A message describing any transponder codes associated with Mode 1, 2, 3, 4, 5, S interrogations. - UInt32Range: - type: object - properties: - lowerBound: - type: integer - format: uint32 - upperBound: - type: integer - format: uint32 - VisualDetails: - type: object - properties: - rangeRings: - allOf: - - $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. -tags: - - name: EntityManagerRestAPI diff --git a/protos/anduril/entitymanager/v1/entity.pub.proto b/protos/anduril/entitymanager/v1/entity.pub.proto deleted file mode 100644 index b94067b..0000000 --- a/protos/anduril/entitymanager/v1/entity.pub.proto +++ /dev/null @@ -1,379 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -import "anduril/entitymanager/v1/classification.pub.proto"; -import "anduril/entitymanager/v1/dimensions.pub.proto"; -import "anduril/entitymanager/v1/geoentity.pub.proto"; -import "anduril/entitymanager/v1/group.pub.proto"; -import "anduril/entitymanager/v1/health_status.pub.proto"; -import "anduril/entitymanager/v1/location.pub.proto"; -import "anduril/entitymanager/v1/media.pub.proto"; -import "anduril/entitymanager/v1/ontology.pub.proto"; -import "anduril/entitymanager/v1/options.pub.proto"; -import "anduril/entitymanager/v1/orbit.pub.proto"; -import "anduril/entitymanager/v1/payloads.pub.proto"; -import "anduril/entitymanager/v1/power.pub.proto"; -import "anduril/entitymanager/v1/relationship.pub.proto"; -import "anduril/entitymanager/v1/route_details.pub.proto"; -import "anduril/entitymanager/v1/schedule.pub.proto"; -import "anduril/entitymanager/v1/sensors.pub.proto"; -import "anduril/entitymanager/v1/signal.pub.proto"; -import "anduril/entitymanager/v1/supplies.pub.proto"; -import "anduril/entitymanager/v1/target_priority.pub.proto"; -import "anduril/entitymanager/v1/transponder_codes.pub.proto"; -import "anduril/entitymanager/v1/types.pub.proto"; -import "anduril/tasks/v2/catalog.pub.proto"; -import "anduril/type/color.pub.proto"; -import "google/protobuf/timestamp.proto"; -import "google/protobuf/wrappers.proto"; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "EntityProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -// The entity object represents a single known object within the Lattice operational environment. It contains -// all data associated with the entity, such as its name, ID, and other relevant components. -message Entity { - // A Globally Unique Identifier (GUID) for your entity. If this field is empty, the Entity Manager API - // automatically generates an ID when it creates the entity. - string entity_id = 1; - // A human-readable entity description that's helpful for debugging purposes and human - // traceability. If this field is empty, the Entity Manager API generates one for you. - string description = 2; - // Indicates the entity is active and should have a lifecycle state of CREATE or UPDATE. - // Set this field to true when publishing an entity. - bool is_live = 3; - // The time when the entity was first known to the entity producer. If this field is empty, the Entity Manager API uses the - // current timestamp of when the entity is first received. - // For example, when a drone is first powered on, it might report its startup time as the created time. - // The timestamp doesn't change for the lifetime of an entity. - google.protobuf.Timestamp created_time = 4; - // Future time that expires an entity and updates the is_live flag. - // For entities that are constantly updating, the expiry time also updates. - // In some cases, this may differ from is_live. - // Example: Entities with tasks exported to an external system must remain - // active even after they expire. - // This field is required when publishing a prepopulated entity. - // The expiry time must be in the future, but less than 30 days from the current time. - google.protobuf.Timestamp expiry_time = 5 [(anduril.entitymanager.v1.overridable) = true]; - // Human-readable descriptions of what the entity is currently doing. - Status status = 19; - // Geospatial data related to the entity, including its position, kinematics, and orientation. - Location location = 6; - // Indicates uncertainty of the entity's position and kinematics. - LocationUncertainty location_uncertainty = 15; - // Geospatial representation of the entity, including entities that cover an area rather than a fixed point. - GeoShape geo_shape = 23; - // Additional details on what the geospatial area or point represents, along with visual display details. - GeoDetails geo_details = 24; - // Entity name displayed in the Lattice UI side panel. Also includes identifiers that other systems can use to reference the same entity. - Aliases aliases = 7; - // If this entity is tracked by another entity, this component contains data related to how it's being tracked. - Tracked tracked = 8; - // If this entity has been correlated or decorrelated to another one, this component contains information on the correlation or decorrelation. - Correlation correlation = 47; - // View of the entity. - MilView mil_view = 10; - // Ontology defines an entity's categorization in Lattice, and improves data retrieval and integration. Builds a standardized representation of the entity. - Ontology ontology = 11; - // Details an entity's available sensors. - Sensors sensors = 20; - // Details an entity's available payloads. - Payloads payloads = 21; - // Details the entity's power source. - PowerState power_state = 30; - // The primary data source provenance for this entity. - Provenance provenance = 12; - // Provenance of override data. - Overrides overrides = 13; - // Describes an entity's specific characteristics and the operations that can be performed on the entity. - // For example, "simulated" informs the operator that the entity is from a simulation, and "deletable" - // informs the operator (and system) that the delete operation is valid against the entity. - Indicators indicators = 14; - // The prioritization associated with an entity, such as if it's a threat or a high-value target. - TargetPriority target_priority = 22; - // Describes an entity's signal characteristics, primarily used when an entity is a signal of interest. - Signal signal = 25; - // A message describing any transponder codes associated with Mode 1, 2, 3, 4, 5, S interrogations. These are related to ADS-B modes. - TransponderCodes transponder_codes = 26; - // Describes an entity's security classification levels at an overall classification level and on a per - // field level. - Classification data_classification = 29; - // A catalog of tasks that can be performed by an entity. - anduril.tasks.v2.TaskCatalog task_catalog = 31 [(anduril.entitymanager.v1.overridable) = true]; - // Media associated with an entity, such as videos, images, or thumbnails. - Media media = 32; - // The relationships between this entity and other entities in the common operational picture (COP). - Relationships relationships = 33; - // Visual details associated with the display of an entity in the client. - VisualDetails visual_details = 34; - // Physical dimensions of the entity. - Dimensions dimensions = 36; - // Additional information about an entity's route. - RouteDetails route_details = 37; - // Schedules associated with this entity. - Schedules schedules = 38; - // Health metrics or connection status reported by the entity. - Health health = 39; - // Details for the group associated with this entity. - GroupDetails group_details = 40; - // Contains relevant supply information for the entity, such as fuel. - Supplies supplies = 42; - // Orbit information for space objects. - Orbit orbit = 46; - - reserved 9, 16, 17, 18, 27, 28, 41, 43; - reserved "correlated", "original_data", "geopolygon", "contact", "team_status", "no_expiry"; -} - -// Contains status of entities. -message Status { - // A string that describes the activity that the entity is performing. - // Examples include "RECONNAISSANCE", "INTERDICTION", "RETURN TO BASE (RTB)", "PREPARING FOR LAUNCH". - string platform_activity = 1; - // A human-readable string that describes the role the entity is currently performing. E.g. "Team Member", "Commander". - string role = 2; -} - -// Available for any Entities with alternate ids in other systems. -message Aliases { - repeated AlternateId alternate_ids = 1 [(anduril.entitymanager.v1.overridable) = true]; - // The best available version of the entity's display name. - string name = 2 [(anduril.entitymanager.v1.overridable) = true]; -} - -// Available for Entities that are tracked. -message Tracked { - // Quality score, 0-15, nil if none - google.protobuf.Int32Value track_quality_wrapper = 2; - // Sensor hits aggregation on the tracked entity. - google.protobuf.Int32Value sensor_hits = 3; - // Estimated number of objects or units that are represented by this entity. Known as Strength in certain contexts (Link16) - // if UpperBound == LowerBound; (strength = LowerBound) - // If both UpperBound and LowerBound are defined; strength is between LowerBound and UpperBound (represented as string "Strength: 4-5") - // If UpperBound is defined only (LowerBound unset), Strength ≤ UpperBound - // If LowerBound is defined only (UpperBound unset), LowerBound ≤ Strength - // 0 indicates unset. - UInt32Range number_of_objects = 4; - // 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 - // detected. The unit is “decibels per square meter,” or dBsm - google.protobuf.DoubleValue radar_cross_section = 6; - // Timestamp of the latest tracking measurement for this entity. - google.protobuf.Timestamp last_measurement_time = 7; - // 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. - // For this entity (A), being tracked by some entity (B), this LineOfBearing would express a ray from B to A. - LineOfBearing line_of_bearing = 9; - - reserved 1, 5, 8; - reserved "track_quality", "sensor_details", "relative_position"; -} - -// Data provenance. -message Provenance { - // Name of the integration that produced this entity - string integration_name = 5; - // Source data type of this entity. Examples: ADSB, Link16, etc. - string data_type = 6; - // An ID that allows an element from a source to be uniquely identified - string source_id = 3; - // The time, according to the source system, that the data in the entity was last modified. Generally, this should - // be the time that the source-reported time of validity of the data in the entity. This field must be - // updated with every change to the entity or else Entity Manager will discard the update. - google.protobuf.Timestamp source_update_time = 2; - // Description of the modification source. In the case of a user this is the email address. - string source_description = 4; - - reserved 1; -} - -// Indicators to describe entity to consumers. -message Indicators { - google.protobuf.BoolValue simulated = 1; - google.protobuf.BoolValue exercise = 2; - google.protobuf.BoolValue emergency = 3; - google.protobuf.BoolValue c2 = 4; - // Indicates the Entity should be egressed to external sources. - // Integrations choose how the egressing happens (e.g. if an Entity needs fuzzing). - google.protobuf.BoolValue egressable = 6 [(anduril.entitymanager.v1.overridable) = true]; - // A signal of arbitrary importance such that the entity should be globally marked for all users - google.protobuf.BoolValue starred = 7 [(anduril.entitymanager.v1.overridable) = true]; - reserved 5; - reserved "deletable"; -} - -// Metadata about entity overrides present. -message Overrides { - repeated Override override = 2; - reserved 1; - reserved "provenance"; -} - -// Details about an override. Last write wins. -message Override { - // override request id for an override request - string request_id = 1; - // proto field path which is the string representation of a field. - // example: correlated.primary_entity_id would be primary_entity_id in correlated component - string field_path = 2; - // new field value corresponding to field path. In the shape of an empty entity with only the changed value. - // example: entity: { mil_view: { disposition: Disposition_DISPOSITION_HOSTILE } } - Entity masked_field_value = 3; - // status of the override - OverrideStatus status = 4; - Provenance provenance = 5; - // The type of the override, defined by the stage of the entity lifecycle that the entity was in when the override - // was requested. - OverrideType type = 6; - // Timestamp of the override request. The timestamp is generated by the Entity Manager instance that receives the request. - google.protobuf.Timestamp request_timestamp = 7; -} - -// An alternate id for an Entity. -message AlternateId { - string id = 2; - AltIdType type = 3; - reserved 1; - reserved "source"; -} - -// Visual details associated with the display of an entity in the client. -message VisualDetails { - // The range rings to display around an entity. - RangeRings range_rings = 1 [(anduril.entitymanager.v1.overridable) = true]; -} - -// Range rings allow visual assessment of map distance at varying zoom levels. -message RangeRings { - // The minimum range ring distance, specified in meters. - google.protobuf.DoubleValue min_distance_m = 1; - // The maximum range ring distance, specified in meters. - google.protobuf.DoubleValue max_distance_m = 2; - // The count of range rings. - uint32 ring_count = 3; - // The color of range rings, specified in hex string. - anduril.type.Color ring_line_color = 4; -} - -// Available for Entities that are a correlated (N to 1) set of entities. This will be present on -// each entity in the set. -message Correlation { - // If an entity is correlated, it is either the primary or a secondary. - // DEPRECATED - Use membership instead. - oneof correlation { - // This entity is the primary of a correlation meaning that it serves as the representative - // entity of the correlation set. - PrimaryCorrelation primary = 1; - // This entity is a secondary of a correlation meaning that it will be represented by the - // primary of the correlation set. - SecondaryCorrelation secondary = 2; - } - // If present, this entity is a part of a correlation set. - CorrelationMembership membership = 4; - // If present, this entity was explicitly decorrelated from one or more entities. - // An entity can be both correlated and decorrelated as long as they are disjoint sets. - // An example would be if a user in the UI decides that two tracks are not actually the - // same despite an automatic correlator having correlated them. The user would then - // decorrelate the two tracks and this decorrelation would be preserved preventing the - // correlator from re-correlating them at a later time. - Decorrelation decorrelation = 3; -} - -message PrimaryCorrelation { - // The secondary entity IDs part of this correlation. - repeated string secondary_entity_ids = 1; -} - -message SecondaryCorrelation { - // The primary of this correlation. - string primary_entity_id = 1; - // Metadata about the correlation. - CorrelationMetadata metadata = 2; -} - -message CorrelationMembership { - // The ID of the correlation set this entity belongs to. - string correlation_set_id = 1; - // If an entity is correlated, it may or may not be the primary. - oneof membership { - // This entity is the primary of a correlation set meaning that it serves as the representative - // entity of the correlation set. - PrimaryMembership primary = 2; - // This entity is not the primary of the correlation set. Note that there may not - // be a primary at all. - NonPrimaryMembership non_primary = 3; - } - // Additional metadata on this correlation. - CorrelationMetadata metadata = 4; -} - -message PrimaryMembership {} - -message NonPrimaryMembership {} - -message Decorrelation { - // This will be specified if this entity was decorrelated against all other entities. - DecorrelatedAll all = 1; - // A list of decorrelated entities that have been explicitly decorrelated against this entity - // which prevents lower precedence correlations from overriding it in the future. - // For example, if an operator in the UI decorrelated tracks A and B, any automated - // correlators would be unable to correlate them since manual decorrelations have - // higher precedence than automatic ones. Precedence is determined by both correlation - // type and replication mode. - repeated DecorrelatedSingle decorrelated_entities = 2; -} - -message DecorrelatedAll { - // Metadata about the decorrelation. - CorrelationMetadata metadata = 1; -} - -message DecorrelatedSingle { - // The entity that was decorrelated against. - string entity_id = 1; - // Metadata about the decorrelation. - CorrelationMetadata metadata = 2; -} - -message CorrelationMetadata { - // Who or what added this entity to the (de)correlation. - Provenance provenance = 1; - // Indicates how the correlation will be distributed. Because a correlation is composed of - // multiple secondaries, each of which may have been correlated with different replication - // modes, the distribution of the correlation is composed of distributions of the individual - // entities within the correlation set. - // For example, if there are two secondary entities A and B correlated against a primary C, - // with A having been correlated globally and B having been correlated locally, then the - // correlation set that is distributed globally than what is known locally in the node. - CorrelationReplicationMode replication_mode = 2; - // What type of (de)correlation was this entity added with. - CorrelationType type = 3; -} - -// The type of correlation indicating how it was made. -enum CorrelationType { - CORRELATION_TYPE_INVALID = 0; - // The correlation was made manually by a human. - // Manual is higher precedence than automated assuming the same replication mode. - CORRELATION_TYPE_MANUAL = 1; - // The correlation was automatically made by a service or some other automated process. - // Automated is lower precedence than manual assuming the same replication mode. - CORRELATION_TYPE_AUTOMATED = 2; -} - -// The replication mode of the correlation indicating how the correlation will be replication to -// other nodes in the mesh. -enum CorrelationReplicationMode { - CORRELATION_REPLICATION_MODE_INVALID = 0; - // The correlation is local only to the originating node and will not be distributed to other - // nodes in the mesh. In the case of conflicts, this correlation will override ones coming from - // other nodes. Local is always higher precedence than global regardless of the correlation type. - CORRELATION_REPLICATION_MODE_LOCAL = 1; - // The correlation is distributed globally across all nodes in the mesh. Because an entity can - // only be part of one correlation, this is based on last-write-wins semantics, however, the - // correlation will also be stored locally in the originating node preventing any overrides. - // Global is always lower precedence than local regardless of the correlation type. - CORRELATION_REPLICATION_MODE_GLOBAL = 2; -} diff --git a/protos/anduril/entitymanager/v1/entity_manager_grpcapi.pub.proto b/protos/anduril/entitymanager/v1/entity_manager_grpcapi.pub.proto deleted file mode 100644 index a217edf..0000000 --- a/protos/anduril/entitymanager/v1/entity_manager_grpcapi.pub.proto +++ /dev/null @@ -1,184 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -import "anduril/entitymanager/v1/entity.pub.proto"; -import "anduril/entitymanager/v1/filter.pub.proto"; -import "anduril/entitymanager/v1/rate_limit.pub.proto"; -import "anduril/entitymanager/v1/types.pub.proto"; -import "google/protobuf/timestamp.proto"; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "EntityManagerApiProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -// Entity Manager manages the lifecycle of the entities that comprise the common operational picture (COP). -// -// Every object in the COP is represented as an "Entity." Each Entity is essentially an ID, with a lifecycle -// and a collection of data components. Each data component is a separate protobuf message definition. -// -// Entity Manager provides a way to query the currently live set of entities within a set of filter constraints, -// as well as a limited set of management APIs to change the grouping or relationships between entities. -service EntityManagerAPI { - // Create or update an entity and get a response confirming whether the Entity Manager API succesfully processes - // the entity. Ideal for testing environments. - // When publishing an entity, only your integration can modify or delete that entity; other sources, such as the - // UI or other integrations, can't. If you're pushing entity updates so fast that your publish task can't keep - // up with your update rate (a rough estimate of >= 1 Hz), use the PublishEntities request instead. - rpc PublishEntity(PublishEntityRequest) returns (PublishEntityResponse); - // Create or update one or more entities rapidly using PublishEntities, which doesn't return error messages - // for invalid entities or provide server feedback. When publishing entities, only your integration can - // modify or delete those entities; other sources, such as the UI or other integrations, can't. - // When you use PublishEntities, you gain higher throughput at the expense of receiving no server responses or - // validation. In addition, due to gRPC stream mechanics, you risk losing messages queued on the outgoing gRPC - // buffer if the stream connection is lost prior to the messages being sent. If you need validation responses, - // are developing in testing environments, or have lower entity update rates, use PublishEntity. - rpc PublishEntities(stream PublishEntitiesRequest) returns (PublishEntitiesResponse); - // Get an entity using its entityId. - rpc GetEntity(GetEntityRequest) returns (GetEntityResponse); - // Override an Entity Component. An override is a definitive change to entity data. Any authorized user of service - // can override overridable components on any entity. Only fields marked with overridable can be overridden. - // When setting an override, the user or service setting the override is asserting that they are certain of the change - // and the truth behind it. - rpc OverrideEntity(OverrideEntityRequest) returns (OverrideEntityResponse); - // Remove an override for an Entity component. - rpc RemoveEntityOverride(RemoveEntityOverrideRequest) returns (RemoveEntityOverrideResponse); - // Returns a stream of entities with specified components populated. - rpc StreamEntityComponents(StreamEntityComponentsRequest) returns (stream StreamEntityComponentsResponse); -} - -//--------------------// -// Request / Response // -//--------------------// - -message PublishEntityRequest { - // Create or update an entity. - // Required fields: - // * entity_id: Unique string identifier. Can be a Globally Unique Identifier (GUID). - // * expiry_time: Expiration time that must be greater than the current time and less than 30 days in the future. The Entities API will reject any entity update with an expiry_time in the past. When the expiry_time has passed, the Entities API will delete the entity from the COP and send a DELETE event. - // * is_live: Boolean that when true, creates or updates the entity. If false and the entity is still live, triggers a DELETE event. - // * provenance.integration_name: String that uniquely identifies the integration responsible for publishing the entity. - // * provenance.data_type. - // * provenance.source_update_time. This can be earlier than the RPC call if the data entered is older. - // * aliases.name: Human-readable string that represents the name of an entity. - // * ontology.template - // For additional required fields that are determined by template, see com.anduril.entitymanager.v1.Template. - // if an entity_id is provided, Entity Manager updates the entity. If no entity_id is provided, it creates an entity. - Entity entity = 1; -} - -message PublishEntityResponse {} - -message PublishEntitiesRequest { - // Sends a stream of entity objects to create or update. - // Each entity requires the following fields: - // * entity_id: Unique string identifier. Can be a Globally Unique Identifier (GUID). - // * expiry_time: Expiration time that must be greater than the current time and less than 30 days in the future. The Entities API will reject any entity update with an expiry_time in the past. When the expiry_time has passed, the Entities API will delete the entity from the COP and send a DELETE event. - // * is_live: Boolean that when true, creates or updates the entity. If false and the entity is still live, triggers a DELETE event. - // * provenance.integration_name: String that uniquely identifies the integration responsible for publishing the entity. - // * provenance.data_type. - // * provenance.source_update_time. This can be earlier than the RPC call if the data entered is older. - // * aliases.name: Human-readable string that represents the name of an entity. - // * ontology.template - // For additional required fields that are determined by template, see com.anduril.entitymanager.v1.Template. - // If an entity_id is provided, the entity updates. If no entity_id is provided, the entity is created. - Entity entity = 1; -} - -// After the stream closes, the server returns an empty message indicating success. The server will silently -// drop invalid entities from the client stream. The client must reopen the stream if it's canceled due to -// an End of File (EOF) or timeout. -message PublishEntitiesResponse {} - -message GetEntityRequest { - // The GUID of this entity to query. - string entity_id = 1; -} - -message GetEntityResponse { - // An Entity object that corresponds with the requested entityId. - Entity entity = 1; -} - -message OverrideEntityRequest { - // The entity containing the overridden fields. The service will extract the overridable fields from the entity - // object and ignore any other fields. - Entity entity = 1; - // The field paths that will be extracted from the Entity and saved as an override. Only fields marked overridable can - // be overridden. - repeated string field_path = 2; - // Additional information about the source of the override. - Provenance provenance = 3; -} - -message OverrideEntityResponse { - // The status of the override request. - OverrideStatus status = 1; -} - -message RemoveEntityOverrideRequest { - // The entity ID that the override will be removed from. - string entity_id = 1; - // The field paths to remove from the override store for the provided entityId. - repeated string field_path = 2; -} - -// void response but with placeholder for future optional fields. -message RemoveEntityOverrideResponse {} - -message StreamEntityComponentsRequest { - // lower_snake_case component names to include in response events, e.g. location. Only included components will - // populate. - repeated string components_to_include = 1; - // Subscribe to all components. This should only be used in cases where you want all components. - // Setting both components_to_include and include_all_components is invalid and will be rejected. - bool include_all_components = 2; - // The root node of a statement filter "tree". - // If provided, only entities matching the filter criteria will be streamed. The filter is applied dynamically so if a - // new entity matches, it will be included, and if an entity updates to no longer match, it will be excluded. - Statement filter = 3; - // Optional rate-limiting / down-sampling parameters, see RateLimit message for details. - RateLimit rate_limit = 4; - // The period (in milliseconds) at which a Heartbeat message will be sent on the - // message stream. If this field is set to 0 then no Heartbeat messages are sent. - uint32 heartbeat_period_millis = 5; - // Subscribe to a finite stream of preexisting events which closes when there are no additional pre-existing events to - // process. Respects the filter specified on the StreamEntityComponentsRequest. - bool preexisting_only = 6; -} - -// response stream will be fed all matching pre-existing live entities as CREATED, plus any new events ongoing. -message StreamEntityComponentsResponse { - EntityEvent entity_event = 1; - Heartbeat heartbeat = 2; -} - -// Event representing some type of entity change. -message EntityEvent { - EventType event_type = 1; - google.protobuf.Timestamp time = 2; - Entity entity = 3; -} - -// The type of entity event. -enum EventType { - EVENT_TYPE_INVALID = 0; - // entity was created. - EVENT_TYPE_CREATED = 1; - // entity was updated. - EVENT_TYPE_UPDATE = 2; - // entity was deleted. - EVENT_TYPE_DELETED = 3; - // entity already existed, but sent on a new stream connection. - EVENT_TYPE_PREEXISTING = 4; - // entity override was set after the entity expiration. - EVENT_TYPE_POST_EXPIRY_OVERRIDE = 5; -} - -// A message that is periodically sent on the stream for keep-alive behaviour. -message Heartbeat { - // The timestamp at which the heartbeat message was sent. - google.protobuf.Timestamp timestamp = 1; -} diff --git a/protos/anduril/entitymanager/v1/filter.pub.proto b/protos/anduril/entitymanager/v1/filter.pub.proto deleted file mode 100644 index a15ec4f..0000000 --- a/protos/anduril/entitymanager/v1/filter.pub.proto +++ /dev/null @@ -1,244 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -import "anduril/entitymanager/v1/geoentity.pub.proto"; -import "anduril/entitymanager/v1/location.pub.proto"; -import "google/protobuf/timestamp.proto"; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "FilterProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -// A Statement is the building block of the entity filter. The outermost statement is conceptually -// the root node of an "expression tree" which allows for the construction of complete boolean -// logic statements. Statements are formed by grouping sets of children statement(s) or predicate(s) -// according to the boolean operation which is to be applied. -// -// For example, the criteria "take an action if an entity is hostile and an air vehicle" can be -// represented as: Statement1: { AndOperation: { Predicate1, Predicate2 } }. Where Statement1 -// is the root of the expression tree, with an AND operation that is applied to children -// predicates. The predicates themselves encode "entity is hostile" and "entity is air vehicle." -message Statement { - oneof operation { - AndOperation and = 1; - OrOperation or = 2; - NotOperation not = 3; - ListOperation list = 4; - Predicate predicate = 5; - } -} - -// The AndOperation represents the boolean AND operation, which is to be applied to the list of -// children statement(s) or predicate(s). -message AndOperation { - oneof children { - PredicateSet predicate_set = 1; - StatementSet statement_set = 2; - } -} - -// The OrOperation represents the boolean OR operation, which is to be applied to the list of -// children statement(s) or predicate(s). -message OrOperation { - oneof children { - PredicateSet predicate_set = 1; - StatementSet statement_set = 2; - } -} - -// The NotOperation represents the boolean NOT operation, which can only be applied to a single -// child predicate or statement. -message NotOperation { - oneof child { - Predicate predicate = 1; - Statement statement = 2; - } -} - -// The ListOperation represents an operation against a proto list. If the list is of primitive proto -// type (e.g. int32), paths in all child predicates should be left empty. If the list is of message -// proto type (e.g. Sensor), paths in all child predicates should be relative to the list path. -// -// For example, the criteria "take an action if an entity has any sensor with sensor_id='sensor' and -// OperationalState=STATE_OFF" would be modeled as: -// Predicate1: { path: "sensor_id", comparator: EQUAL_TO, value: "sensor" } -// Predicate2: { path: "operational_state", comparator: EQUAL_TO, value: STATE_OFF } -// -// Statement2: { AndOperation: PredicateSet: { , } } -// ListOperation: { list_path: "sensors.sensors", list_comparator: ANY, statement: } -// Statement1: { ListOperation: } -// -// Note that in the above, the child predicates of the list operation have paths relative to the -// list_path because the list is comprised of message not primitive types. -message ListOperation { - // The list_path specifies the repeated field on an entity to which this operation applies. - string list_path = 1; - // The list_comparator specifies how to compose the boolean results from the child statement - // for each member of the specified list. - ListComparator list_comparator = 2; - // The statement is a new expression tree conceptually rooted at type of the list. It determines - // how each member of the list is evaluated. - Statement statement = 3; -} - -// The PredicateSet represents a list of predicates or "leaf nodes" in the expression tree, which -// can be directly evaluated to a boolean TRUE/FALSE result. -message PredicateSet { - repeated Predicate predicates = 1; -} - -// The StatementSet represents a list of statements or "tree nodes," each of which follow the same -// behavior as the Statement proto message. -message StatementSet { - repeated Statement statements = 1; -} - -// The Predicate fully encodes the information required to make an evaluation of an entity field -// against a given static value, resulting in a boolean TRUE/FALSE result. The structure of a -// predicate will always follow: "{entity-value} {comparator} {fixed-value}" where the entity value -// is determined by the field path. -// -// For example, a predicate would read as: "{entity.location.velocity_enu} {LESS_THAN} {500kph}" -message Predicate { - // The field_path determines which field on an entity is being referenced in this predicate. For - // example: correlated.primary_entity_id would be primary_entity_id in correlated component. - string field_path = 1; - // The value determines the fixed value against which the entity field is to be compared. - // In the case of COMPARATOR_MATCH_ALL, the value contents do not matter as long as the Value is a supported - // type. - Value value = 2; - // The comparator determines the manner in which the entity field and static value are compared. - // Comparators may only be applied to certain values. For example, the WITHIN comparator cannot - // be used for a boolean value comparison. - Comparator comparator = 3; -} - -// The Comparator specifies the set of supported comparison operations. It also provides the -// mapping information about which comparators are supported for which values. Services that wish -// to implement entity filters must provide validation functionality to strictly enforce these -// mappings. -enum Comparator { - COMPARATOR_INVALID = 0; - // Comparators for: boolean, numeric, string, enum, position, timestamp, positions, and bounded shapes. - COMPARATOR_MATCH_ALL = 11; - // Comparators for: boolean, numeric, string, enum, position, and timestamp. - COMPARATOR_EQUALITY = 1; - COMPARATOR_IN = 9; - // Comparators for: numeric, string, and timestamp. - COMPARATOR_LESS_THAN = 2; - COMPARATOR_GREATER_THAN = 3; - COMPARATOR_LESS_THAN_EQUAL_TO = 4; - COMPARATOR_GREATER_THAN_EQUAL_TO = 5; - // Comparators for: positions and bounded shapes. - COMPARATOR_WITHIN = 6; - // Comparators for: existential checks. - // TRUE if path to field exists (parent message is present), and either: - // 1. the field is a primitive: all values including default pass check. - // 2. the field is a message and set/present. - // 3. the field is repeated or map with size > 0. - // FALSE unless path exists and one of the above 3 conditions is met - COMPARATOR_EXISTS = 7; - // Comparator for string type only. - COMPARATOR_CASE_INSENSITIVE_EQUALITY = 8; - COMPARATOR_CASE_INSENSITIVE_EQUALITY_IN = 10; - // Comparators for range types only. - // Closed (inclusive endpoints) [a, b] - COMPARATOR_RANGE_CLOSED = 12; -} - -// The ListComparator determines how to compose statement evaluations for members of a list. For -// example, if ANY_OF is specified, the ListOperation in which the ListComparator is embedded -// will return TRUE if any of the values in the list returns true for the ListOperation's child -// statement. -enum ListComparator { - LIST_COMPARATOR_INVALID = 0; - LIST_COMPARATOR_ANY_OF = 1; -} - -// The Value represents the information against which an entity field is evaluated. It is one of -// a fixed set of types, each of which correspond to specific comparators. See "ComparatorType" -// for the full list of Value <-> Comparator mappings. -message Value { - oneof type { - BooleanType boolean_type = 1; - NumericType numeric_type = 2; - StringType string_type = 3; - EnumType enum_type = 4; - TimestampType timestamp_type = 5; - BoundedShapeType bounded_shape_type = 6; - PositionType position_type = 7; - HeadingType heading_type = 8; - ListType list_type = 9; - RangeType range_type = 10; - } -} - -// The BooleanType represents a static boolean value. -message BooleanType { - bool value = 1; -} - -// The NumericType represents static numeric values. It supports all numeric primitives supported -// by the proto3 language specification. -message NumericType { - oneof value { - double double_value = 1; - float float_value = 2; - int32 int32_value = 3; - int64 int64_value = 4; - uint32 uint32_value = 5; - uint64 uint64_value = 6; - } -} - -// The StringType represents static string values. -message StringType { - string value = 1; -} - -// The EnumType represents members of well-known anduril ontologies, such as "disposition." When -// such a value is specified, the evaluation library expects the integer representation of the enum -// value. For example, a disposition derived from ontology.v1 such as "DISPOSITION_HOSTILE" should be -// represented with the integer value 2. -message EnumType { - int32 value = 1; -} - -// A List of Values for use with the IN comparator. -message ListType { - repeated Value values = 1; -} - -// The TimestampType represents a static timestamp value. -message TimestampType { - google.protobuf.Timestamp value = 1; -} - -// The PositionType represents any fixed LLA point in space. -message PositionType { - Position value = 1; -} - -// The BoundedShapeType represents any static fully-enclosed shape. -message BoundedShapeType { - oneof value { - GeoPolygon polygon_value = 1; - } -} - -// The HeadingType represents the heading in degrees for an entity's -// attitudeEnu quaternion to be compared against. Defaults between a range of 0 to 360 -message HeadingType { - int32 value = 1; -} - -// The RangeType represents a numeric range. -// Whether endpoints are included are based on the comparator used. -// Both endpoints must be of the same numeric type. -message RangeType { - NumericType start = 1; - NumericType end = 2; -} diff --git a/protos/anduril/entitymanager/v1/filter_dynamic.pub.proto b/protos/anduril/entitymanager/v1/filter_dynamic.pub.proto deleted file mode 100644 index bf48949..0000000 --- a/protos/anduril/entitymanager/v1/filter_dynamic.pub.proto +++ /dev/null @@ -1,62 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -import "anduril/entitymanager/v1/filter.pub.proto"; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "FilterDynamicProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -// A DynamicStatement is the building block of a "runtime aware" entity filter - that is, any filter -// which needs to perform operations against a series of entities that will need to be evaluated against -// on demand. The DynamicStatement allows you to perform a set intersection operation across a static -// set of entities dictated by a filter, and a dynamic set of entities dictated by a selector statement. -// -// For example, the expression "find me all hostile entities that reside within any assumed -// friendly geoentity" would be represented as the following dynamic statement: -// -// DynamicStatement -// filter -// predicate -// field_path: mil_view.disposition -// comparator: EQUALITY -// value: 2 // Hostile -// selector -// andOperation -// predicate1 -// field_path: mil_view.disposition -// comparator: EQUALITY -// value: 4 // Assumed Friendly -// predicate2 -// field_path: ontology.template -// comparator: EQUALITY -// value: 4 // Template Geo -// comparator -// IntersectionComparator -// WithinComparison -message DynamicStatement { - // The filter statement is used to determine which entities can be compared to the dynamic series - // of entities aggregated by the selector statement. - Statement filter = 1; - // The selector statement is used to determine which entities should be a part of dynamically - // changing set. The selector should be reevaluated as entites are created or deleted. - Statement selector = 2; - // The comparator specifies how the set intersection operation will be performed. - IntersectionComparator comparator = 3; -} - -// The IntersectionComparator determines what entities and what fields to respect within a set during -// a set intersection operation. -message IntersectionComparator { - oneof comparison { - WithinComparison within_comparison = 1; - } -} - -// The WithinComparison implicitly will understand how to determine which entitites reside -// within other geo-shaped entities. This comparison is being left empty, but as a proto, to -// support future expansions of the within comparison (eg; within range of a static distance). -message WithinComparison {} diff --git a/protos/anduril/entitymanager/v1/geoentity.pub.proto b/protos/anduril/entitymanager/v1/geoentity.pub.proto deleted file mode 100644 index 00e61cd..0000000 --- a/protos/anduril/entitymanager/v1/geoentity.pub.proto +++ /dev/null @@ -1,149 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -import "anduril/entitymanager/v1/location.pub.proto"; -import "google/protobuf/wrappers.proto"; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "GeoentityProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -// A component that describes a geo-entity. -message GeoDetails { - GeoType type = 1; - oneof type_details { - ControlAreaDetails control_area = 5; - ACMDetails acm = 6; - } - - reserved 2, 3, 4, 7; - reserved "emergency", "visual_details", "fscm", "mcm"; -} - -// The type of geo entity. -enum GeoType { - GEO_TYPE_INVALID = 0; - GEO_TYPE_GENERAL = 1; - GEO_TYPE_HAZARD = 2; - GEO_TYPE_EMERGENCY = 3; - // Engagement zones allow for engaging an entity if it comes within the zone of another entity. - GEO_TYPE_ENGAGEMENT_ZONE = 5; - GEO_TYPE_CONTROL_AREA = 6; - GEO_TYPE_BULLSEYE = 7; - // Airspace Coordinating Measure - GEO_TYPE_ACM = 8; - - reserved 4, 9; -} - -// Determines the type of control area being represented by the geo-entity, -// in which an asset can, or cannot, operate. -message ControlAreaDetails { - ControlAreaType type = 1; -} - -message ACMDetails { - ACMDetailType acm_type = 1; - // Used for loosely typed associations, such as assignment to a specific fires unit. - // Limit to 150 characters. - string acm_description = 2; -} - -enum ControlAreaType { - CONTROL_AREA_TYPE_INVALID = 0; - CONTROL_AREA_TYPE_KEEP_IN_ZONE = 1; - CONTROL_AREA_TYPE_KEEP_OUT_ZONE = 2; - // The zone for an autonomous asset to nose-dive into - // when its assignment has been concluded. - CONTROL_AREA_TYPE_DITCH_ZONE = 3; - // The area where an asset is able to loiter. - CONTROL_AREA_TYPE_LOITER_ZONE = 7; -} - -enum ACMDetailType { - ACM_DETAIL_TYPE_INVALID = 0; - // The zone that the autonomous asset is configured to land in. - ACM_DETAIL_TYPE_LANDING_ZONE = 16; -} - -// A component that describes the shape of a geo-entity. -message GeoShape { - // point, line_string, and polygon are convertible as a subset of GeoJSON - oneof shape { - GeoPoint point = 1; - GeoLine line = 2; - GeoPolygon polygon = 3; - GeoEllipse ellipse = 4; - GeoEllipsoid ellipsoid = 5; - } -} - -// A point shaped geo-entity. -// See https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.2 -message GeoPoint { - Position position = 1; -} - -// A line shaped geo-entity. -// See https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.4 -message GeoLine { - repeated Position positions = 1; -} - -// A polygon shaped geo-entity. -// See https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.6, only canonical representations accepted -message GeoPolygon { - // An array of LinearRings where the first item is the exterior ring and subsequent items are interior rings. - repeated LinearRing rings = 1; - // An extension hint that this polygon is a rectangle. When true this implies several things: - // * exactly 1 linear ring with 5 points (starting corner, 3 other corners and start again) - // * each point has the same altitude corresponding with the plane of the rectangle - // * each point has the same height (either all present and equal, or all not present) - bool is_rectangle = 2; -} - -// An ellipse shaped geo-entity. -// For a circle, the major and minor axis would be the same values. -// This shape is NOT Geo-JSON compatible. -message GeoEllipse { - // Defines the distance from the center point of the ellipse to the furthest distance on the perimeter in meters. - google.protobuf.DoubleValue semi_major_axis_m = 2; - // Defines the distance from the center point of the ellipse to the shortest distance on the perimeter in meters. - google.protobuf.DoubleValue semi_minor_axis_m = 3; - // The orientation of the semi-major relative to true north in degrees from clockwise: 0-180 due to symmetry across the semi-minor axis. - google.protobuf.DoubleValue orientation_d = 4; - // Optional height above entity position to extrude in meters. A non-zero value creates an elliptic cylinder - google.protobuf.DoubleValue height_m = 5; -} - -// An ellipsoid shaped geo-entity. -// Principal axis lengths are defined in entity body space -// This shape is NOT Geo-JSON compatible. -message GeoEllipsoid { - // Defines the distance from the center point to the surface along the forward axis - google.protobuf.DoubleValue forward_axis_m = 1; - // Defines the distance from the center point to the surface along the side axis - google.protobuf.DoubleValue side_axis_m = 2; - // Defines the distance from the center point to the surface along the up axis - google.protobuf.DoubleValue up_axis_m = 3; -} - -// A closed ring of points. The first and last point must be the same. -message LinearRing { - repeated GeoPolygonPosition positions = 2; - - reserved 1; -} - -// A position in a GeoPolygon with an optional extruded height. -message GeoPolygonPosition { - // base position. if no altitude set, its on the ground. - Position position = 1; - // optional height above base position to extrude in meters. - // for a given polygon, all points should have a height or none of them. - // strictly GeoJSON compatible polygons will not have this set. - google.protobuf.FloatValue height_m = 2; -} diff --git a/protos/anduril/entitymanager/v1/group.pub.proto b/protos/anduril/entitymanager/v1/group.pub.proto deleted file mode 100644 index 83a18cb..0000000 --- a/protos/anduril/entitymanager/v1/group.pub.proto +++ /dev/null @@ -1,45 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "GroupProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -// Details related to grouping for this entity -message GroupDetails { - oneof group_type { - Team team = 1; - Echelon echelon = 3; - } -} - -// Describes a Team group type. Comprised of autonomous entities where an entity -// in a Team can only be a part of a single Team at a time. -message Team {} - -// Describes a Echelon group type. Comprised of entities which are members of the -// same unit or echelon. Ex: A group of tanks within a armored company or that same company -// as a member of a battalion. -message Echelon { - oneof echelon_type { - ArmyEchelon army_echelon = 1; - } -} - -// Military units defined by the Army. -enum ArmyEchelon { - ARMY_ECHELON_INVALID = 0; - ARMY_ECHELON_FIRE_TEAM = 1; // Smallest unit group, e.g., a few soldiers - ARMY_ECHELON_SQUAD = 2; // E.g., a group of fire teams - ARMY_ECHELON_PLATOON = 3; // E.g., several squads - ARMY_ECHELON_COMPANY = 4; // E.g., several platoons - ARMY_ECHELON_BATTALION = 5; // E.g., several companies - ARMY_ECHELON_REGIMENT = 6; // E.g., several battalions - ARMY_ECHELON_BRIGADE = 7; // E.g., several regiments or battalions - ARMY_ECHELON_DIVISION = 8; // E.g., several brigades - ARMY_ECHELON_CORPS = 9; // E.g., several divisions - ARMY_ECHELON_ARMY = 10; // E.g., several corps -} diff --git a/protos/anduril/entitymanager/v1/health_status.pub.proto b/protos/anduril/entitymanager/v1/health_status.pub.proto deleted file mode 100644 index f9c4acd..0000000 --- a/protos/anduril/entitymanager/v1/health_status.pub.proto +++ /dev/null @@ -1,127 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -import "google/protobuf/timestamp.proto"; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "EntityHealthStatusProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -// Enumeration of possible connection states. -enum ConnectionStatus { - CONNECTION_STATUS_INVALID = 0; - CONNECTION_STATUS_ONLINE = 1; - CONNECTION_STATUS_OFFLINE = 2; -} - -// Enumeration of possible health states. -enum HealthStatus { - HEALTH_STATUS_INVALID = 0; - // Indicates that the component is operating as intended. - HEALTH_STATUS_HEALTHY = 1; - // Indicates that the component is at risk of transitioning into a HEALTH_STATUS_FAIL - // state or that the component is operating in a degraded state. - HEALTH_STATUS_WARN = 2; - // Indicates that the component is not functioning as intended. - HEALTH_STATUS_FAIL = 3; - // Indicates that the component is offline. - HEALTH_STATUS_OFFLINE = 4; - // Indicates that the component is not yet functioning, but it is transitioning into a - // HEALTH_STATUS_HEALTHY state. A component should only report this state temporarily. - HEALTH_STATUS_NOT_READY = 5; -} - -// A message describing the component's health status. -message ComponentMessage { - // The status associated with this message. - HealthStatus status = 1; - - // The human-readable content of the message. - string message = 2; -} - -// Health of an individual component. -message ComponentHealth { - // Consistent internal ID for this component. - string id = 1; - - // Display name for this component. - string name = 2; - - // Health for this component. - HealthStatus health = 3; - - // Human-readable describing the component state. These messages should be understandable by end users. - repeated ComponentMessage messages = 4; - - // The last update time for this specific component. - // If this timestamp is unset, the data is assumed to be most recent - google.protobuf.Timestamp update_time = 5; -} - -// General health of the entity as reported by the entity. -message Health { - // Status indicating whether the entity is able to communicate with Entity Manager. - ConnectionStatus connection_status = 1; - - // Top-level health status; typically a roll-up of individual component healths. - HealthStatus health_status = 2; - - // Health of individual components running on this Entity. - repeated ComponentHealth components = 3; - - // The update time for the top-level health information. - // If this timestamp is unset, the data is assumed to be most recent - google.protobuf.Timestamp update_time = 4; - - // Active alerts indicate a critical change in system state sent by the asset - // that must be made known to an operator or consumer of the common operating picture. - // Alerts are different from ComponentHealth messages--an active alert does not necessarily - // indicate a component is in an unhealthy state. For example, an asset may trigger - // an active alert based on fuel levels running low. Alerts should be removed from this list when their conditions - // are cleared. In other words, only active alerts should be reported here. - repeated Alert active_alerts = 5; -} - -// An alert informs operators of critical events related to system performance and mission -// execution. An alert is produced as a result of one or more alert conditions. -message Alert { - // Short, machine-readable code that describes this alert. This code is intended to provide systems off-asset - // with a lookup key to retrieve more detailed information about the alert. - string alert_code = 1; - // Human-readable description of this alert. The description is intended for display in the UI for human - // understanding and should not be used for machine processing. If the description is fixed and the vehicle controller - // provides no dynamic substitutions, then prefer lookup based on alert_code. - string description = 2; - // Alert level (Warning, Caution, or Advisory). - AlertLevel level = 3; - // Time at which this alert was activated. - google.protobuf.Timestamp activated_time = 4; - // Set of conditions which have activated this alert. - repeated AlertCondition active_conditions = 5; -} - -// Alerts are categorized into one of three levels - Warnings, Cautions, and Advisories (WCAs). -enum AlertLevel { - ALERT_LEVEL_INVALID = 0; - // For conditions that require awareness and may require subsequent response. - ALERT_LEVEL_ADVISORY = 1; - // For conditions that require immediate awareness and subsequent response. - ALERT_LEVEL_CAUTION = 2; - // For conditions that require immediate awareness and response. - ALERT_LEVEL_WARNING = 3; -} - -// A condition which may trigger an alert. -message AlertCondition { - // Short, machine-readable code that describes this condition. This code is intended to provide systems off-asset - // with a lookup key to retrieve more detailed information about the condition. - string condition_code = 1; - // Human-readable description of this condition. The description is intended for display in the UI for human - // understanding and should not be used for machine processing. If the description is fixed and the vehicle controller - // provides no dynamic substitutions, then prefer lookup based on condition_code. - string description = 2; -} diff --git a/protos/anduril/entitymanager/v1/location.pub.proto b/protos/anduril/entitymanager/v1/location.pub.proto deleted file mode 100644 index 31b4982..0000000 --- a/protos/anduril/entitymanager/v1/location.pub.proto +++ /dev/null @@ -1,100 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -import "anduril/type/coords.pub.proto"; -import "google/protobuf/wrappers.proto"; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "LocationProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -// Available for Entities that have a single or primary Location. -message Location { - // see Position definition for details. - Position position = 1; - // Velocity in an ENU reference frame centered on the corresponding position. All units are meters per second. - anduril.type.ENU velocity_enu = 2; - // Speed is the magnitude of velocity_enu vector [sqrt(e^2 + n^2 + u^2)] when present, measured in m/s. - google.protobuf.DoubleValue speed_mps = 5; - // The entity's acceleration in meters/s^2. - anduril.type.ENU acceleration = 4; - // quaternion to translate from entity body frame to it's ENU frame - anduril.type.Quaternion attitude_enu = 3; -} - -// WGS84 position. Position includes four altitude references. -// The data model does not currently support Mean Sea Level (MSL) references, -// such as the Earth Gravitational Model 1996 (EGM-96) and the Earth Gravitational Model 2008 (EGM-08). -// If the only altitude reference available to your integration is MSL, convert it to -// Height Above Ellipsoid (HAE) and populate the altitude_hae_meters field. -message Position { - // WGS84 geodetic latitude in decimal degrees. - double latitude_degrees = 1; - // WGS84 longitude in decimal degrees. - double longitude_degrees = 2; - // altitude as height above ellipsoid (WGS84) in meters. DoubleValue wrapper is used to distinguish optional from - // default 0. - google.protobuf.DoubleValue altitude_hae_meters = 3; - // Altitude as AGL (Above Ground Level) if the upstream data source has this value set. This value represents the - // entity's height above the terrain. This is typically measured with a radar altimeter or by using a terrain tile - // set lookup. If the value is not set from the upstream, this value is not set. - google.protobuf.DoubleValue altitude_agl_meters = 4; - // 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 - // not set. - google.protobuf.DoubleValue altitude_asf_meters = 5; - // The depth of the entity from the surface of the water through sensor measurements based on differential pressure - // between the interior and exterior of the vessel. If the value is not set from the upstream, this value is not set. - google.protobuf.DoubleValue pressure_depth_meters = 6; -} - -// Uncertainty of entity position and velocity, if available. -message LocationUncertainty { - // Positional covariance represented by the upper triangle of the covariance matrix. It is valid to populate - // only the diagonal of the matrix if the full covariance matrix is unknown. - TMat3 position_enu_cov = 1; - // Velocity covariance represented by the upper triangle of the covariance matrix. It is valid to populate - // only the diagonal of the matrix if the full covariance matrix is unknown. - TMat3 velocity_enu_cov = 2; - // An ellipse that describes the certainty probability and error boundary for a given geolocation. - ErrorEllipse position_error_ellipse = 3; -} - -// Indicates ellipse characteristics and probability that an entity lies within the defined ellipse. -message ErrorEllipse { - // Defines the probability in percentage that an entity lies within the given ellipse: 0-1. - google.protobuf.DoubleValue probability = 1; - // Defines the distance from the center point of the ellipse to the furthest distance on the perimeter in meters. - google.protobuf.DoubleValue semi_major_axis_m = 2; - // Defines the distance from the center point of the ellipse to the shortest distance on the perimeter in meters. - google.protobuf.DoubleValue semi_minor_axis_m = 3; - // The orientation of the semi-major relative to true north in degrees from clockwise: 0-180 due to symmetry across the semi-minor axis. - google.protobuf.DoubleValue orientation_d = 4; -} - -message Pose { - // Geospatial location defined by this Pose. - Position pos = 1; - // The quaternion to transform a point in the Pose frame to the ENU frame. The Pose frame could be Body, Turret, - // etc and is determined by the context in which this Pose is used. - // The normal convention for defining orientation is to list the frames of transformation, for example - // att_gimbal_to_enu is the quaternion which transforms a point in the gimbal frame to the body frame, but - // in this case we truncate to att_enu because the Pose frame isn't defined. A potentially better name for this - // field would have been att_pose_to_enu. - // - // Implementations of this quaternion should left multiply this quaternion to transform a point from the Pose frame - // to the enu frame. - anduril.type.Quaternion orientation = 2; -} - -// Symmetric 3d matrix only representing the upper right triangle. -message TMat3 { - float mxx = 1; - float mxy = 2; - float mxz = 3; - float myy = 4; - float myz = 5; - float mzz = 6; -} diff --git a/protos/anduril/entitymanager/v1/media.pub.proto b/protos/anduril/entitymanager/v1/media.pub.proto deleted file mode 100644 index 5a6abd0..0000000 --- a/protos/anduril/entitymanager/v1/media.pub.proto +++ /dev/null @@ -1,32 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -import "anduril/entitymanager/v1/options.pub.proto"; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "MediaProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -// Media associated with an entity. -message Media { - repeated MediaItem media = 1 [(anduril.entitymanager.v1.overridable) = true]; -} - -message MediaItem { - MediaType type = 2; - // The path, relative to the environment base URL, where media related to an entity can be accessed - string relative_path = 3; - - reserved 1; -} - -enum MediaType { - MEDIA_TYPE_INVALID = 0; - MEDIA_TYPE_IMAGE = 2; - MEDIA_TYPE_VIDEO = 3; - - reserved 1, 4; -} diff --git a/protos/anduril/entitymanager/v1/ontology.pub.proto b/protos/anduril/entitymanager/v1/ontology.pub.proto deleted file mode 100644 index 72605a8..0000000 --- a/protos/anduril/entitymanager/v1/ontology.pub.proto +++ /dev/null @@ -1,33 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -import "anduril/entitymanager/v1/options.pub.proto"; -import "anduril/entitymanager/v1/types.pub.proto"; -import "anduril/ontology/v1/type.pub.proto"; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "OntologyProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -// Provides the disposition, environment, and nationality of an Entity. -message MilView { - anduril.ontology.v1.Disposition disposition = 1 [(anduril.entitymanager.v1.overridable) = true]; - anduril.ontology.v1.Environment environment = 2 [(anduril.entitymanager.v1.overridable) = true]; - anduril.ontology.v1.Nationality nationality = 3 [(anduril.entitymanager.v1.overridable) = true]; -} - -// Ontology of the entity. -message Ontology { - // A string that describes the entity's high-level type with natural language. - string platform_type = 3 [(anduril.entitymanager.v1.overridable) = true]; - // A string that describes the entity's exact model or type. - string specific_type = 4 [(anduril.entitymanager.v1.overridable) = true]; - // The template used when creating this entity. Specifies minimum required components. - Template template = 2; - - reserved 1; - reserved "descriptors"; -} diff --git a/protos/anduril/entitymanager/v1/options.pub.proto b/protos/anduril/entitymanager/v1/options.pub.proto deleted file mode 100644 index 98bd4a0..0000000 --- a/protos/anduril/entitymanager/v1/options.pub.proto +++ /dev/null @@ -1,15 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -import "google/protobuf/descriptor.proto"; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "OptionsProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -extend google.protobuf.FieldOptions { - bool overridable = 1001; -} diff --git a/protos/anduril/entitymanager/v1/orbit.pub.proto b/protos/anduril/entitymanager/v1/orbit.pub.proto deleted file mode 100644 index b72ff51..0000000 --- a/protos/anduril/entitymanager/v1/orbit.pub.proto +++ /dev/null @@ -1,16 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -import "anduril/type/orbit.pub.proto"; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "OrbitProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -message Orbit { - // Orbit Mean Elements data, analogous to the Orbit Mean Elements Message in CCSDS 502.0-B-3 - anduril.type.OrbitMeanElements orbit_mean_elements = 1; -} diff --git a/protos/anduril/entitymanager/v1/payloads.pub.proto b/protos/anduril/entitymanager/v1/payloads.pub.proto deleted file mode 100644 index 38700e3..0000000 --- a/protos/anduril/entitymanager/v1/payloads.pub.proto +++ /dev/null @@ -1,47 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -import "anduril/entitymanager/v1/options.pub.proto"; -import "anduril/ontology/v1/type.pub.proto"; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "PayloadsProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -// List of payloads available for an entity. -message Payloads { - repeated Payload payload_configurations = 1 [(anduril.entitymanager.v1.overridable) = true]; -} - -// Individual payload configuration. -message Payload { - PayloadConfiguration config = 1; -} - -message PayloadConfiguration { - // Identifying ID for the capability. - // This ID may be used multiple times to represent payloads that are the same capability but have different operational states - string capability_id = 1; - // The number of payloads currently available in the configuration. - uint32 quantity = 4; - // The target environments the configuration is effective against. - repeated anduril.ontology.v1.Environment effective_environment = 5; - // The operational state of this payload. - PayloadOperationalState payload_operational_state = 6; - // A human readable description of the payload - string payload_description = 7; -} - -// Describes the current operational state of a payload configuration. -enum PayloadOperationalState { - PAYLOAD_OPERATIONAL_STATE_INVALID = 0; - PAYLOAD_OPERATIONAL_STATE_OFF = 1; - PAYLOAD_OPERATIONAL_STATE_NON_OPERATIONAL = 2; - PAYLOAD_OPERATIONAL_STATE_DEGRADED = 3; - PAYLOAD_OPERATIONAL_STATE_OPERATIONAL = 4; - PAYLOAD_OPERATIONAL_STATE_OUT_OF_SERVICE = 5; - PAYLOAD_OPERATIONAL_STATE_UNKNOWN = 6; -} diff --git a/protos/anduril/entitymanager/v1/power.pub.proto b/protos/anduril/entitymanager/v1/power.pub.proto deleted file mode 100644 index 3bb0087..0000000 --- a/protos/anduril/entitymanager/v1/power.pub.proto +++ /dev/null @@ -1,80 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -import "google/protobuf/wrappers.proto"; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "PowerProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -// Represents the state of power sources connected to this entity. -message PowerState { - // This is a map where the key is a unique id of the power source and the value is additional information about the - // power source. - map source_id_to_state = 5; - - reserved 1, 2, 3, 4; -} - -// Represents the state of a single power source that is connected to this entity. -message PowerSource { - // Status of the power source. - PowerStatus power_status = 1; - // Used to determine the type of power source. - PowerType power_type = 2; - // Power level of the system. If absent, the power level is assumed to be unknown. - PowerLevel power_level = 3; - // Set of human-readable messages with status of the power system. Typically this would be used in an error state - // to provide additional error information. This can also be used for informational messages. - repeated string messages = 4; - // Whether the power source is offloadable. If the value is missing (as opposed to false) then the entity does not - // report whether the power source is offloadable. - google.protobuf.BoolValue offloadable = 5; -} - -enum PowerStatus { - POWER_STATUS_INVALID = 0; - // Indeterminate condition of whether the power system is present or absent. - POWER_STATUS_UNKNOWN = 1; - // Power system is not configured/present. This is considered a normal/expected condition, as opposed to the - // system is expected to be present but is missing. - POWER_STATUS_NOT_PRESENT = 2; - // Power system is present and operating normally. - POWER_STATUS_OPERATING = 3; - // Power system is present and is in an expected disabled state. For example, if the generator was shut off for - // operational reasons. - POWER_STATUS_DISABLED = 4; - // Power system is non-functional. - POWER_STATUS_ERROR = 5; -} - -enum PowerType { - POWER_TYPE_INVALID = 0; - POWER_TYPE_UNKNOWN = 1; - POWER_TYPE_GAS = 2; - POWER_TYPE_BATTERY = 3; -} - -// Represents the power level of a system. -message PowerLevel { - // Total power capacity of the system. - float capacity = 1; - // Remaining power capacity of the system. - float remaining = 2; - // Percent of power remaining. - float percent_remaining = 3; - // Voltage of the power source subsystem, as reported by the power source. If the source does not report this value - // this field will be null. - google.protobuf.DoubleValue voltage = 4; - // Current in amps of the power source subsystem, as reported by the power source. If the source does not - // report this value this field will be null. - google.protobuf.DoubleValue current_amps = 5; - // Estimated minutes until empty. Calculated with consumption at the moment, as reported by the power source. If the source does not - // report this value this field will be null. - google.protobuf.DoubleValue run_time_to_empty_mins = 6; - // Fuel consumption rate in liters per second. - google.protobuf.DoubleValue consumption_rate_l_per_s = 7; -} diff --git a/protos/anduril/entitymanager/v1/rate_limit.pub.proto b/protos/anduril/entitymanager/v1/rate_limit.pub.proto deleted file mode 100644 index 2e8e391..0000000 --- a/protos/anduril/entitymanager/v1/rate_limit.pub.proto +++ /dev/null @@ -1,21 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "RateLimitProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -// rate-limiting / down-sampling parameters. -message RateLimit { - // Specifies a minimum duration in milliseconds after an update for a given entity before another one - // will be sent for the same entity. - // A value of 0 is treated as unset. If set, value must be >= 500. - // Example: if set to 1000, and 4 events occur (ms since start) at T0, T500, T900, T2100, then - // event from T0 will be sent at T0, T500 will be dropped, T900 will be sent at minimum of T1000, - // and T2100 will be sent on time (2100) - // This will only limit updates, other events will be sent immediately, with a delete clearing anything held - uint32 update_per_entity_limit_ms = 1; -} diff --git a/protos/anduril/entitymanager/v1/relationship.pub.proto b/protos/anduril/entitymanager/v1/relationship.pub.proto deleted file mode 100644 index 61a8262..0000000 --- a/protos/anduril/entitymanager/v1/relationship.pub.proto +++ /dev/null @@ -1,66 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -import "anduril/entitymanager/v1/sensors.pub.proto"; -import "google/protobuf/timestamp.proto"; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "RelationshipProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -// The relationships between this entity and other entities in the common operational picture. -message Relationships { - repeated Relationship relationships = 1; -} - -// The relationship component indicates a relationship to another entity. -message Relationship { - // The entity ID to which this entity is related. - string related_entity_id = 1; - // A unique identifier for this relationship. Allows removing or updating relationships. - string relationship_id = 2; - // The relationship type - RelationshipType relationship_type = 3; -} - -// Determines the type of relationship between this entity and another. -message RelationshipType { - oneof type { - TrackedBy tracked_by = 2; - GroupChild group_child = 4; - GroupParent group_parent = 5; - MergedFrom merged_from = 6; - ActiveTarget active_target = 7; - } -} - -// Describes the relationship between the entity being tracked ("tracked entity") and the entity that is -// performing the tracking ("tracking entity"). -message TrackedBy { - // Sensor details of the tracking entity's sensors that were active and tracking the tracked entity. This may be - // a subset of the total sensors available on the tracking entity. - Sensors actively_tracking_sensors = 1; - // Latest time that any sensor in actively_tracking_sensors detected the tracked entity. - google.protobuf.Timestamp last_measurement_timestamp = 2; -} - -// A GroupChild relationship is a uni-directional relationship indicating that (1) this entity -// represents an Entity Group and (2) the related entity is a child member of this group. The presence of this -// relationship alone determines that the type of group is an Entity Group. -message GroupChild {} - -// A GroupParent relationship is a uni-directional relationship indicating that this entity is a member of -// the Entity Group represented by the related entity. The presence of this relationship alone determines that -// the type of group that this entity is a member of is an Entity Group. -message GroupParent {} - -// A MergedFrom relationship is a uni-directional relationship indicating that this entity is a merged entity whose -// data has at least partially been merged from the related entity. -message MergedFrom {} - -// A target relationship is the inverse of TrackedBy; a one-way relation -// from sensor to target, indicating track(s) currently prioritized by a robot. -message ActiveTarget {} diff --git a/protos/anduril/entitymanager/v1/route_details.pub.proto b/protos/anduril/entitymanager/v1/route_details.pub.proto deleted file mode 100644 index cf2f791..0000000 --- a/protos/anduril/entitymanager/v1/route_details.pub.proto +++ /dev/null @@ -1,18 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -import "google/protobuf/timestamp.proto"; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "RouteDetailsProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -message RouteDetails { - // Free form text giving the name of the entity's destination - string destination_name = 1; - // Estimated time of arrival at destination - google.protobuf.Timestamp estimated_arrival_time = 2; -} diff --git a/protos/anduril/entitymanager/v1/schedule.pub.proto b/protos/anduril/entitymanager/v1/schedule.pub.proto deleted file mode 100644 index 56a6a54..0000000 --- a/protos/anduril/entitymanager/v1/schedule.pub.proto +++ /dev/null @@ -1,46 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "ScheduleProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -// Schedules associated with this entity -message Schedules { - repeated Schedule schedules = 1; -} - -// A Schedule associated with this entity -message Schedule { - // expression that represents this schedule's "ON" state - repeated CronWindow windows = 1; - // A unique identifier for this schedule. - string schedule_id = 2; - // The schedule type - ScheduleType schedule_type = 3; -} - -message CronWindow { - // in UTC, describes when and at what cadence this window starts, in the quartz flavor of cron - // - // examples: - // This schedule is begins at 7:00:00am UTC everyday between Monday and Friday - // 0 0 7 ? * MON-FRI * - // This schedule begins every 5 minutes starting at 12:00:00pm UTC until 8:00:00pm UTC everyday - // 0 0/5 12-20 * * ? * - // This schedule begins at 12:00:00pm UTC on March 2nd 2023 - // 0 0 12 2 3 ? 2023 - string cron_expression = 1; - // describes the duration - uint64 duration_millis = 2; -} - -// The type of Schedule. -enum ScheduleType { - SCHEDULE_TYPE_INVALID = 0; - SCHEDULE_TYPE_ZONE_ENABLED = 1; - SCHEDULE_TYPE_ZONE_TEMP_ENABLED = 2; -} diff --git a/protos/anduril/entitymanager/v1/sensors.pub.proto b/protos/anduril/entitymanager/v1/sensors.pub.proto deleted file mode 100644 index 974b392..0000000 --- a/protos/anduril/entitymanager/v1/sensors.pub.proto +++ /dev/null @@ -1,139 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -import "anduril/entitymanager/v1/location.pub.proto"; -import "anduril/entitymanager/v1/signal.pub.proto"; -import "google/protobuf/timestamp.proto"; -import "google/protobuf/wrappers.proto"; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "SensorsProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -// List of sensors available for an entity. -message Sensors { - repeated Sensor sensors = 1; -} - -// Individual sensor configuration. -message Sensor { - // This generally is used to indicate a specific type at a more detailed granularity. E.g. COMInt or LWIR - string sensor_id = 1; - OperationalState operational_state = 3; - // The type of sensor - SensorType sensor_type = 5; - // A human readable description of the sensor - string sensor_description = 6; - // RF configuration details of the sensor - RFConfiguration rf_configuraton = 7; - // Time of the latest detection from the sensor - google.protobuf.Timestamp last_detection_timestamp = 8; - // Multiple fields of view for a single sensor component - repeated FieldOfView fields_of_view = 9; - - reserved 4; -} - -// Sensor Field Of View closely resembling fov.proto SensorFieldOfView. -message FieldOfView { - // The Id for one instance of a FieldOfView, persisted across multiple updates to provide continuity during - // smoothing. This is relevant for sensors where the dwell schedule is on the order of - // milliseconds, making multiple FOVs a requirement for proper display of search beams. - int32 fov_id = 1; - // The Id of the mount the sensor is on. - string mount_id = 2; - // The field of view the sensor projected onto the ground. - ProjectedFrustum projected_frustum = 3; - // Center ray of the frustum projected onto the ground. - Position projected_center_ray = 4; - // The origin and direction of the center ray for this sensor relative to the ENU frame. A ray which is aligned with - // the positive X axis in the sensor frame will be transformed into the ray along the sensor direction in the ENU - // frame when transformed by the quaternion contained in this pose. - Pose center_ray_pose = 5; - // Horizontal field of view in radians. - float horizontal_fov = 6; - // Vertical field of view in radians. - float vertical_fov = 7; - // Sensor range in meters. - google.protobuf.FloatValue range = 8; - // The mode that this sensor is currently in, used to display for context in the UI. Some sensors can emit multiple - // sensor field of views with different modes, for example a radar can simultaneously search broadly and perform - // tighter bounded tracking. - SensorMode mode = 9; -} - -// Represents a frustum in which which all four corner points project onto the ground. All points in this message -// are optional, if the projection to the ground fails then they will not be populated. -message ProjectedFrustum { - // Upper left point of the frustum. - Position upper_left = 1; - // Upper right point of the frustum. - Position upper_right = 2; - // Bottom right point of the frustum. - Position bottom_right = 3; - // Bottom left point of the frustum. - Position bottom_left = 4; -} - -// Represents RF configurations supported on this sensor. -message RFConfiguration { - // Frequency ranges that are available for this sensor. - repeated FrequencyRange frequency_range_hz = 3; - // Bandwidth ranges that are available for this sensor. - repeated BandwidthRange bandwidth_range_hz = 4; - - reserved 1, 2; -} - -// A component that describes the min and max bandwidths of a sensor -message BandwidthRange { - Bandwidth minimum_bandwidth = 1; - Bandwidth maximum_bandwidth = 2; -} - -// Describes the bandwidth of a signal -message Bandwidth { - google.protobuf.DoubleValue bandwidth_hz = 1; -} - -// Describes the current operational state of a system. -enum OperationalState { - OPERATIONAL_STATE_INVALID = 0; - // sensor exists but is deliberately turned off - OPERATIONAL_STATE_OFF = 1; - // sensor is not operational but some reason other than being "Off" (e.g., equipment malfunction) - OPERATIONAL_STATE_NON_OPERATIONAL = 2; - // sensor is receiving information but in some reduced status (e.g., off calibration) - OPERATIONAL_STATE_DEGRADED = 3; - // fully functional - OPERATIONAL_STATE_OPERATIONAL = 4; - // sensor is being actively denied - OPERATIONAL_STATE_DENIED = 5; -} - -// Enumerates the possible sensor modes which were active for this sensor field of view. -enum SensorMode { - SENSOR_MODE_INVALID = 0; - SENSOR_MODE_SEARCH = 1; - SENSOR_MODE_TRACK = 2; - SENSOR_MODE_WEAPON_SUPPORT = 3; - SENSOR_MODE_AUTO = 4; - SENSOR_MODE_MUTE = 5; -} - -enum SensorType { - SENSOR_TYPE_INVALID = 0; - SENSOR_TYPE_RADAR = 1; - SENSOR_TYPE_CAMERA = 2; - SENSOR_TYPE_TRANSPONDER = 3; - SENSOR_TYPE_RF = 4; - SENSOR_TYPE_GPS = 5; - SENSOR_TYPE_PTU_POS = 6; - SENSOR_TYPE_PERIMETER = 8; - SENSOR_TYPE_SONAR = 9; - - reserved 7; -} diff --git a/protos/anduril/entitymanager/v1/signal.pub.proto b/protos/anduril/entitymanager/v1/signal.pub.proto deleted file mode 100644 index ba59898..0000000 --- a/protos/anduril/entitymanager/v1/signal.pub.proto +++ /dev/null @@ -1,135 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -import "anduril/entitymanager/v1/options.pub.proto"; -import "anduril/type/coords.pub.proto"; -import "google/protobuf/wrappers.proto"; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "SignalProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -// A component that describes an entity's signal characteristics. -message Signal { - // Indicates either a frequency range or a center frequency of this signal. - oneof frequency_measurement { - Frequency frequency_center = 1 [(anduril.entitymanager.v1.overridable) = true]; - FrequencyRange frequency_range = 2 [(anduril.entitymanager.v1.overridable) = true]; - } - // Indicates the bandwidth of a signal (Hz). - google.protobuf.DoubleValue bandwidth_hz = 3 [(anduril.entitymanager.v1.overridable) = true]; - // Indicates the signal to noise (SNR) of this signal. - google.protobuf.DoubleValue signal_to_noise_ratio = 4; - // Indicates the signal report. - oneof report { - LineOfBearing line_of_bearing = 5; - Fixed fixed = 6; - } - // Emitter notations associated with this entity. - repeated EmitterNotation emitter_notations = 7 [(anduril.entitymanager.v1.overridable) = true]; - // length in time of a single pulse - google.protobuf.DoubleValue pulse_width_s = 8 [(anduril.entitymanager.v1.overridable) = true]; - // length in time between the start of two pulses - PulseRepetitionInterval pulse_repetition_interval = 9 [(anduril.entitymanager.v1.overridable) = true]; - // describes how a signal is observing the environment - ScanCharacteristics scan_characteristics = 11; - - reserved 10; -} - -// A representation of a single emitter notation. -message EmitterNotation { - string emitter_notation = 1; - // confidence as a percentage that the emitter notation in this component is accurate - google.protobuf.DoubleValue confidence = 2; -} - -// A component that describes some measured value with error. -message Measurement { - // The value of the measurement. - google.protobuf.DoubleValue value = 1; - // Estimated one standard deviation in same unit as the value. - google.protobuf.DoubleValue sigma = 2; -} - -// A component for describing frequency. -message Frequency { - // Indicates a frequency of a signal (Hz) with its standard deviation. - Measurement frequency_hz = 1; -} - -// A component to represent a frequency range. -message FrequencyRange { - // Indicates the lowest measured frequency of a signal (Hz). - Frequency minimum_frequency_hz = 1; - // Indicates the maximum measured frequency of a signal (Hz). - Frequency maximum_frequency_hz = 2; -} - -// A line of bearing of a signal. -message LineOfBearing { - // The direction pointing from this entity to the detection - AngleOfArrival angle_of_arrival = 3; - - // The range of the detection in the direction defined by the angle of arrival - oneof detection_range { - // The estimated distance of the detection - Measurement range_estimate_m = 4; - // The maximum distance of the detection - Measurement max_range_m = 5; - } - - reserved 1, 2; -} - -// The direction from which the signal is received -message AngleOfArrival { - // Origin (LLA) and attitude (relative to ENU) of a ray pointing towards the detection. The attitude represents a - // forward-left-up (FLU) frame where the x-axis (1, 0, 0) is pointing towards the target. - anduril.type.Pose relative_pose = 1; - - // Bearing/elevation covariance matrix where bearing is defined in radians CCW+ about the z-axis from the x-axis of FLU frame - // and elevation is positive down from the FL/XY plane. - // mxx = bearing variance in rad^2 - // mxy = bearing/elevation covariance in rad^2 - // myy = elevation variance in rad^2 - anduril.type.TMat2 bearing_elevation_covariance_rad2 = 2; -} - -// A fix of a signal. No extra fields but it is expected that location should be populated when using this report. -message Fixed {} - -// A component that describe the length in time between two pulses -message PulseRepetitionInterval { - Measurement pulse_repetition_interval_s = 1; -} - -// A component that describes the scanning characteristics of a signal -message ScanCharacteristics { - ScanType scan_type = 1; - google.protobuf.DoubleValue scan_period_s = 2; -} - -// Enumerates the possible scan types -enum ScanType { - SCAN_TYPE_INVALID = 0; - SCAN_TYPE_CIRCULAR = 1; - SCAN_TYPE_BIDIRECTIONAL_HORIZONTAL_SECTOR = 2; - SCAN_TYPE_BIDIRECTIONAL_VERTICAL_SECTOR = 3; - SCAN_TYPE_NON_SCANNING = 4; - SCAN_TYPE_IRREGULAR = 5; - SCAN_TYPE_CONICAL = 6; - SCAN_TYPE_LOBE_SWITCHING = 7; - SCAN_TYPE_RASTER = 8; - SCAN_TYPE_CIRCULAR_VERTICAL_SECTOR = 9; - SCAN_TYPE_CIRCULAR_CONICAL = 10; - SCAN_TYPE_SECTOR_CONICAL = 11; - SCAN_TYPE_AGILE_BEAM = 12; - SCAN_TYPE_UNIDIRECTIONAL_VERTICAL_SECTOR = 13; - SCAN_TYPE_UNIDIRECTIONAL_HORIZONTAL_SECTOR = 14; - SCAN_TYPE_UNIDIRECTIONAL_SECTOR = 15; - SCAN_TYPE_BIDIRECTIONAL_SECTOR = 16; -} diff --git a/protos/anduril/entitymanager/v1/supplies.pub.proto b/protos/anduril/entitymanager/v1/supplies.pub.proto deleted file mode 100644 index 4f3f216..0000000 --- a/protos/anduril/entitymanager/v1/supplies.pub.proto +++ /dev/null @@ -1,39 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -import "anduril/entitymanager/v1/classification.pub.proto"; -import "anduril/entitymanager/v1/options.pub.proto"; -import "google/protobuf/timestamp.proto"; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "SuppliesProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -// Represents the state of supplies associated with an entity (available but not in condition to use immediately) -message Supplies { - repeated Fuel fuel = 2 [(anduril.entitymanager.v1.overridable) = true]; -} - -// Fuel describes an entity's repository of fuels stores including current amount, operational requirements, and maximum authorized capacity -message Fuel { - // unique fuel identifier - string fuel_id = 1; - // long form name of the fuel source. - string name = 2; - // timestamp the information was reported - google.protobuf.Timestamp reported_date = 3; - // amount of gallons on hand - uint32 amount_gallons = 4; - // how much the asset is allowed to have available (in gallons) - uint32 max_authorized_capacity_gallons = 5; - // minimum required for operations (in gallons) - uint32 operational_requirement_gallons = 6; - // fuel in a single asset may have different levels of classification - // use case: fuel for a SECRET asset while diesel fuel may be UNCLASSIFIED - Classification data_classification = 7; - // source of information - string data_source = 8; -} diff --git a/protos/anduril/entitymanager/v1/target_priority.pub.proto b/protos/anduril/entitymanager/v1/target_priority.pub.proto deleted file mode 100644 index 0a4659a..0000000 --- a/protos/anduril/entitymanager/v1/target_priority.pub.proto +++ /dev/null @@ -1,49 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -import "anduril/entitymanager/v1/options.pub.proto"; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "TargetPriorityProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -// The target prioritization associated with an entity. -message TargetPriority { - // Describes the target priority in relation to high value target lists. - HighValueTarget high_value_target = 1 [(anduril.entitymanager.v1.overridable) = true]; - // Describes whether the entity should be treated as a threat - Threat threat = 2; -} - -// Describes whether something is a high value target or not. -message HighValueTarget { - // Indicates whether the target matches any description from a high value target list. - bool is_high_value_target = 1; - // The priority associated with the target. If the target's description appears on multiple high value target lists, - // the priority will be a reflection of the highest priority of all of those list's target description. - // - // A lower value indicates the target is of a higher priority, with 1 being the highest possible priority. A value of - // 0 indicates there is no priority associated with this target. - uint32 target_priority = 2; - // All of the high value target descriptions that the target matches against. - repeated HighValueTargetMatch target_matches = 3; - // Indicates whether the target is a 'High Payoff Target'. Targets can be one or both of high value and high payoff. - bool is_high_payoff_target = 4; -} - -message HighValueTargetMatch { - // The ID of the high value target list that matches the target description. - string high_value_target_list_id = 1; - // The ID of the specific high value target description within a high value target list that was matched against. - // The ID is considered to be a globally unique identifier across all high value target IDs. - string high_value_target_description_id = 2; -} - -// Describes whether an entity is a threat or not. -message Threat { - // Indicates that the entity has been determined to be a threat. - bool is_threat = 1; -} diff --git a/protos/anduril/entitymanager/v1/transponder_codes.pub.proto b/protos/anduril/entitymanager/v1/transponder_codes.pub.proto deleted file mode 100644 index e20f9e8..0000000 --- a/protos/anduril/entitymanager/v1/transponder_codes.pub.proto +++ /dev/null @@ -1,55 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -import "anduril/entitymanager/v1/options.pub.proto"; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "TransponderCodesProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -// A message describing any transponder codes associated with Mode 1, 2, 3, 4, 5, S interrogations. -message TransponderCodes { - // The mode 1 code assigned to military assets. - uint32 mode1 = 1 [(anduril.entitymanager.v1.overridable) = true]; - // The Mode 2 code assigned to military assets. - uint32 mode2 = 2 [(anduril.entitymanager.v1.overridable) = true]; - // The Mode 3 code assigned by ATC to the asset. - uint32 mode3 = 3 [(anduril.entitymanager.v1.overridable) = true]; - // The validity of the response from the Mode 4 interrogation. - InterrogationResponse mode4_interrogation_response = 4 [(anduril.entitymanager.v1.overridable) = true]; - // The Mode 5 transponder codes. - Mode5 mode5 = 5 [(anduril.entitymanager.v1.overridable) = true]; - // The Mode S transponder codes. - ModeS mode_s = 6 [(anduril.entitymanager.v1.overridable) = true]; -} - -// Describes the Mode 5 transponder interrogation status and codes. -message Mode5 { - // The validity of the response from the Mode 5 interrogation. - InterrogationResponse mode5_interrogation_response = 1; - // The Mode 5 code assigned to military assets. - uint32 mode5 = 2; - // The Mode 5 platform identification code. - uint32 mode5_platform_id = 3; -} - -// Describes the Mode S codes. -message ModeS { - // Mode S identifier which comprises of 8 alphanumeric characters. - string id = 1; - // The Mode S ICAO aircraft address. Expected values are between 1 and 16777214 decimal. The Mode S address is - // considered unique. - uint32 address = 2; -} - -// Indicates the interrogation status of a target. -enum InterrogationResponse { - // Note that INTERROGATION_INVALID indicates that the target has not been interrogated. - INTERROGATION_RESPONSE_INVALID = 0; - INTERROGATION_RESPONSE_CORRECT = 1; - INTERROGATION_RESPONSE_INCORRECT = 2; - INTERROGATION_RESPONSE_NO_RESPONSE = 3; -} diff --git a/protos/anduril/entitymanager/v1/types.pub.proto b/protos/anduril/entitymanager/v1/types.pub.proto deleted file mode 100644 index 1ef6e07..0000000 --- a/protos/anduril/entitymanager/v1/types.pub.proto +++ /dev/null @@ -1,129 +0,0 @@ -syntax = "proto3"; - -package anduril.entitymanager.v1; - -option csharp_namespace = "Anduril.Entitymanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "TypesProto"; -option java_package = "com.anduril.entitymanager.v1"; -option objc_class_prefix = "AEX"; - -// The type of alternate id. -enum AltIdType { - ALT_ID_TYPE_INVALID = 0; - // an Anduril trackId_2 - ALT_ID_TYPE_TRACK_ID_2 = 1; - // an Anduril trackId_1 - ALT_ID_TYPE_TRACK_ID_1 = 12; - // an Anduril Sensor Point of Interest ID - ALT_ID_TYPE_SPI_ID = 2; - // NITF file title - ALT_ID_TYPE_NITF_FILE_TITLE = 3; - // Track repo alert ID - ALT_ID_TYPE_TRACK_REPO_ALERT_ID = 4; - // an Anduril AssetId v2 - ALT_ID_TYPE_ASSET_ID = 5; - // Use for Link 16 track identifiers for non-JTIDS Unit entities. - ALT_ID_TYPE_LINK16_TRACK_NUMBER = 6; - // Use for Link 16 JTIDS Unit identifiers. - ALT_ID_TYPE_LINK16_JU = 7; - // an NCCT message ID - ALT_ID_TYPE_NCCT_MESSAGE_ID = 8; - // callsign for the entity. e.g. a TAK callsign or an aircraft callsign - ALT_ID_TYPE_CALLSIGN = 9; - // the Maritime Mobile Service Identity for a maritime object (vessel, offshore installation, etc.) - ALT_ID_TYPE_MMSI_ID = 10; - // A VMF URN that uniquely identifies the URN on the VMF network. - ALT_ID_TYPE_VMF_URN = 11; - // the International Maritime Organization number for identifying maritime objects (vessel, offshore installation, etc.) - ALT_ID_TYPE_IMO_ID = 13; - // A VMF target number that uniquely identifies the target on the VMF network - ALT_ID_TYPE_VMF_TARGET_NUMBER = 14; - // A serial number that uniquely identifies the entity and is permanently associated with only one entity. This - // identifier is assigned by some authority and only ever identifies a single thing. Examples include a - // Vehicle Identification Number (VIN) or ship hull identification number (hull number). This is a generalized - // component and should not be used if a more specific registration type is already defined (i.e., ALT_ID_TYPE_VMF_URN). - ALT_ID_TYPE_SERIAL_NUMBER = 15; - // A registration identifier assigned by a local or national authority. This identifier is not permanently fixed - // to one specific entity and may be reassigned on change of ownership, destruction, or other conditions set - // forth by the authority. Examples include a vehicle license plate or aircraft tail number. This is a generalized - // component and should not be used if a more specific registration type is already defined (i.e., ALT_ID_TYPE_IMO_ID). - ALT_ID_TYPE_REGISTRATION_ID = 16; - // Integrated Broadcast Service Common Message Format Global Identifier - ALT_ID_TYPE_IBS_GID = 17; - // Department of Defense Activity Address Code. - ALT_ID_TYPE_DODAAC = 18; - // Unit Identification Code uniquely identifies each US Department of Defense entity - ALT_ID_TYPE_UIC = 19; - // A NORAD Satellite Catalog Number, a 9-digit number uniquely representing orbital objects around Earth. - // of strictly numeric. - ALT_ID_TYPE_NORAD_CAT_ID = 20; - // Space object name. If populated, use names from the UN Office - // of Outer Space Affairs designator index, otherwise set field to UNKNOWN. - ALT_ID_TYPE_UNOOSA_NAME = 23; - // Space object identifier. If populated, use the international spacecraft designator - // as published in the UN Office of Outer Space Affairs designator index, otherwise set to UNKNOWN. - // Recommended values have the format YYYYNNNP{PP}, where: - // YYYY = Year of launch. - // NNN = Three-digit serial number of launch - // in year YYYY (with leading zeros). - // P{PP} = At least one capital letter for the - // identification of the part brought - // into space by the launch. - ALT_ID_TYPE_UNOOSA_ID = 24; -} - -// Set of possible templates used when creating an entity. -// This impacts minimum required component sets and can be used by edge systems that need to distinguish. -enum Template { - TEMPLATE_INVALID = 0; - // Refers to any detected object. - // Requires setting the location, and mil_view components. - TEMPLATE_TRACK = 1; - // Refers to any sensors detected at a specific location. - // Requires setting location, and mil_view. - TEMPLATE_SENSOR_POINT_OF_INTEREST = 2; - // Refers to a taskable entity under the control of friendly forces. - // Requires setting location, and mil_view, and ontology. - TEMPLATE_ASSET = 3; - // Refers to shapes or points of interest drawn on the map. - // Requires setting geo_shape and geo_details. - TEMPLATE_GEO = 4; - // Refers to signal detection with characteristics such as emitter notation, frequency, or lines of bearing. - // Requires setting signal, and mil_view, and ontology. Requies setting location, if the signal.fixed component is populated. - TEMPLATE_SIGNAL_OF_INTEREST = 5; -} - -// The state of an override. -enum OverrideStatus { - OVERRIDE_STATUS_INVALID = 0; - // the override was applied to the entity. - OVERRIDE_STATUS_APPLIED = 1; - // the override is pending action. - OVERRIDE_STATUS_PENDING = 2; - // the override has been timed out. - OVERRIDE_STATUS_TIMEOUT = 3; - // the override has been rejected - OVERRIDE_STATUS_REJECTED = 4; - // The override is pending deletion. - OVERRIDE_STATUS_DELETION_PENDING = 5; -} - -message UInt32Range { - uint32 lower_bound = 1; - uint32 upper_bound = 2; -} - -message FloatRange { - float lower_bound = 1; - float upper_bound = 2; -} - -enum OverrideType { - // The override type value was not set. This value is interpreted as OVERRIDE_TYPE_LIVE for backward compatibility. - OVERRIDE_TYPE_INVALID = 0; - // Override was requested when the entity was live according to the Entity Manager instance that handled the request. - OVERRIDE_TYPE_LIVE = 1; - // Override was requested after the entity expired according to the Entity Manager instance that handled the request. - OVERRIDE_TYPE_POST_EXPIRY = 2; -} diff --git a/protos/anduril/ontology/v1/type.pub.proto b/protos/anduril/ontology/v1/type.pub.proto deleted file mode 100644 index 4840a18..0000000 --- a/protos/anduril/ontology/v1/type.pub.proto +++ /dev/null @@ -1,156 +0,0 @@ -syntax = "proto3"; - -package anduril.ontology.v1; - -option java_multiple_files = true; -option java_package = "com.anduril.ontology.v1.api"; - -// Refers to the relationship of the tracker to the operational object being represented. -// Maps 1 to 1 with mil-std affiliation. Pending is a default, yet to be classified object. -// Ranking from most friendly to most hostile: -// FRIENDLY -// ASSUMED FRIENDLY -// NEUTRAL -// PENDING -// UNKNOWN -// SUSPICIOUS -// HOSTILE -enum Disposition { - DISPOSITION_UNKNOWN = 0; - DISPOSITION_FRIENDLY = 1; - DISPOSITION_HOSTILE = 2; - DISPOSITION_SUSPICIOUS = 3; - DISPOSITION_ASSUMED_FRIENDLY = 4; - DISPOSITION_NEUTRAL = 5; - DISPOSITION_PENDING = 6; -} - -// Describes the operating environment of an object. For more information refer to MIL-STD 2525D. -// Surface is used to describe objects on-top the water such as boats, while Sub-Surface is used to describe under the -// water. -enum Environment { - ENVIRONMENT_UNKNOWN = 0; - ENVIRONMENT_AIR = 1; - ENVIRONMENT_SURFACE = 2; - ENVIRONMENT_SUB_SURFACE = 3; - ENVIRONMENT_LAND = 4; - ENVIRONMENT_SPACE = 5; -} - -// Describes Nationality or Alliance information. This is derived from ISO-3166. -enum Nationality { - NATIONALITY_INVALID = 0; - NATIONALITY_ALBANIA = 1; - NATIONALITY_ALGERIA = 62; - NATIONALITY_ARGENTINA = 79; - NATIONALITY_ARMENIA = 2; - NATIONALITY_AUSTRALIA = 3; - NATIONALITY_AUSTRIA = 4; - NATIONALITY_AZERBAIJAN = 5; - NATIONALITY_BELARUS = 6; - NATIONALITY_BELGIUM = 7; - NATIONALITY_BOLIVIA = 106; - NATIONALITY_BOSNIA_AND_HERZEGOVINA = 8; - NATIONALITY_BRAZIL = 80; - NATIONALITY_BULGARIA = 9; - NATIONALITY_CAMBODIA = 68; - NATIONALITY_CANADA = 10; - NATIONALITY_CHILE = 81; - NATIONALITY_CHINA = 72; - NATIONALITY_COLOMBIA = 82; - NATIONALITY_CROATIA = 11; - NATIONALITY_CUBA = 87; - NATIONALITY_CYPRUS = 53; - NATIONALITY_CZECH_REPUBLIC = 12; - NATIONALITY_DEMOCRATIC_PEOPLES_REPUBLIC_OF_KOREA = 74; - NATIONALITY_DENMARK = 13; - NATIONALITY_DOMINICAN_REPUBLIC = 88; - NATIONALITY_ECUADOR = 107; - NATIONALITY_EGYPT = 54; - NATIONALITY_ESTONIA = 14; - NATIONALITY_ETHIOPIA = 63; - NATIONALITY_FINLAND = 15; - NATIONALITY_FRANCE = 16; - NATIONALITY_GEORGIA = 17; - NATIONALITY_GERMANY = 18; - NATIONALITY_GREECE = 19; - NATIONALITY_GUATEMALA = 108; - NATIONALITY_GUINEA = 92; - NATIONALITY_HUNGARY = 20; - NATIONALITY_ICELAND = 21; - NATIONALITY_INDIA = 66; - NATIONALITY_INDONESIA = 103; - NATIONALITY_INTERNATIONAL_RED_CROSS = 113; - NATIONALITY_IRAQ = 56; - NATIONALITY_IRELAND = 22; - NATIONALITY_ISLAMIC_REPUBLIC_OF_IRAN = 55; - NATIONALITY_ISRAEL = 57; - NATIONALITY_ITALY = 23; - NATIONALITY_JAMAICA = 112; - NATIONALITY_JAPAN = 76; - NATIONALITY_JORDAN = 58; - NATIONALITY_KAZAKHSTAN = 24; - NATIONALITY_KUWAIT = 90; - NATIONALITY_KYRGHYZ_REPUBLIC = 25; - NATIONALITY_LAO_PEOPLES_DEMOCRATIC_REPUBLIC = 69; - NATIONALITY_LATVIA = 26; - NATIONALITY_LEBANON = 59; - NATIONALITY_LIBERIA = 64; - NATIONALITY_LITHUANIA = 27; - NATIONALITY_LUXEMBOURG = 28; - NATIONALITY_MADAGASCAR = 93; - NATIONALITY_MALAYSIA = 104; - NATIONALITY_MALTA = 29; - NATIONALITY_MEXICO = 83; - NATIONALITY_MOLDOVA = 30; - NATIONALITY_MONTENEGRO = 31; - NATIONALITY_MOROCCO = 94; - NATIONALITY_MYANMAR = 102; - NATIONALITY_NATO = 32; - NATIONALITY_NETHERLANDS = 33; - NATIONALITY_NEW_ZEALAND = 78; - NATIONALITY_NICARAGUA = 109; - NATIONALITY_NIGERIA = 95; - NATIONALITY_NORWAY = 34; - NATIONALITY_PAKISTAN = 67; - NATIONALITY_PANAMA = 84; - NATIONALITY_PARAGUAY = 110; - NATIONALITY_PERU = 85; - NATIONALITY_PHILIPPINES = 77; - NATIONALITY_POLAND = 35; - NATIONALITY_PORTUGAL = 36; - NATIONALITY_REPUBLIC_OF_KOREA = 75; - NATIONALITY_ROMANIA = 37; - NATIONALITY_RUSSIA = 38; - NATIONALITY_SAUDI_ARABIA = 60; - NATIONALITY_SENEGAL = 96; - NATIONALITY_SERBIA = 39; - NATIONALITY_SINGAPORE = 105; - NATIONALITY_SLOVAKIA = 40; - NATIONALITY_SLOVENIA = 41; - NATIONALITY_SOUTH_AFRICA = 65; - NATIONALITY_SPAIN = 42; - NATIONALITY_SUDAN = 98; - NATIONALITY_SWEDEN = 43; - NATIONALITY_SWITZERLAND = 44; - NATIONALITY_SYRIAN_ARAB_REPUBLIC = 61; - NATIONALITY_TAIWAN = 73; - NATIONALITY_TAJIKISTAN = 45; - NATIONALITY_THAILAND = 70; - NATIONALITY_THE_FORMER_YUGOSLAV_REPUBLIC_OF_MACEDONIA = 46; - NATIONALITY_TUNISIA = 100; - NATIONALITY_TURKEY = 47; - NATIONALITY_TURKMENISTAN = 48; - NATIONALITY_UGANDA = 101; - NATIONALITY_UKRAINE = 49; - NATIONALITY_UNITED_KINGDOM = 50; - NATIONALITY_UNITED_NATIONS = 89; - NATIONALITY_UNITED_REPUBLIC_OF_TANZANIA = 99; - NATIONALITY_UNITED_STATES_OF_AMERICA = 51; - NATIONALITY_URUGUAY = 111; - NATIONALITY_UZBEKISTAN = 52; - NATIONALITY_VENEZUELA = 86; - NATIONALITY_VIETNAM = 71; - NATIONALITY_YEMEN = 91; - NATIONALITY_ZIMBABWE = 97; -} diff --git a/protos/anduril/taskmanager/v1/task.pub.proto b/protos/anduril/taskmanager/v1/task.pub.proto deleted file mode 100644 index 631c01a..0000000 --- a/protos/anduril/taskmanager/v1/task.pub.proto +++ /dev/null @@ -1,287 +0,0 @@ -syntax = "proto3"; - -package anduril.taskmanager.v1; - -import "anduril/entitymanager/v1/entity.pub.proto"; -import "google/protobuf/any.proto"; -import "google/protobuf/timestamp.proto"; - -option csharp_namespace = "Anduril.Taskmanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "TaskProto"; -option java_package = "com.anduril.taskmanager.v1"; -option objc_class_prefix = "ATX"; - -// A Task is something an agent can be asked to do. -message Task { - // Version of this Task. - TaskVersion version = 1; - // DEPRECATED: Human readable display name for this Task, should be short (<100 chars). - string display_name = 2 [deprecated = true]; - // Full Task parameterization. - google.protobuf.Any specification = 3; - // Records who created this Task. This field will not change after the Task has been created. - Principal created_by = 16; - // Records who updated this Task last. - Principal last_updated_by = 4; - // Records the time of last update. - google.protobuf.Timestamp last_update_time = 9; - // The status of this Task. - TaskStatus status = 5; - // If the Task has been scheduled to execute, what time it should execute at. - google.protobuf.Timestamp scheduled_time = 6; - reserved 7; - // Any related Tasks associated with this, typically includes an assignee for this Task and/or a parent. - Relations relations = 8; - // Longer, free form human readable description of this Task - string description = 10; - // If set, execution of this Task is managed elsewhere, not by Task Manager. - // In other words, Task manager will not attempt to update the assigned agent with execution instructions. - bool is_executed_elsewhere = 11; - // Time of Task creation. - google.protobuf.Timestamp create_time = 13; - // If populated, designates this to be a replicated Task. - Replication replication = 14; - // If populated, indicates an initial set of entities that can be used to execute an entity aware task - // For example, an entity Objective, an entity Keep In Zone, etc. - // These will not be updated during execution. If a taskable agent needs continuous updates on the entities from the - // COP, can call entity-manager, or use an AlternateId escape hatch. - repeated TaskEntity initial_entities = 15; - // The networked owner of this Task. It is used to ensure that linear writes occur on the node responsible - // for replication of task data to other nodes running Task Manager. - Owner owner = 12; -} - -// TaskStatus is contains information regarding the status of a Task at any given time. Can include related information -// such as any progress towards Task completion, or any associated results if Task completed. -message TaskStatus { - // Status of the Task. - Status status = 1; - // Any errors associated with the Task. - TaskError task_error = 2; - // Any incremental progress on the Task, should be from the tasks/v*/progress folder. - google.protobuf.Any progress = 4; - // Any final result of the Task, should be from tasks/v*/result folder. - google.protobuf.Any result = 5; - // Time the Task began execution, may not be known even for executing Tasks. - google.protobuf.Timestamp start_time = 6; - // Any estimate for how the Task will progress, should be from tasks/v*/estimates folder. - google.protobuf.Any estimate = 7; - // Any allocated agents of the Task. - Allocation allocation = 8; -} - -// TaskError contains an error code and message typically associated to a Task. -message TaskError { - // Error code for Task error. - ErrorCode code = 1; - // Descriptive human-readable string regarding this error. - string message = 2; - // Any additional details regarding this error. - google.protobuf.Any error_details = 3; -} - -// A Principal is an entity that has authority over this Task. -message Principal { - // A Principal can be either a human user, or a system. - oneof agent { - System system = 1; - User user = 2; - Team team = 4; - } - // The Principal _this_ Principal is acting on behalf of. - // - // Likely only populated once in the nesting (i.e. the "on_behalf_of" Principal would not have another "on_behalf_of" in most cases). - Principal on_behalf_of = 3; -} - -// System Principal representing some autonomous system. -message System { - // Name of the service associated with this System. - string service_name = 1; - // The Entity ID of the System. - string entity_id = 2; - // Whether the System Principal (for example, an Asset) can own scheduling. - // This means we bypass manager-owned scheduling and defer to the system - // Principal to handle scheduling and give us status updates for the Task. - // Regardless of the value defined by the client, the Task Manager will - // determine and set this value appropriately. - bool manages_own_scheduling = 4; - - reserved 3; -} - -// A User Principal representing a human. -message User { - // The User ID associated with this User. - string user_id = 1; -} - -// Relations describes the relationships of this Task, such as assignment, or if the Task has any parents. -message Relations { - // Who or what, if anyone, this Task is currently assigned to. - Principal assignee = 1; - // If this Task is a "sub-Task", what is its parent, none if empty. - string parent_task_id = 2; -} - -// Holds Tasks and its associated Events, e.g. CREATED. -message TaskEvent { - // Type of Event. - EventType event_type = 1; - // Task associated with this TaskEvent. - Task task = 2; - // View associated with this task. - TaskView task_view = 3; - - // ===== Time Series Updates ===== - // - // Timestamp for time-series to index. - google.protobuf.Timestamp time = 4; -} - -// Version of a Task. -message TaskVersion { - // The unique ID for this Task. - string task_id = 1; - // Increments on definition (i.e. not TaskStatus) change. 0 is unset, starts at 1 on creation. - uint32 definition_version = 2; - // Increments on changes to TaskStatus. 0 is unset, starts at 1 on creation. - uint32 status_version = 3; -} - -// The Status of a Task definition through its lifecycle. Each Definition Version can have its own Status. -// For example, Definition v1 could go CREATED -> SENT -> WILCO -> REPLACED, with v2 then potentially in sent Status. -enum Status { - STATUS_INVALID = 0; - // Initial creation Status. - STATUS_CREATED = 1; - // Scheduled within Task Manager to be sent at a future time. - STATUS_SCHEDULED_IN_MANAGER = 2; - // Sent to another system (Asset), no receipt yet. - STATUS_SENT = 3; - // Task was sent to Assignee, and some system was reachable and responded. - // However, the system responsible for execution on the Assignee has not yet acknowledged the Task. - STATUS_MACHINE_RECEIPT = 4; - // System responsible for execution on the Assignee has acknowledged the Task. - STATUS_ACK = 5; - // Assignee confirmed they "will comply" / intend to execute Task. - STATUS_WILCO = 6; - // Task was started and is actively executing. - STATUS_EXECUTING = 7; - // Task is on hold, waiting for additional updates/information before proceeding. - STATUS_WAITING_FOR_UPDATE = 8; - // Task was completed successfully. - STATUS_DONE_OK = 9; - // Task has reached a terminal state but did not complete successfully, see error code/message. - STATUS_DONE_NOT_OK = 10; - // This definition version was replaced. - STATUS_REPLACED = 11; - // A Task was requested to be cancelled but not yet confirmed, will eventually move to DONE_NOT_OK. - STATUS_CANCEL_REQUESTED = 12; - // A Task was requested to be completed successfully but not yet confirmed, will eventually move to DONE_NOT_OK / DONE_OK. - STATUS_COMPLETE_REQUESTED = 13; - // This definition version was rejected, intended to be used when an Agent does not accept a new version of a task - // and continues using previous version - STATUS_VERSION_REJECTED = 14; -} - -// Error code associated with a Task error. -enum ErrorCode { - ERROR_CODE_INVALID = 0; - // Task was cancelled by requester. - ERROR_CODE_CANCELLED = 1; - // Task was rejected by assignee, see message for details. - ERROR_CODE_REJECTED = 2; - // Task Manager gave up waiting for a receipt/ack from assignee. - ERROR_CODE_TIMEOUT = 3; - // Task attempted to execute, but failed. - ERROR_CODE_FAILED = 4; -} - -// The type of Task event. -enum EventType { - EVENT_TYPE_INVALID = 0; - // Task was created. - EVENT_TYPE_CREATED = 1; - // Task was updated. - EVENT_TYPE_UPDATE = 2; - // Task already existed, but sent on a new stream connection. - EVENT_TYPE_PREEXISTING = 3; -} - -// View of a Task through its lifecycle. -// For example, a definition v1 of a task may be running on an agent, indicated by TASK_VIEW_AGENT, -// while the definition v2 may not have been received yet, indicated by TASK_VIEW_MANAGER. -enum TaskView { - TASK_VIEW_INVALID = 0; - // Represents the most recent version of the Task known to Task Manager - TASK_VIEW_MANAGER = 1; - // Represents the most recent version of the Task acknowledged or updated by an Agent - TASK_VIEW_AGENT = 2; -} - -// a Task status update -message StatusUpdate { - // Version of the Task. - TaskVersion version = 1; - // Status of the Task. - TaskStatus status = 2; - // Author of the StatusUpdate message. Used to set the LastUpdatedBy field of the Task. - Principal author = 3; - // Typically provided if a user is manually managing a Task, or if an asset owns scheduling. - google.protobuf.Timestamp scheduled_time = 4; -} - -// Message representing a Task create or update. -message DefinitionUpdate { - // New task definition being created or updated. - // The last_updated_by and specification fields inside the task object must be defined. - // Definition version must also be incremented by the publisher on updates. - // We do not look at the fields create_time or last_update_time in this object, - // they are instead set by task-manager. - Task task = 1; -} - -// Owner designates the entity responsible for writes of Task data. -message Owner { - // Entity ID of the owner. - string entity_id = 2; - - reserved 1; -} - -// Any metadata associated with the replication of a Task. -message Replication { - // Time by which this Task should be assumed to be stale. - google.protobuf.Timestamp stale_time = 1; -} - -// Allocation contains a list of agents allocated to a Task. -message Allocation { - // Agents actively being utilized in a Task. - repeated Agent active_agents = 1; -} - -// Represents a team of agents -message Team { - // Entity ID of the team - string entity_id = 1; - repeated Agent members = 2; -} - -// Represents an Agent in the COP. -message Agent { - // Entity ID of the agent. - string entity_id = 2; - - reserved 1; -} - -// Wrapper of an entity passed in Tasking, used to hold an additional information, and as a future extension point. -message TaskEntity { - // The wrapped entity-manager entity. - entitymanager.v1.Entity entity = 1; - // Indicates that this entity was generated from a snapshot of a live entity. - bool snapshot = 2; -} diff --git a/protos/anduril/taskmanager/v1/task_api.pub.proto b/protos/anduril/taskmanager/v1/task_api.pub.proto deleted file mode 100644 index 888605f..0000000 --- a/protos/anduril/taskmanager/v1/task_api.pub.proto +++ /dev/null @@ -1,32 +0,0 @@ -syntax = "proto3"; - -package anduril.taskmanager.v1; - -import "anduril/taskmanager/v1/task.pub.proto"; - -option csharp_namespace = "Anduril.Taskmanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "TaskApiProto"; -option java_package = "com.anduril.taskmanager.v1"; -option objc_class_prefix = "ATX"; - -// Request to execute a Task. -message ExecuteRequest { - // Task to execute. - Task task = 1; -} - -// Request to Cancel a Task. -message CancelRequest { - // ID of the Task to cancel. - string task_id = 1; - // The assignee of the Task. Useful for agent routing where an endpoint owns multiple agents, - // especially onBehalfOf assignees. - Principal assignee = 2; -} - -// Request to Complete a Task. -message CompleteRequest { - // ID of the task to complete. - string task_id = 1; -} diff --git a/protos/anduril/taskmanager/v1/task_manager_grpcapi.pub.proto b/protos/anduril/taskmanager/v1/task_manager_grpcapi.pub.proto deleted file mode 100644 index 2b2f467..0000000 --- a/protos/anduril/taskmanager/v1/task_manager_grpcapi.pub.proto +++ /dev/null @@ -1,183 +0,0 @@ -syntax = "proto3"; - -package anduril.taskmanager.v1; - -import "anduril/taskmanager/v1/task.pub.proto"; -import "anduril/taskmanager/v1/task_api.pub.proto"; -import "google/protobuf/any.proto"; -import "google/protobuf/timestamp.proto"; - -option csharp_namespace = "Anduril.Taskmanager.V1"; -option java_multiple_files = true; -option java_outer_classname = "TaskManagerApiProto"; -option java_package = "com.anduril.taskmanager.v1"; -option objc_class_prefix = "ATX"; - -// Task Manager is a service that performs state management associated with Tasks, and also the execution of Tasks -// on their designated agents. -service TaskManagerAPI { - // Create a new Task. - rpc CreateTask(CreateTaskRequest) returns (CreateTaskResponse); - // Get an existing Task. - rpc GetTask(GetTaskRequest) returns (GetTaskResponse); - // Find Tasks that match request criteria. - rpc QueryTasks(QueryTasksRequest) returns (QueryTasksResponse); - // Update the status of a Task. - rpc UpdateStatus(UpdateStatusRequest) returns (UpdateStatusResponse); - // Stream Tasks ready for RPC Agent execution that match agent selector (ex: entity_ids). - // Intended for use by Taskable Agents that need to receive Tasks ready for execution by RPC. - rpc ListenAsAgent(ListenAsAgentRequest) returns (stream ListenAsAgentResponse); -} - -//--------------------// -// Request / Response // -//--------------------// - -// Request to create a Task. -message CreateTaskRequest { - // Human-readable display name for this Task, should be short (<100 chars). - string display_name = 1; - // Full task parameterization. - google.protobuf.Any specification = 2; - // Who or what is creating this Task. For example, if a user created this Task via a UI, it would - // contain the "user" Principal type with the user ID of that user. Or if a service is calling the - // CreateTask endpoint, then a "service" Principal type is to be provided. - Principal author = 3; - reserved 4; - // Any relationships associated with this Task, such as a parent Task or an assignee this Task is designated to - // for execution. - Relations relations = 5; - // Longer, free-form, human-readable description of this Task. - string description = 6; - // If set, then task-manager will not trigger execution of this task on an agent. Useful for when ingesting - // tasks from an external system that is triggering execution of tasks on agents. - bool is_executed_elsewhere = 7; - // If non-empty, will set the requested Task ID, otherwise will generate a new random GUID. - // Will reject if supplied Task ID does not match `[A-Za-z0-9_-.]{5,36}`. - string task_id = 8; - // Indicates an initial set of entities that can be used to execute an entity aware task. - // For example, an entity Objective, an entity Keep In Zone, etc. - repeated TaskEntity initial_entities = 9; - reserved 10; -} - -// Response to a Create Task request. -message CreateTaskResponse { - // Task that was created. - Task task = 1; -} - -// Request to get a Task. -message GetTaskRequest { - // ID of Task to get. - string task_id = 1; - // Optional - if > 0, will get specific definition_version, otherwise latest (highest) definition_version is used. - uint32 definition_version = 2; - // Optional - select which view of the task to fetch. If not set, defaults to TASK_VIEW_MANAGER. - TaskView task_view = 3; -} - -// Response to a Get Task request. -message GetTaskResponse { - // Task that was returned. - Task task = 1; -} - -// Request to query for Tasks. Returns the each latest Task by Status ID and Version ID by default with no filters. -message QueryTasksRequest { - // A time range query for Tasks. - message TimeRange { - // If provided, returns Tasks only updated after this time. - google.protobuf.Timestamp update_start_time = 1; - // If provided, returns Tasks only updated before this time. - google.protobuf.Timestamp update_end_time = 2; - } - // The type of filter. - enum FilterType { - FILTER_TYPE_INVALID = 0; - FILTER_TYPE_INCLUSIVE = 1; - FILTER_TYPE_EXCLUSIVE = 2; - } - // A filter for statuses. - message StatusFilter { - // Statuses to be part of the filter. - repeated Status status = 1; - // The type of filter to apply. - FilterType filter_type = 2; - } - // If present matches Tasks with this parent Task ID. - // Note: this is mutually exclusive with all other query parameters, i.e., either provide parent Task ID, or - // any of the remaining parameters, but not both. - string parent_task_id = 1; - reserved 2; - // If set, returns results starting from the given page token. - string page_token = 3; - // Filters on provided status types in the filter. - StatusFilter status_filter = 4; - // If provided, only provides Tasks updated within the time range. - TimeRange update_time_range = 5; - // Optional filter for view of a Task. - // If not set, defaults to TASK_VIEW_MANAGER. - TaskView view = 6; -} - -// Response to a Query Task request. -message QueryTasksResponse { - // Tasks matching the Query Task request. - repeated Task tasks = 1; - // Page token to the next page of Tasks. - string page_token = 2; -} - -// Request to update a Task's status. -message UpdateStatusRequest { - // The updated status. - StatusUpdate status_update = 1; -} - -// Response to an Update Status request. -message UpdateStatusResponse { - // The updated Task. - Task task = 1; -} - -// Request for streaming Tasks ready for agent execution. -message ListenAsAgentRequest { - // Selector criteria to determine which Agent Tasks the agent receives - oneof agent_selector { - // The requesting agent will only receive Agent Tasks in the stream that have any of these specified entity ids as the task's assignee - EntityIds entity_ids = 1; - } -} - -// Response for streaming Tasks ready for agent execution. -message ListenAsAgentResponse { - // Action for agent to execute - oneof request { - ExecuteRequest execute_request = 1; - CancelRequest cancel_request = 2; - CompleteRequest complete_request = 3; - } -} - -// Rate limiting / down-sampling parameters. -message RateLimit { - // Specifies a minimum duration in milliseconds after an update for a given task before another one - // will be sent for the same task. - // A value of 0 is treated as unset. If set, value must be >= 250. - // Example: if set to 1000, and 4 events occur (ms since start) at T0, T500, T900, T2100, then - // event from T0 will be sent at T0, T500 will be dropped, T900 will be sent at minimum of T1000, - // and T2100 will be sent on time (2100) - // This will only limit updates, other events will be sent immediately, with a delete clearing anything held - uint32 update_per_task_limit_ms = 1; -} - -message Heartbeat { - // The time at which the Heartbeat was sent. - google.protobuf.Timestamp timestamp = 1; -} - -// Entity IDs wrapper. -message EntityIds { - repeated string entity_ids = 1; -} diff --git a/protos/anduril/taskmanager/v1/tasks_openapi.pub.yaml b/protos/anduril/taskmanager/v1/tasks_openapi.pub.yaml deleted file mode 100644 index a318f73..0000000 --- a/protos/anduril/taskmanager/v1/tasks_openapi.pub.yaml +++ /dev/null @@ -1,341 +0,0 @@ -openapi: 3.0.0 -info: - title: The Tasks API - description: |- - The Tasks API is a service that lets you create, update, monitor, and execute a task. The Tasks API is responsible for - handling the state associated with tasks in an environment, as well as the correct routing of these tasks to taskable - agents. For integrators building taskable agents and integrating with Lattice, the focus is on interacting with Task - Manager to receive tasks and report status updates. - version: '1.0.0' -servers: -- url: "{server}/api/v1" - variables: - server: - default: "developer.anduril.com" - description: The Lattice server instance to connect to. -paths: - /tasks: - post: - tags: - - task - summary: Create a new task and schedule it for delivery - description: |- - Submit a request to create a task and schedule it for delivery. Tasks, once delivered, will - be asynchronously updated by their destined agent. - operationId: createTask - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/TaskCreation' - required: true - responses: - '201': - description: Task creation was successful - content: - application/json: - schema: - $ref: 'tasks_openapi_model.gen.yaml#/components/schemas/Task' - '400': - $ref: '#/components/responses/BadRequest' - '401': - $ref: '#/components/responses/Unauthorized' - /tasks/{taskId}: - get: - tags: - - task - summary: Find a task - operationId: getTaskById - 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: 'tasks_openapi_model.gen.yaml#/components/schemas/Task' - '400': - $ref: '#/components/responses/BadRequest' - '401': - $ref: '#/components/responses/Unauthorized' - '404': - $ref: '#/components/responses/NotFound' - /tasks/{taskId}/status: - put: - tags: - - task - summary: Update a task's status - operationId: updateTaskStatusById - parameters: - - name: taskId - in: path - description: ID of task to update status of - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/TaskStatusUpdate' - required: true - responses: - '200': - description: Task status update was successful - content: - application/json: - schema: - $ref: 'tasks_openapi_model.gen.yaml#/components/schemas/Task' - '400': - $ref: '#/components/responses/BadRequest' - '401': - $ref: '#/components/responses/Unauthorized' - '404': - $ref: '#/components/responses/NotFound' - /tasks/query: - post: - tags: - - task - summary: Query for tasks by search criteria - operationId: queryTasks - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/TaskQuery' - required: true - responses: - '200': - description: Task query was successful - content: - application/json: - schema: - $ref: '#/components/schemas/TaskQueryResults' - '400': - $ref: '#/components/responses/BadRequest' - '401': - $ref: '#/components/responses/Unauthorized' - '404': - $ref: '#/components/responses/NotFound' - /agent/listen: - post: - tags: - - task - summary: Receive tasks that are awaiting delivery - description: |- - This is a long polling API that will block until a new task is ready for delivery. If no new task is - available then the server will hold on to your request for up to 5 minutes, after that 5 minute timeout - period you will be expected to reinitiate a new request. - operationId: longPollListenAsAgent - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/AgentListener' - required: true - responses: - '200': - description: Requests for the agent to comply with. - content: - application/json: - schema: - $ref: '#/components/schemas/AgentRequest' - '400': - $ref: '#/components/responses/BadRequest' - '401': - $ref: '#/components/responses/Unauthorized' -components: - # shared response types - responses: - BadRequest: - description: Bad request - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - Unauthorized: - description: Unauthorized to access resource - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - NotFound: - description: The specified resource was not found - content: - application/json: - schema: - $ref: '#/components/schemas/Error' - # manual data schemas - schemas: - Error: - type: object - properties: - code: - type: string - message: - type: string - required: - - code - - message - Timestamp: - description: Datetime string in ISO 8601 format. - type: string - TaskCreation: - type: object - properties: - taskId: - description: |- - If non-empty, will set the requested Task ID, otherwise will generate a new random - GUID. Will reject if supplied Task ID does not match [A-Za-z0-9_-.]{5,36}. - type: string - displayName: - description: Human readable display name for this Task, should be short (<100 chars). - type: string - description: - description: Longer, free form human readable description of this Task. - type: string - specification: - description: Full set of task parameters. - allOf: - - $ref: 'tasks_openapi_model.gen.yaml#/components/schemas/GoogleProtobufAny' - author: - $ref: 'tasks_openapi_model.gen.yaml#/components/schemas/Principal' - relations: - description: |- - Any relationships associated with this Task, such as a parent Task or an assignee - this Task is designated to for execution. - allOf: - - $ref: 'tasks_openapi_model.gen.yaml#/components/schemas/Relations' - isExecutedElsewhere: - description: |- - If set, then the service will not trigger execution of this task on an agent. Useful - for when ingesting tasks from an external system that is triggering execution of tasks - on agents. - type: boolean - initialEntities: - description: |- - Indicates an initial set of entities that can be used to execute an entity aware - task. For example, an entity Objective, an entity Keep In Zone, etc. - type: array - items: - $ref: 'tasks_openapi_model.gen.yaml#/components/schemas/TaskEntity' - TaskQuery: - description: Query for Tasks. Returns the each latest Task by Status ID and Version ID by default with no filters. - type: object - properties: - pageToken: - description: If set, returns results starting from the given pageToken. - type: string - parentTaskId: - description: |- - If present matches Tasks with this parent Task ID. - Note: this is mutually exclusive with all other query parameters, i.e., either provide parent Task ID, or - any of the remaining parameters, but not both. - type: string - statusFilter: - type: object - properties: - status: - 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 - type: string - description: Status of the Task to filter by, inclusive. - format: enum - updateTimeRange: - type: object - description: If provided, only provides Tasks updated within the time range. - properties: - startTime: - type: string - description: If provided, returns Tasks only updated after this time. - allOf: - - $ref: '#/components/schemas/Timestamp' - endTime: - type: string - description: If provided, returns Tasks only updated before this time. - allOf: - - $ref: '#/components/schemas/Timestamp' - TaskQueryResults: - type: object - properties: - tasks: - type: array - items: - type: object - allOf: - - $ref: 'tasks_openapi_model.gen.yaml#/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 - the next page, perform the exact same request as previously and append a pageToken field with the value of - nextPageToken from the previous page. A new nextPageToken is provided on the following pages until all the - results are retrieved. - TaskStatusUpdate: - type: object - properties: - statusVersion: - description: |- - The status version of the task to update. This version number increments to indicate the task's - current stage in its status lifecycle. Specifically, whenever a task's status updates, the status - version increments by one. Any status updates received with a lower status version number than what - is known are considered stale and ignored. - type: integer - newStatus: - description: The new status of the task. - allOf: - - $ref: 'tasks_openapi_model.gen.yaml#/components/schemas/TaskStatus' - author: - $ref: 'tasks_openapi_model.gen.yaml#/components/schemas/Principal' - AgentListener: - type: object - properties: - agentSelector: - description: Selector criteria to determine which Agent Tasks the agent receives - allOf: - - $ref: '#/components/schemas/EntityIdsSelector' - EntityIdsSelector: - type: object - properties: - entityIds: - type: array - description: Receive tasks as an assignee for one or more of the supplied entity ids. - items: - type: string - AgentRequest: - type: object - properties: - executeRequest: - $ref: 'tasks_openapi_model.gen.yaml#/components/schemas/ExecuteRequest' - cancelRequest: - $ref: 'tasks_openapi_model.gen.yaml#/components/schemas/CancelRequest' - completeRequest: - $ref: 'tasks_openapi_model.gen.yaml#/components/schemas/CompleteRequest' -tags: - - name: task - description: The Tasks API - x-displayName: The Tasks API -x-tagGroups: - - name: General - tags: - - task diff --git a/protos/anduril/taskmanager/v1/tasks_openapi_model.gen.yaml b/protos/anduril/taskmanager/v1/tasks_openapi_model.gen.yaml deleted file mode 100644 index 7ba07de..0000000 --- a/protos/anduril/taskmanager/v1/tasks_openapi_model.gen.yaml +++ /dev/null @@ -1,2650 +0,0 @@ -# Generated with protoc-gen-openapi -# https://github.com/google/gnostic/tree/master/cmd/protoc-gen-openapi - -openapi: 3.0.3 -info: - title: TaskManagerRestAPI API - version: 0.0.1 -paths: - /task/query: - get: - tags: - - TaskManagerRestAPI - operationId: TaskManagerRestAPI_TaskQuery - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/TaskQueryResponse' - default: - description: Default error response - content: - application/json: - schema: - $ref: '#/components/schemas/Status' - /task/{taskId}: - get: - tags: - - TaskManagerRestAPI - operationId: TaskManagerRestAPI_GetTask - parameters: - - name: taskId - in: path - required: true - schema: - type: string - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/GetTaskResponse' - default: - description: Default error response - content: - application/json: - schema: - $ref: '#/components/schemas/Status' -components: - schemas: - ACMDetails: - type: object - properties: - acmType: - enum: - - ACM_DETAIL_TYPE_INVALID - - ACM_DETAIL_TYPE_LANDING_ZONE - type: string - format: enum - acmDescription: - type: string - description: |- - Used for loosely typed associations, such as assignment to a specific fires unit. - Limit to 150 characters. - ActiveTarget: - type: object - properties: {} - description: |- - A target relationship is the inverse of TrackedBy; a one-way relation - from sensor to target, indicating track(s) currently prioritized by a robot. - Agent: - type: object - properties: - entityId: - type: string - description: Entity ID of the agent. - description: Represents an Agent in the COP. - 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 - 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 - understanding and should not be used for machine processing. If the description is fixed and the vehicle controller - provides no dynamic substitutions, then prefer lookup based on alert_code. - level: - enum: - - ALERT_LEVEL_INVALID - - ALERT_LEVEL_ADVISORY - - ALERT_LEVEL_CAUTION - - ALERT_LEVEL_WARNING - type: string - description: Alert level (Warning, Caution, or Advisory). - format: enum - activatedTime: - type: string - description: Time at which this alert was activated. - format: date-time - 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 - execution. An alert is produced as a result of one or more alert conditions. - 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 - 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 - understanding and should not be used for machine processing. If the description is fixed and the vehicle controller - provides no dynamic substitutions, then prefer lookup based on condition_code. - description: A condition which may trigger an alert. - 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. - 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. - AlternateId: - type: object - properties: - id: - type: string - type: - 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 - type: string - format: enum - description: An alternate id for an Entity. - AngleOfArrival: - type: object - properties: - relativePose: - allOf: - - $ref: '#/components/schemas/Pose' - description: |- - Origin (LLA) and attitude (relative to ENU) of a ray pointing towards the detection. The attitude represents a - forward-left-up (FLU) frame where the x-axis (1, 0, 0) is pointing towards the target. - bearingElevationCovarianceRad2: - allOf: - - $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 - and elevation is positive down from the FL/XY plane. - mxx = bearing variance in rad^2 - mxy = bearing/elevation covariance in rad^2 - myy = elevation variance in rad^2 - description: The direction from which the signal is received - Bandwidth: - type: object - properties: - bandwidthHz: - type: number - format: double - description: Describes the bandwidth of a signal - 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 - CancelRequest: - type: object - properties: - taskId: - type: string - description: ID of the Task to cancel. - assignee: - allOf: - - $ref: '#/components/schemas/Principal' - description: |- - The assignee of the Task. Useful for agent routing where an endpoint owns multiple agents, - especially onBehalfOf assignees. - description: Request to Cancel a Task. - Classification: - type: object - properties: - default: - allOf: - - $ref: '#/components/schemas/ClassificationInformation' - description: |- - The default classification information which should be assumed to apply to everything in - 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 - over the default classification information. - description: A component that describes an entity's security classification levels. - ClassificationInformation: - type: object - properties: - level: - enum: - - CLASSIFICATION_LEVELS_INVALID - - CLASSIFICATION_LEVELS_UNCLASSIFIED - - CLASSIFICATION_LEVELS_CONTROLLED_UNCLASSIFIED - - CLASSIFICATION_LEVELS_CONFIDENTIAL - - CLASSIFICATION_LEVELS_SECRET - - CLASSIFICATION_LEVELS_TOP_SECRET - type: string - description: Classification level to be applied to the information in question. - format: enum - 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 - classification marking. - - > example: A summarized classification marking of "TOPSECRET//NOFORN//FISA" - would be defined as: { "level": 5, "caveats": [ "NOFORN, "FISA" ] } - Color: - type: object - properties: - red: - type: number - description: The amount of red in the color as a value in the interval [0, 1]. - format: float - green: - type: number - description: The amount of green in the color as a value in the interval [0, 1]. - format: float - blue: - type: number - description: The amount of blue in the color as a value in the interval [0, 1]. - format: float - alpha: - type: number - description: |- - The fraction of this color that should be applied to the pixel. That is, - the final pixel color is defined by the equation: - - `pixel color = alpha * (this color) + (1.0 - alpha) * (background color)` - - This means that a value of 1.0 corresponds to a solid color, whereas - a value of 0.0 corresponds to a completely transparent color. This - uses a wrapper message rather than a simple float scalar so that it is - possible to distinguish between a default value and the value being unset. - If omitted, this color object is rendered as a solid color - (as if the alpha value had been explicitly given a value of 1.0). - format: float - CompleteRequest: - type: object - properties: - taskId: - type: string - description: ID of the task to complete. - description: Request to Complete a Task. - ComponentHealth: - type: object - properties: - id: - type: string - description: Consistent internal ID for this component. - name: - type: string - description: Display name for this component. - health: - enum: - - HEALTH_STATUS_INVALID - - HEALTH_STATUS_HEALTHY - - HEALTH_STATUS_WARN - - HEALTH_STATUS_FAIL - - HEALTH_STATUS_OFFLINE - - HEALTH_STATUS_NOT_READY - type: string - description: Health for this component. - format: enum - 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 - description: |- - The last update time for this specific component. - If this timestamp is unset, the data is assumed to be most recent - format: date-time - description: Health of an individual component. - ComponentMessage: - type: object - properties: - status: - enum: - - HEALTH_STATUS_INVALID - - HEALTH_STATUS_HEALTHY - - HEALTH_STATUS_WARN - - HEALTH_STATUS_FAIL - - HEALTH_STATUS_OFFLINE - - HEALTH_STATUS_NOT_READY - type: string - description: The status associated with this message. - format: enum - message: - type: string - description: The human-readable content of the message. - description: A message describing the component's health status. - ControlAreaDetails: - type: object - properties: - type: - 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 - type: string - format: enum - description: |- - Determines the type of control area being represented by the geo-entity, - in which an asset can, or cannot, operate. - Correlation: - type: object - properties: - primary: - allOf: - - $ref: '#/components/schemas/PrimaryCorrelation' - description: |- - This entity is the primary of a correlation meaning that it serves as the representative - entity of the correlation set. - secondary: - allOf: - - $ref: '#/components/schemas/SecondaryCorrelation' - description: |- - This entity is a secondary of a correlation meaning that it will be represented by the - primary of the correlation set. - membership: - allOf: - - $ref: '#/components/schemas/CorrelationMembership' - description: If present, this entity is a part of a correlation set. - decorrelation: - allOf: - - $ref: '#/components/schemas/Decorrelation' - description: |- - If present, this entity was explicitly decorrelated from one or more entities. - An entity can be both correlated and decorrelated as long as they are disjoint sets. - An example would be if a user in the UI decides that two tracks are not actually the - same despite an automatic correlator having correlated them. The user would then - decorrelate the two tracks and this decorrelation would be preserved preventing the - 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 - each entity in the set. - CorrelationMembership: - type: object - properties: - correlationSetId: - type: string - description: The ID of the correlation set this entity belongs to. - primary: - allOf: - - $ref: '#/components/schemas/PrimaryMembership' - description: |- - This entity is the primary of a correlation set meaning that it serves as the representative - entity of the correlation set. - nonPrimary: - allOf: - - $ref: '#/components/schemas/NonPrimaryMembership' - description: |- - This entity is not the primary of the correlation set. Note that there may not - be a primary at all. - metadata: - allOf: - - $ref: '#/components/schemas/CorrelationMetadata' - description: Additional metadata on this correlation. - CorrelationMetadata: - type: object - properties: - provenance: - allOf: - - $ref: '#/components/schemas/Provenance' - description: Who or what added this entity to the (de)correlation. - replicationMode: - enum: - - CORRELATION_REPLICATION_MODE_INVALID - - CORRELATION_REPLICATION_MODE_LOCAL - - CORRELATION_REPLICATION_MODE_GLOBAL - type: string - description: |- - Indicates how the correlation will be distributed. Because a correlation is composed of - multiple secondaries, each of which may have been correlated with different replication - modes, the distribution of the correlation is composed of distributions of the individual - entities within the correlation set. - For example, if there are two secondary entities A and B correlated against a primary C, - with A having been correlated globally and B having been correlated locally, then the - correlation set that is distributed globally than what is known locally in the node. - format: enum - type: - enum: - - CORRELATION_TYPE_INVALID - - CORRELATION_TYPE_MANUAL - - CORRELATION_TYPE_AUTOMATED - type: string - description: What type of (de)correlation was this entity added with. - format: enum - 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 - - examples: - This schedule is begins at 7:00:00am UTC everyday between Monday and Friday - 0 0 7 ? * MON-FRI * - This schedule begins every 5 minutes starting at 12:00:00pm UTC until 8:00:00pm UTC everyday - 0 0/5 12-20 * * ? * - This schedule begins at 12:00:00pm UTC on March 2nd 2023 - 0 0 12 2 3 ? 2023 - durationMillis: - type: string - description: describes the duration - DecorrelatedAll: - type: object - properties: - metadata: - allOf: - - $ref: '#/components/schemas/CorrelationMetadata' - description: Metadata about the decorrelation. - DecorrelatedSingle: - type: object - properties: - entityId: - type: string - description: The entity that was decorrelated against. - metadata: - allOf: - - $ref: '#/components/schemas/CorrelationMetadata' - description: Metadata about the decorrelation. - Decorrelation: - type: object - properties: - all: - allOf: - - $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 - which prevents lower precedence correlations from overriding it in the future. - For example, if an operator in the UI decorrelated tracks A and B, any automated - correlators would be unable to correlate them since manual decorrelations have - higher precedence than automatic ones. Precedence is determined by both correlation - type and replication mode. - Dimensions: - type: object - properties: - lengthM: - type: number - description: Length of the entity in meters - format: float - ENU: - type: object - properties: - e: - type: number - format: double - n: - type: number - format: double - u: - type: number - format: double - Echelon: - type: object - properties: - armyEchelon: - 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 - type: string - format: enum - description: |- - Describes a Echelon group type. Comprised of entities which are members of the - same unit or echelon. Ex: A group of tanks within a armored company or that same company - as a member of a battalion. - EmitterNotation: - type: object - properties: - emitterNotation: - type: string - confidence: - type: number - description: confidence as a percentage that the emitter notation in this component is accurate - format: double - description: A representation of a single emitter notation. - Entity: - type: object - properties: - entityId: - type: string - description: |- - A Globally Unique Identifier (GUID) for your entity. If this field is empty, the Entity Manager API - automatically generates an ID when it creates the entity. - description: - type: string - description: |- - A human-readable entity description that's helpful for debugging purposes and human - 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. - Set this field to true when publishing an entity. - createdTime: - type: string - description: |- - The time when the entity was first known to the entity producer. If this field is empty, the Entity Manager API uses the - current timestamp of when the entity is first received. - For example, when a drone is first powered on, it might report its startup time as the created time. - The timestamp doesn't change for the lifetime of an entity. - format: date-time - expiryTime: - type: string - description: |- - Future time that expires an entity and updates the is_live flag. - For entities that are constantly updating, the expiry time also updates. - In some cases, this may differ from is_live. - Example: Entities with tasks exported to an external system must remain - active even after they expire. - This field is required when publishing a prepopulated entity. - The expiry time must be in the future, but less than 30 days from the current time. - format: date-time - status: - allOf: - - $ref: '#/components/schemas/Status' - description: Human-readable descriptions of what the entity is currently doing. - location: - allOf: - - $ref: '#/components/schemas/Location' - description: Geospatial data related to the entity, including its position, kinematics, and orientation. - locationUncertainty: - allOf: - - $ref: '#/components/schemas/LocationUncertainty' - description: Indicates uncertainty of the entity's position and kinematics. - geoShape: - allOf: - - $ref: '#/components/schemas/GeoShape' - description: Geospatial representation of the entity, including entities that cover an area rather than a fixed point. - geoDetails: - allOf: - - $ref: '#/components/schemas/GeoDetails' - description: Additional details on what the geospatial area or point represents, along with visual display details. - aliases: - allOf: - - $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: - allOf: - - $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: - allOf: - - $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: - allOf: - - $ref: '#/components/schemas/MilView' - description: View of the entity. - ontology: - allOf: - - $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: - allOf: - - $ref: '#/components/schemas/Sensors' - description: Details an entity's available sensors. - payloads: - allOf: - - $ref: '#/components/schemas/Payloads' - description: Details an entity's available payloads. - powerState: - allOf: - - $ref: '#/components/schemas/PowerState' - description: Details the entity's power source. - provenance: - allOf: - - $ref: '#/components/schemas/Provenance' - description: The primary data source provenance for this entity. - overrides: - allOf: - - $ref: '#/components/schemas/Overrides' - description: Provenance of override data. - indicators: - allOf: - - $ref: '#/components/schemas/Indicators' - description: |- - Describes an entity's specific characteristics and the operations that can be performed on the entity. - For example, "simulated" informs the operator that the entity is from a simulation, and "deletable" - informs the operator (and system) that the delete operation is valid against the entity. - targetPriority: - allOf: - - $ref: '#/components/schemas/TargetPriority' - description: The prioritization associated with an entity, such as if it's a threat or a high-value target. - signal: - allOf: - - $ref: '#/components/schemas/Signal' - description: Describes an entity's signal characteristics, primarily used when an entity is a signal of interest. - transponderCodes: - allOf: - - $ref: '#/components/schemas/TransponderCodes' - description: A message describing any transponder codes associated with Mode 1, 2, 3, 4, 5, S interrogations. These are related to ADS-B modes. - dataClassification: - allOf: - - $ref: '#/components/schemas/Classification' - description: |- - Describes an entity's security classification levels at an overall classification level and on a per - field level. - taskCatalog: - allOf: - - $ref: '#/components/schemas/TaskCatalog' - description: A catalog of tasks that can be performed by an entity. - media: - allOf: - - $ref: '#/components/schemas/Media' - description: Media associated with an entity, such as videos, images, or thumbnails. - relationships: - allOf: - - $ref: '#/components/schemas/Relationships' - description: The relationships between this entity and other entities in the common operational picture (COP). - visualDetails: - allOf: - - $ref: '#/components/schemas/VisualDetails' - description: Visual details associated with the display of an entity in the client. - dimensions: - allOf: - - $ref: '#/components/schemas/Dimensions' - description: Physical dimensions of the entity. - routeDetails: - allOf: - - $ref: '#/components/schemas/RouteDetails' - description: Additional information about an entity's route. - schedules: - allOf: - - $ref: '#/components/schemas/Schedules' - description: Schedules associated with this entity. - health: - allOf: - - $ref: '#/components/schemas/Health' - description: Health metrics or connection status reported by the entity. - groupDetails: - allOf: - - $ref: '#/components/schemas/GroupDetails' - description: Details for the group associated with this entity. - supplies: - allOf: - - $ref: '#/components/schemas/Supplies' - description: Contains relevant supply information for the entity, such as fuel. - orbit: - allOf: - - $ref: '#/components/schemas/Orbit' - description: Orbit information for space objects. - description: |- - The entity object represents a single known object within the Lattice operational environment. It contains - all data associated with the entity, such as its name, ID, and other relevant components. - ErrorEllipse: - type: object - properties: - probability: - type: number - description: 'Defines the probability in percentage that an entity lies within the given ellipse: 0-1.' - format: double - semiMajorAxisM: - type: number - description: Defines the distance from the center point of the ellipse to the furthest distance on the perimeter in meters. - format: double - semiMinorAxisM: - type: number - description: Defines the distance from the center point of the ellipse to the shortest distance on the perimeter in meters. - format: double - orientationD: - type: number - 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.' - format: double - description: Indicates ellipse characteristics and probability that an entity lies within the defined ellipse. - ExecuteRequest: - type: object - properties: - task: - allOf: - - $ref: '#/components/schemas/Task' - description: Task to execute. - description: Request to execute a Task. - FieldClassificationInformation: - type: object - properties: - fieldPath: - type: string - description: |- - Proto field path which is the string representation of a field. - > example: signal.bandwidth_hz would be bandwidth_hz in the signal component - classificationInformation: - allOf: - - $ref: '#/components/schemas/ClassificationInformation' - description: The information which makes up the field level classification marking. - description: A field specific classification information definition. - FieldOfView: - type: object - properties: - fovId: - type: integer - description: |- - The Id for one instance of a FieldOfView, persisted across multiple updates to provide continuity during - smoothing. This is relevant for sensors where the dwell schedule is on the order of - milliseconds, making multiple FOVs a requirement for proper display of search beams. - format: int32 - mountId: - type: string - description: The Id of the mount the sensor is on. - projectedFrustum: - allOf: - - $ref: '#/components/schemas/ProjectedFrustum' - description: The field of view the sensor projected onto the ground. - projectedCenterRay: - allOf: - - $ref: '#/components/schemas/Position' - description: Center ray of the frustum projected onto the ground. - centerRayPose: - allOf: - - $ref: '#/components/schemas/Pose' - description: |- - The origin and direction of the center ray for this sensor relative to the ENU frame. A ray which is aligned with - the positive X axis in the sensor frame will be transformed into the ray along the sensor direction in the ENU - frame when transformed by the quaternion contained in this pose. - horizontalFov: - type: number - description: Horizontal field of view in radians. - format: float - verticalFov: - type: number - description: Vertical field of view in radians. - format: float - range: - type: number - description: Sensor range in meters. - format: float - mode: - enum: - - SENSOR_MODE_INVALID - - SENSOR_MODE_SEARCH - - SENSOR_MODE_TRACK - - SENSOR_MODE_WEAPON_SUPPORT - - SENSOR_MODE_AUTO - - SENSOR_MODE_MUTE - type: string - description: |- - The mode that this sensor is currently in, used to display for context in the UI. Some sensors can emit multiple - sensor field of views with different modes, for example a radar can simultaneously search broadly and perform - tighter bounded tracking. - format: enum - description: Sensor Field Of View closely resembling fov.proto SensorFieldOfView. - 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. - Frequency: - type: object - properties: - frequencyHz: - allOf: - - $ref: '#/components/schemas/Measurement' - description: Indicates a frequency of a signal (Hz) with its standard deviation. - description: A component for describing frequency. - FrequencyRange: - type: object - properties: - minimumFrequencyHz: - allOf: - - $ref: '#/components/schemas/Frequency' - description: Indicates the lowest measured frequency of a signal (Hz). - maximumFrequencyHz: - allOf: - - $ref: '#/components/schemas/Frequency' - description: Indicates the maximum measured frequency of a signal (Hz). - description: A component to represent a frequency range. - 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 - description: timestamp the information was reported - format: date-time - amountGallons: - type: integer - description: amount of gallons on hand - format: uint32 - maxAuthorizedCapacityGallons: - type: integer - description: how much the asset is allowed to have available (in gallons) - format: uint32 - operationalRequirementGallons: - type: integer - description: minimum required for operations (in gallons) - format: uint32 - dataClassification: - allOf: - - $ref: '#/components/schemas/Classification' - description: |- - fuel in a single asset may have different levels of classification - 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 - GeoDetails: - type: object - properties: - type: - 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 - type: string - format: enum - controlArea: - $ref: '#/components/schemas/ControlAreaDetails' - acm: - $ref: '#/components/schemas/ACMDetails' - description: A component that describes a geo-entity. - GeoEllipse: - type: object - properties: - semiMajorAxisM: - type: number - description: Defines the distance from the center point of the ellipse to the furthest distance on the perimeter in meters. - format: double - semiMinorAxisM: - type: number - description: Defines the distance from the center point of the ellipse to the shortest distance on the perimeter in meters. - format: double - orientationD: - type: number - 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.' - format: double - heightM: - type: number - description: Optional height above entity position to extrude in meters. A non-zero value creates an elliptic cylinder - format: double - description: |- - An ellipse shaped geo-entity. - For a circle, the major and minor axis would be the same values. - This shape is NOT Geo-JSON compatible. - GeoEllipsoid: - type: object - properties: - forwardAxisM: - type: number - description: Defines the distance from the center point to the surface along the forward axis - format: double - sideAxisM: - type: number - description: Defines the distance from the center point to the surface along the side axis - format: double - upAxisM: - type: number - description: Defines the distance from the center point to the surface along the up axis - format: double - description: |- - An ellipsoid shaped geo-entity. - Principal axis lengths are defined in entity body space - This shape is NOT Geo-JSON compatible. - GeoLine: - type: object - properties: - positions: - type: array - items: - $ref: '#/components/schemas/Position' - description: |- - A line shaped geo-entity. - See https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.4 - GeoPoint: - type: object - properties: - position: - $ref: '#/components/schemas/Position' - description: |- - A point shaped geo-entity. - See https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.2 - 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: - * exactly 1 linear ring with 5 points (starting corner, 3 other corners and start again) - * each point has the same altitude corresponding with the plane of the rectangle - * each point has the same height (either all present and equal, or all not present) - description: |- - A polygon shaped geo-entity. - See https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.6, only canonical representations accepted - GeoPolygonPosition: - type: object - properties: - position: - allOf: - - $ref: '#/components/schemas/Position' - description: base position. if no altitude set, its on the ground. - heightM: - type: number - description: |- - optional height above base position to extrude in meters. - for a given polygon, all points should have a height or none of them. - strictly GeoJSON compatible polygons will not have this set. - format: float - description: A position in a GeoPolygon with an optional extruded height. - 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. - GetTaskResponse: - type: object - properties: - task: - $ref: '#/components/schemas/Task' - GoogleProtobufAny: - type: object - properties: - '@type': - type: string - description: The type of the serialized message. - additionalProperties: true - description: Contains an arbitrary serialized message along with a @type that describes the type of the serialized message. - GroupChild: - type: object - properties: {} - description: |- - A GroupChild relationship is a uni-directional relationship indicating that (1) this entity - represents an Entity Group and (2) the related entity is a child member of this group. The presence of this - relationship alone determines that the type of group is an Entity Group. - GroupDetails: - type: object - properties: - team: - $ref: '#/components/schemas/Team' - echelon: - $ref: '#/components/schemas/Echelon' - description: Details related to grouping for this entity - GroupParent: - type: object - properties: {} - description: |- - A GroupParent relationship is a uni-directional relationship indicating that this entity is a member of - the Entity Group represented by the related entity. The presence of this relationship alone determines that - the type of group that this entity is a member of is an Entity Group. - Health: - type: object - properties: - connectionStatus: - enum: - - CONNECTION_STATUS_INVALID - - CONNECTION_STATUS_ONLINE - - CONNECTION_STATUS_OFFLINE - type: string - description: Status indicating whether the entity is able to communicate with Entity Manager. - format: enum - healthStatus: - enum: - - HEALTH_STATUS_INVALID - - HEALTH_STATUS_HEALTHY - - HEALTH_STATUS_WARN - - HEALTH_STATUS_FAIL - - HEALTH_STATUS_OFFLINE - - HEALTH_STATUS_NOT_READY - type: string - description: Top-level health status; typically a roll-up of individual component healths. - format: enum - components: - type: array - items: - $ref: '#/components/schemas/ComponentHealth' - description: Health of individual components running on this Entity. - updateTime: - type: string - description: |- - The update time for the top-level health information. - If this timestamp is unset, the data is assumed to be most recent - format: date-time - activeAlerts: - type: array - items: - $ref: '#/components/schemas/Alert' - description: |- - Active alerts indicate a critical change in system state sent by the asset - that must be made known to an operator or consumer of the common operating picture. - Alerts are different from ComponentHealth messages--an active alert does not necessarily - indicate a component is in an unhealthy state. For example, an asset may trigger - an active alert based on fuel levels running low. Alerts should be removed from this list when their conditions - are cleared. In other words, only active alerts should be reported here. - description: General health of the entity as reported by the entity. - HighValueTarget: - type: object - properties: - isHighValueTarget: - type: boolean - description: Indicates whether the target matches any description from a high value target list. - targetPriority: - type: integer - description: |- - The priority associated with the target. If the target's description appears on multiple high value target lists, - the priority will be a reflection of the highest priority of all of those list's target description. - - A lower value indicates the target is of a higher priority, with 1 being the highest possible priority. A value of - 0 indicates there is no priority associated with this target. - format: uint32 - 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. - 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. - The ID is considered to be a globally unique identifier across all high value target IDs. - 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. - 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. - LLA: - type: object - properties: - lon: - type: number - format: double - lat: - type: number - format: double - alt: - type: number - format: double - is2d: - type: boolean - altitudeReference: - 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 - type: string - description: |- - Meaning of alt. - altitude in meters above either WGS84 or EGM96, use altitude_reference to - determine what zero means. - format: enum - LineOfBearing: - type: object - properties: - angleOfArrival: - allOf: - - $ref: '#/components/schemas/AngleOfArrival' - description: The direction pointing from this entity to the detection - rangeEstimateM: - allOf: - - $ref: '#/components/schemas/Measurement' - description: The estimated distance of the detection - maxRangeM: - allOf: - - $ref: '#/components/schemas/Measurement' - description: The maximum distance of the detection - description: A line of bearing of a signal. - 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. - Location: - type: object - properties: - position: - allOf: - - $ref: '#/components/schemas/Position' - description: see Position definition for details. - velocityEnu: - allOf: - - $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 - description: Speed is the magnitude of velocity_enu vector [sqrt(e^2 + n^2 + u^2)] when present, measured in m/s. - format: double - acceleration: - allOf: - - $ref: '#/components/schemas/ENU' - description: The entity's acceleration in meters/s^2. - attitudeEnu: - allOf: - - $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. - LocationUncertainty: - type: object - properties: - positionEnuCov: - allOf: - - $ref: '#/components/schemas/TMat3' - description: |- - Positional covariance represented by the upper triangle of the covariance matrix. It is valid to populate - only the diagonal of the matrix if the full covariance matrix is unknown. - velocityEnuCov: - allOf: - - $ref: '#/components/schemas/TMat3' - description: |- - Velocity covariance represented by the upper triangle of the covariance matrix. It is valid to populate - only the diagonal of the matrix if the full covariance matrix is unknown. - positionErrorEllipse: - allOf: - - $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. - MeanKeplerianElements: - type: object - properties: - epoch: - type: string - description: UTC time of validity - format: date-time - semiMajorAxisKm: - type: number - description: 'Preferred: semi major axis in kilometers' - format: double - meanMotion: - type: number - description: If using SGP/SGP4, provide the Keplerian Mean Motion in revolutions per day - format: double - eccentricity: - type: number - format: double - inclinationDeg: - type: number - description: Angle of inclination in deg - format: double - raOfAscNodeDeg: - type: number - description: Right ascension of the ascending node in deg - format: double - argOfPericenterDeg: - type: number - description: Argument of pericenter in deg - format: double - meanAnomalyDeg: - type: number - description: Mean anomaly in deg - format: double - gm: - type: number - description: 'Optional: gravitational coefficient (Gravitational Constant x central mass) in kg^3 / s^2' - format: double - Measurement: - type: object - properties: - value: - type: number - description: The value of the measurement. - format: double - sigma: - type: number - description: Estimated one standard deviation in same unit as the value. - format: double - description: A component that describes some measured value with error. - Media: - type: object - properties: - media: - type: array - items: - $ref: '#/components/schemas/MediaItem' - description: Media associated with an entity. - MediaItem: - type: object - properties: - type: - enum: - - MEDIA_TYPE_INVALID - - MEDIA_TYPE_IMAGE - - MEDIA_TYPE_VIDEO - type: string - format: enum - relativePath: - type: string - description: The path, relative to the environment base URL, where media related to an entity can be accessed - MergedFrom: - type: object - properties: {} - description: |- - A MergedFrom relationship is a uni-directional relationship indicating that this entity is a merged entity whose - data has at least partially been merged from the related entity. - MilView: - type: object - properties: - disposition: - enum: - - DISPOSITION_UNKNOWN - - DISPOSITION_FRIENDLY - - DISPOSITION_HOSTILE - - DISPOSITION_SUSPICIOUS - - DISPOSITION_ASSUMED_FRIENDLY - - DISPOSITION_NEUTRAL - - DISPOSITION_PENDING - type: string - format: enum - environment: - enum: - - ENVIRONMENT_UNKNOWN - - ENVIRONMENT_AIR - - ENVIRONMENT_SURFACE - - ENVIRONMENT_SUB_SURFACE - - ENVIRONMENT_LAND - - ENVIRONMENT_SPACE - type: string - format: enum - nationality: - 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 - type: string - format: enum - description: Provides the disposition, environment, and nationality of an Entity. - Mode5: - type: object - properties: - mode5InterrogationResponse: - enum: - - INTERROGATION_RESPONSE_INVALID - - INTERROGATION_RESPONSE_CORRECT - - INTERROGATION_RESPONSE_INCORRECT - - INTERROGATION_RESPONSE_NO_RESPONSE - type: string - description: The validity of the response from the Mode 5 interrogation. - format: enum - mode5: - type: integer - description: The Mode 5 code assigned to military assets. - format: uint32 - mode5PlatformId: - type: integer - description: The Mode 5 platform identification code. - format: uint32 - description: Describes the Mode 5 transponder interrogation status and codes. - ModeS: - type: object - properties: - id: - type: string - description: Mode S identifier which comprises of 8 alphanumeric characters. - address: - type: integer - description: |- - The Mode S ICAO aircraft address. Expected values are between 1 and 16777214 decimal. The Mode S address is - considered unique. - format: uint32 - description: Describes the Mode S codes. - NonPrimaryMembership: - type: object - properties: {} - 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: - enum: - - TEMPLATE_INVALID - - TEMPLATE_TRACK - - TEMPLATE_SENSOR_POINT_OF_INTEREST - - TEMPLATE_ASSET - - TEMPLATE_GEO - - TEMPLATE_SIGNAL_OF_INTEREST - type: string - description: The template used when creating this entity. Specifies minimum required components. - format: enum - description: Ontology of the entity. - Orbit: - type: object - properties: - orbitMeanElements: - allOf: - - $ref: '#/components/schemas/OrbitMeanElements' - description: Orbit Mean Elements data, analogous to the Orbit Mean Elements Message in CCSDS 502.0-B-3 - 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 - OrbitMeanElementsMetadata: - type: object - properties: - creationDate: - type: string - description: Creation date/time in UTC - format: date-time - originator: - type: string - description: Creating agency or operator - messageId: - type: string - description: ID that uniquely identifies a message from a given originator. - refFrame: - enum: - - ECI_REFERENCE_FRAME_INVALID - - ECI_REFERENCE_FRAME_TEME - type: string - description: Reference frame, assumed to be Earth-centered - format: enum - refFrameEpoch: - type: string - description: Reference frame epoch in UTC - mandatory only if not intrinsic to frame definition - format: date-time - meanElementTheory: - enum: - - MEAN_ELEMENT_THEORY_INVALID - - MEAN_ELEMENT_THEORY_SGP4 - type: string - format: enum - 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. - example: correlated.primary_entity_id would be primary_entity_id in correlated component - maskedFieldValue: - allOf: - - $ref: '#/components/schemas/Entity' - description: |- - new field value corresponding to field path. In the shape of an empty entity with only the changed value. - example: entity: { mil_view: { disposition: Disposition_DISPOSITION_HOSTILE } } - status: - enum: - - OVERRIDE_STATUS_INVALID - - OVERRIDE_STATUS_APPLIED - - OVERRIDE_STATUS_PENDING - - OVERRIDE_STATUS_TIMEOUT - - OVERRIDE_STATUS_REJECTED - - OVERRIDE_STATUS_DELETION_PENDING - type: string - description: status of the override - format: enum - provenance: - $ref: '#/components/schemas/Provenance' - type: - enum: - - OVERRIDE_TYPE_INVALID - - OVERRIDE_TYPE_LIVE - - OVERRIDE_TYPE_POST_EXPIRY - type: string - description: |- - The type of the override, defined by the stage of the entity lifecycle that the entity was in when the override - was requested. - format: enum - requestTimestamp: - type: string - description: Timestamp of the override request. The timestamp is generated by the Entity Manager instance that receives the request. - format: date-time - description: Details about an override. Last write wins. - Overrides: - type: object - properties: - override: - type: array - items: - $ref: '#/components/schemas/Override' - description: Metadata about entity overrides present. - Owner: - type: object - properties: - entityId: - type: string - description: Entity ID of the owner. - description: Owner designates the entity responsible for writes of Task data. - Payload: - type: object - properties: - config: - $ref: '#/components/schemas/PayloadConfiguration' - description: Individual payload configuration. - PayloadConfiguration: - type: object - properties: - capabilityId: - type: string - description: |- - Identifying ID for the capability. - This ID may be used multiple times to represent payloads that are the same capability but have different operational states - quantity: - type: integer - description: The number of payloads currently available in the configuration. - format: uint32 - effectiveEnvironment: - type: array - items: - enum: - - ENVIRONMENT_UNKNOWN - - ENVIRONMENT_AIR - - ENVIRONMENT_SURFACE - - ENVIRONMENT_SUB_SURFACE - - ENVIRONMENT_LAND - - ENVIRONMENT_SPACE - type: string - format: enum - description: The target environments the configuration is effective against. - payloadOperationalState: - 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 - type: string - description: The operational state of this payload. - format: enum - payloadDescription: - type: string - description: A human readable description of the payload - Payloads: - type: object - properties: - payloadConfigurations: - type: array - items: - $ref: '#/components/schemas/Payload' - description: List of payloads available for an entity. - Pose: - type: object - properties: - pos: - allOf: - - $ref: '#/components/schemas/LLA' - description: Geospatial location defined by this Pose. - attEnu: - allOf: - - $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, - etc and is determined by the context in which this Pose is used. - The normal convention for defining orientation is to list the frames of transformation, for example - att_gimbal_to_enu is the quaternion which transforms a point in the gimbal frame to the body frame, but - in this case we truncate to att_enu because the Pose frame isn't defined. A potentially better name for this - field would have been att_pose_to_enu. - - Implementations of this quaternion should left multiply this quaternion to transform a point from the Pose frame - to the enu frame. - - Point posePt{1,0,0}; - Rotation attPoseToEnu{}; - Point = attPoseToEnu*posePt; - - This transformed point represents some vector in ENU space that is aligned with the x axis of the attPoseToEnu - matrix. - - An alternative matrix expression is as follows: - ptEnu = M x ptPose - Position: - type: object - properties: - latitudeDegrees: - type: number - description: WGS84 geodetic latitude in decimal degrees. - format: double - longitudeDegrees: - type: number - description: WGS84 longitude in decimal degrees. - format: double - altitudeHaeMeters: - type: number - description: |- - altitude as height above ellipsoid (WGS84) in meters. DoubleValue wrapper is used to distinguish optional from - default 0. - format: double - altitudeAglMeters: - type: number - description: |- - Altitude as AGL (Above Ground Level) if the upstream data source has this value set. This value represents the - entity's height above the terrain. This is typically measured with a radar altimeter or by using a terrain tile - set lookup. If the value is not set from the upstream, this value is not set. - format: double - altitudeAsfMeters: - type: number - 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 - not set. - format: double - pressureDepthMeters: - type: number - description: |- - The depth of the entity from the surface of the water through sensor measurements based on differential pressure - between the interior and exterior of the vessel. If the value is not set from the upstream, this value is not set. - format: double - description: |- - WGS84 position. Position includes four altitude references. - The data model does not currently support Mean Sea Level (MSL) references, - such as the Earth Gravitational Model 1996 (EGM-96) and the Earth Gravitational Model 2008 (EGM-08). - If the only altitude reference available to your integration is MSL, convert it to - Height Above Ellipsoid (HAE) and populate the altitude_hae_meters field. - PowerLevel: - type: object - properties: - capacity: - type: number - description: Total power capacity of the system. - format: float - remaining: - type: number - description: Remaining power capacity of the system. - format: float - percentRemaining: - type: number - description: Percent of power remaining. - format: float - voltage: - type: number - description: |- - Voltage of the power source subsystem, as reported by the power source. If the source does not report this value - this field will be null. - format: double - currentAmps: - type: number - description: |- - Current in amps of the power source subsystem, as reported by the power source. If the source does not - report this value this field will be null. - format: double - runTimeToEmptyMins: - type: number - description: |- - Estimated minutes until empty. Calculated with consumption at the moment, as reported by the power source. If the source does not - report this value this field will be null. - format: double - consumptionRateLPerS: - type: number - description: Fuel consumption rate in liters per second. - format: double - description: Represents the power level of a system. - PowerSource: - type: object - properties: - powerStatus: - enum: - - POWER_STATUS_INVALID - - POWER_STATUS_UNKNOWN - - POWER_STATUS_NOT_PRESENT - - POWER_STATUS_OPERATING - - POWER_STATUS_DISABLED - - POWER_STATUS_ERROR - type: string - description: Status of the power source. - format: enum - powerType: - enum: - - POWER_TYPE_INVALID - - POWER_TYPE_UNKNOWN - - POWER_TYPE_GAS - - POWER_TYPE_BATTERY - type: string - description: Used to determine the type of power source. - format: enum - powerLevel: - allOf: - - $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 - 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 - report whether the power source is offloadable. - description: Represents the state of a single power source that is connected to this entity. - 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 - power source. - description: Represents the state of power sources connected to this entity. - PrimaryCorrelation: - type: object - properties: - secondaryEntityIds: - type: array - items: - type: string - description: The secondary entity IDs part of this correlation. - PrimaryMembership: - type: object - properties: {} - Principal: - type: object - properties: - system: - $ref: '#/components/schemas/System' - user: - $ref: '#/components/schemas/User' - team: - $ref: '#/components/schemas/Team' - onBehalfOf: - allOf: - - $ref: '#/components/schemas/Principal' - description: |- - The Principal _this_ Principal is acting on behalf of. - - 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. - ProjectedFrustum: - type: object - properties: - upperLeft: - allOf: - - $ref: '#/components/schemas/Position' - description: Upper left point of the frustum. - upperRight: - allOf: - - $ref: '#/components/schemas/Position' - description: Upper right point of the frustum. - bottomRight: - allOf: - - $ref: '#/components/schemas/Position' - description: Bottom right point of the frustum. - bottomLeft: - allOf: - - $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 - are optional, if the projection to the ground fails then they will not be populated. - 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 - description: |- - The time, according to the source system, that the data in the entity was last modified. Generally, this should - be the time that the source-reported time of validity of the data in the entity. This field must be - updated with every change to the entity or else Entity Manager will discard the update. - format: date-time - sourceDescription: - type: string - description: Description of the modification source. In the case of a user this is the email address. - description: Data provenance. - PulseRepetitionInterval: - type: object - properties: - pulseRepetitionIntervalS: - $ref: '#/components/schemas/Measurement' - description: A component that describe the length in time between two pulses - Quaternion: - type: object - properties: - x: - type: number - description: x, y, z are vector portion, w is scalar - format: double - y: - type: number - format: double - z: - type: number - format: double - w: - type: number - format: double - 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. - RangeRings: - type: object - properties: - minDistanceM: - type: number - description: The minimum range ring distance, specified in meters. - format: double - maxDistanceM: - type: number - description: The maximum range ring distance, specified in meters. - format: double - ringCount: - type: integer - description: The count of range rings. - format: uint32 - ringLineColor: - allOf: - - $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. - Relations: - type: object - properties: - assignee: - allOf: - - $ref: '#/components/schemas/Principal' - description: Who or what, if anyone, this Task is currently assigned to. - parentTaskId: - type: string - description: If this Task is a "sub-Task", what is its parent, none if empty. - description: Relations describes the relationships of this Task, such as assignment, or if the Task has any parents. - 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: - allOf: - - $ref: '#/components/schemas/RelationshipType' - description: The relationship type - description: The relationship component indicates a relationship to another entity. - 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. - 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. - Replication: - type: object - properties: - staleTime: - type: string - description: Time by which this Task should be assumed to be stale. - format: date-time - description: Any metadata associated with the replication of a Task. - RouteDetails: - type: object - properties: - destinationName: - type: string - description: Free form text giving the name of the entity's destination - estimatedArrivalTime: - type: string - description: Estimated time of arrival at destination - format: date-time - ScanCharacteristics: - type: object - properties: - scanType: - 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 - type: string - format: enum - scanPeriodS: - type: number - format: double - description: A component that describes the scanning characteristics of a signal - 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: - enum: - - SCHEDULE_TYPE_INVALID - - SCHEDULE_TYPE_ZONE_ENABLED - - SCHEDULE_TYPE_ZONE_TEMP_ENABLED - type: string - description: The schedule type - format: enum - description: A Schedule associated with this entity - Schedules: - type: object - properties: - schedules: - type: array - items: - $ref: '#/components/schemas/Schedule' - description: Schedules associated with this entity - SecondaryCorrelation: - type: object - properties: - primaryEntityId: - type: string - description: The primary of this correlation. - metadata: - allOf: - - $ref: '#/components/schemas/CorrelationMetadata' - description: Metadata about the correlation. - 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: - enum: - - OPERATIONAL_STATE_INVALID - - OPERATIONAL_STATE_OFF - - OPERATIONAL_STATE_NON_OPERATIONAL - - OPERATIONAL_STATE_DEGRADED - - OPERATIONAL_STATE_OPERATIONAL - - OPERATIONAL_STATE_DENIED - type: string - format: enum - sensorType: - 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 - type: string - description: The type of sensor - format: enum - sensorDescription: - type: string - description: A human readable description of the sensor - rfConfiguraton: - allOf: - - $ref: '#/components/schemas/RFConfiguration' - description: RF configuration details of the sensor - lastDetectionTimestamp: - type: string - description: Time of the latest detection from the sensor - format: date-time - fieldsOfView: - type: array - items: - $ref: '#/components/schemas/FieldOfView' - description: Multiple fields of view for a single sensor component - description: Individual sensor configuration. - Sensors: - type: object - properties: - sensors: - type: array - items: - $ref: '#/components/schemas/Sensor' - description: List of sensors available for an entity. - Signal: - type: object - properties: - frequencyCenter: - $ref: '#/components/schemas/Frequency' - frequencyRange: - $ref: '#/components/schemas/FrequencyRange' - bandwidthHz: - type: number - description: Indicates the bandwidth of a signal (Hz). - format: double - signalToNoiseRatio: - type: number - description: Indicates the signal to noise (SNR) of this signal. - format: double - 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 - description: length in time of a single pulse - format: double - pulseRepetitionInterval: - allOf: - - $ref: '#/components/schemas/PulseRepetitionInterval' - description: length in time between the start of two pulses - scanCharacteristics: - allOf: - - $ref: '#/components/schemas/ScanCharacteristics' - description: describes how a signal is observing the environment - description: A component that describes an entity's signal characteristics. - Status: - type: object - properties: - code: - type: integer - description: The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code]. - format: int32 - 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/GoogleProtobufAny' - 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).' - Supplies: - type: object - properties: - 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) - 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. - This means we bypass manager-owned scheduling and defer to the system - Principal to handle scheduling and give us status updates for the Task. - Regardless of the value defined by the client, the Task Manager will - determine and set this value appropriately. - description: System Principal representing some autonomous system. - 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 - covariance matrices - TMat3: - type: object - properties: - mxx: - type: number - format: float - mxy: - type: number - format: float - mxz: - type: number - format: float - myy: - type: number - format: float - myz: - type: number - format: float - mzz: - type: number - format: float - description: Symmetric 3d matrix only representing the upper right triangle. - TargetPriority: - type: object - properties: - highValueTarget: - allOf: - - $ref: '#/components/schemas/HighValueTarget' - description: Describes the target priority in relation to high value target lists. - threat: - allOf: - - $ref: '#/components/schemas/Threat' - description: Describes whether the entity should be treated as a threat - description: The target prioritization associated with an entity. - Task: - type: object - properties: - version: - allOf: - - $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: - allOf: - - $ref: '#/components/schemas/GoogleProtobufAny' - description: Full Task parameterization. - createdBy: - allOf: - - $ref: '#/components/schemas/Principal' - description: Records who created this Task. This field will not change after the Task has been created. - lastUpdatedBy: - allOf: - - $ref: '#/components/schemas/Principal' - description: Records who updated this Task last. - lastUpdateTime: - type: string - description: Records the time of last update. - format: date-time - status: - allOf: - - $ref: '#/components/schemas/TaskStatus' - description: The status of this Task. - scheduledTime: - type: string - description: If the Task has been scheduled to execute, what time it should execute at. - format: date-time - relations: - allOf: - - $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. - In other words, Task manager will not attempt to update the assigned agent with execution instructions. - createTime: - type: string - description: Time of Task creation. - format: date-time - replication: - allOf: - - $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 - For example, an entity Objective, an entity Keep In Zone, etc. - These will not be updated during execution. If a taskable agent needs continuous updates on the entities from the - COP, can call entity-manager, or use an AlternateId escape hatch. - owner: - allOf: - - $ref: '#/components/schemas/Owner' - description: |- - The networked owner of this Task. It is used to ensure that linear writes occur on the node responsible - for replication of task data to other nodes running Task Manager. - description: A Task is something an agent can be asked to do. - TaskCatalog: - type: object - properties: - taskDefinitions: - type: array - items: - $ref: '#/components/schemas/TaskDefinition' - description: Catalog of supported tasks. - 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. - TaskEntity: - type: object - properties: - entity: - allOf: - - $ref: '#/components/schemas/Entity' - description: The wrapped entity-manager entity. - snapshot: - type: boolean - description: Indicates that this entity was generated from a snapshot of a live entity. - description: Wrapper of an entity passed in Tasking, used to hold an additional information, and as a future extension point. - TaskError: - type: object - properties: - code: - enum: - - ERROR_CODE_INVALID - - ERROR_CODE_CANCELLED - - ERROR_CODE_REJECTED - - ERROR_CODE_TIMEOUT - - ERROR_CODE_FAILED - type: string - description: Error code for Task error. - format: enum - message: - type: string - description: Descriptive human-readable string regarding this error. - errorDetails: - allOf: - - $ref: '#/components/schemas/GoogleProtobufAny' - description: Any additional details regarding this error. - description: TaskError contains an error code and message typically associated to a Task. - TaskQueryResponse: - type: object - properties: - executeRequest: - $ref: '#/components/schemas/ExecuteRequest' - cancelRequest: - $ref: '#/components/schemas/CancelRequest' - completeRequest: - $ref: '#/components/schemas/CompleteRequest' - TaskStatus: - type: object - properties: - status: - 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 - type: string - description: Status of the Task. - format: enum - taskError: - allOf: - - $ref: '#/components/schemas/TaskError' - description: Any errors associated with the Task. - progress: - allOf: - - $ref: '#/components/schemas/GoogleProtobufAny' - description: Any incremental progress on the Task, should be from the tasks/v*/progress folder. - result: - allOf: - - $ref: '#/components/schemas/GoogleProtobufAny' - description: Any final result of the Task, should be from tasks/v*/result folder. - startTime: - type: string - description: Time the Task began execution, may not be known even for executing Tasks. - format: date-time - estimate: - allOf: - - $ref: '#/components/schemas/GoogleProtobufAny' - description: Any estimate for how the Task will progress, should be from tasks/v*/estimates folder. - allocation: - allOf: - - $ref: '#/components/schemas/Allocation' - description: Any allocated agents of the Task. - description: |- - TaskStatus is contains information regarding the status of a Task at any given time. Can include related information - such as any progress towards Task completion, or any associated results if Task completed. - TaskVersion: - type: object - properties: - taskId: - type: string - description: The unique ID for this Task. - definitionVersion: - type: integer - description: Increments on definition (i.e. not TaskStatus) change. 0 is unset, starts at 1 on creation. - format: uint32 - statusVersion: - type: integer - description: Increments on changes to TaskStatus. 0 is unset, starts at 1 on creation. - format: uint32 - description: Version of a Task. - 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 - 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. - TleParameters: - type: object - properties: - ephemerisType: - type: integer - description: Integer specifying TLE ephemeris type - format: uint32 - classificationType: - type: string - description: User-defined free-text message classification/caveats of this TLE - noradCatId: - type: integer - description: 'Norad catalog number: integer up to nine digits.' - format: uint32 - elementSetNo: - type: integer - format: uint32 - revAtEpoch: - type: integer - description: 'Optional: revolution number' - format: uint32 - bstar: - type: number - description: Drag parameter for SGP-4 in units 1 / Earth radii - format: double - bterm: - type: number - description: Drag parameter for SGP4-XP in units m^2 / kg - format: double - meanMotionDot: - type: number - description: First time derivative of mean motion in rev / day^2 - format: double - meanMotionDdot: - type: number - description: Second time derivative of mean motion in rev / day^3. For use with SGP or PPT3. - format: double - agom: - type: number - description: Solar radiation pressure coefficient A_gamma / m in m^2 / kg. For use with SGP4-XP. - format: double - Tracked: - type: object - properties: - trackQualityWrapper: - type: integer - description: Quality score, 0-15, nil if none - format: int32 - sensorHits: - type: integer - description: Sensor hits aggregation on the tracked entity. - format: int32 - numberOfObjects: - allOf: - - $ref: '#/components/schemas/UInt32Range' - description: |- - Estimated number of objects or units that are represented by this entity. Known as Strength in certain contexts (Link16) - if UpperBound == LowerBound; (strength = LowerBound) - If both UpperBound and LowerBound are defined; strength is between LowerBound and UpperBound (represented as string "Strength: 4-5") - If UpperBound is defined only (LowerBound unset), Strength ≤ UpperBound - If LowerBound is defined only (UpperBound unset), LowerBound ≤ Strength - 0 indicates unset. - radarCrossSection: - type: number - 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 - detected. The unit is “decibels per square meter,” or dBsm - format: double - lastMeasurementTime: - type: string - description: Timestamp of the latest tracking measurement for this entity. - format: date-time - lineOfBearing: - allOf: - - $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. - 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. - TrackedBy: - type: object - properties: - activelyTrackingSensors: - allOf: - - $ref: '#/components/schemas/Sensors' - description: |- - Sensor details of the tracking entity's sensors that were active and tracking the tracked entity. This may be - a subset of the total sensors available on the tracking entity. - lastMeasurementTimestamp: - type: string - description: Latest time that any sensor in actively_tracking_sensors detected the tracked entity. - format: date-time - description: |- - Describes the relationship between the entity being tracked ("tracked entity") and the entity that is - performing the tracking ("tracking entity"). - TransponderCodes: - type: object - properties: - mode1: - type: integer - description: The mode 1 code assigned to military assets. - format: uint32 - mode2: - type: integer - description: The Mode 2 code assigned to military assets. - format: uint32 - mode3: - type: integer - description: The Mode 3 code assigned by ATC to the asset. - format: uint32 - mode4InterrogationResponse: - enum: - - INTERROGATION_RESPONSE_INVALID - - INTERROGATION_RESPONSE_CORRECT - - INTERROGATION_RESPONSE_INCORRECT - - INTERROGATION_RESPONSE_NO_RESPONSE - type: string - description: The validity of the response from the Mode 4 interrogation. - format: enum - mode5: - allOf: - - $ref: '#/components/schemas/Mode5' - description: The Mode 5 transponder codes. - modeS: - allOf: - - $ref: '#/components/schemas/ModeS' - description: The Mode S transponder codes. - description: A message describing any transponder codes associated with Mode 1, 2, 3, 4, 5, S interrogations. - UInt32Range: - type: object - properties: - lowerBound: - type: integer - format: uint32 - upperBound: - type: integer - format: uint32 - User: - type: object - properties: - userId: - type: string - description: The User ID associated with this User. - description: A User Principal representing a human. - VisualDetails: - type: object - properties: - rangeRings: - allOf: - - $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. -tags: - - name: TaskManagerRestAPI diff --git a/protos/anduril/tasks/ad/desertguardian/common/v1/common_tasks.pub.proto b/protos/anduril/tasks/ad/desertguardian/common/v1/common_tasks.pub.proto deleted file mode 100644 index 984d844..0000000 --- a/protos/anduril/tasks/ad/desertguardian/common/v1/common_tasks.pub.proto +++ /dev/null @@ -1,38 +0,0 @@ -syntax = "proto3"; - -package anduril.tasks.ad.desertguardian.common.v1; - -option csharp_namespace = "Anduril.Tasks.AD.desertguardian.common.v1"; -option java_multiple_files = true; -option java_outer_classname = "ThirdPartyCommonTaskProto"; -option java_package = "com.anduril.tasks.ad.desertguardian.common.v1"; -option objc_class_prefix = "DesertGuardianThirdParty"; - -// Set the power state of a Platform. It is up to the Platform to interpret the power state and act accordingly. -message SetPowerState { - PowerState power_state = 1; -} - -enum PowerState { - POWER_STATE_INVALID = 0; - POWER_STATE_ON = 1; - POWER_STATE_OFF = 2; -} - -// Delete an entity from the internal tracker of a Platform. -// Does not silence or suppress the track from re-forming if the tracking conditions are satisfied. -message DeleteTrack { - string entity_id = 1; -} - -// Set this entity as a "High Priority Track". -// The tasked Platform is responsible for maintaining a list of current High-Priority tracks. -message SetHighPriorityTrack { - string entity_id = 1; -} - -// Unset this entity as a "High Priority Track". -// The tasked Platform is responsible for maintaining a list of current High-Priority tracks. -message RemoveHighPriorityTrack { - string entity_id = 1; -} diff --git a/protos/anduril/tasks/ad/desertguardian/rf/v1/rf_tasks.pub.proto b/protos/anduril/tasks/ad/desertguardian/rf/v1/rf_tasks.pub.proto deleted file mode 100644 index 1a7a3fa..0000000 --- a/protos/anduril/tasks/ad/desertguardian/rf/v1/rf_tasks.pub.proto +++ /dev/null @@ -1,44 +0,0 @@ -syntax = "proto3"; - -package anduril.tasks.ad.desertguardian.rf.v1; - -option csharp_namespace = "Anduril.Tasks.AD.desertguardian.rf.v1"; -option java_multiple_files = true; -option java_outer_classname = "ThirdPartyRfTaskProto"; -option java_package = "com.anduril.tasks.ad.desertguardian.rf.v1"; -option objc_class_prefix = "DesertGuardianThirdParty"; - -// Set the transmit state of an RF Platform such as a Radar, Beacon, or Radio. -message SetTransmitState { - TransmitState transmit_state = 1; -} - -enum TransmitState { - TRANSMIT_STATE_INVALID = 0; - TRANSMIT_STATE_TRANSMITTING = 1; - TRANSMIT_STATE_NOT_TRANSMITTING = 2; -} - -// Set the surveillance state of a passive (listen-only) RF Platform. -message SetSurveillanceState { - SurveillanceState surveillance_state = 1; -} - -enum SurveillanceState { - SURVEILLANCE_STATE_INVALID = 0; - SURVEILLANCE_STATE_SURVEILLING = 1; - SURVEILLANCE_STATE_NOT_SURVEILLING = 2; -} - -// Set whether or not an RF Platform has Emmission Control (EmCon). -// If supported, RF platforms should only expose the SetTransmitState task when EmissionControlState is EMISSION_CONTROL_STATE_ALLOWED. -// When in EMISSION_CONTROL_STATE_NOT_ALLOWED, the Platform should be in TRANSMIT_STATE_NOT_TRANSMITTING, and should remove SetTransmitState from the task Catalog. -message SetEmissionControlState { - EmissionControlState emcon_state = 1; -} - -enum EmissionControlState { - EMISSION_CONTROL_STATE_INVALID = 0; - EMISSION_CONTROL_STATE_ALLOWED = 1; - EMISSION_CONTROL_STATE_NOT_ALLOWED = 2; -} diff --git a/protos/anduril/tasks/ads/thirdparty/v1/formation.pub.proto b/protos/anduril/tasks/ads/thirdparty/v1/formation.pub.proto deleted file mode 100644 index 049e64b..0000000 --- a/protos/anduril/tasks/ads/thirdparty/v1/formation.pub.proto +++ /dev/null @@ -1,25 +0,0 @@ -syntax = "proto3"; - -package anduril.tasks.ads.thirdparty.v1; - -import "anduril/tasks/v2/objective.pub.proto"; -import "google/protobuf/wrappers.proto"; - -option csharp_namespace = "Anduril.Tasks.ADS.ThirdParty.v1"; -option java_multiple_files = true; -option java_outer_classname = "ThirdPartyPowerTaskProto"; -option java_package = "com.anduril.tasks.ADS.thirdparty.v1"; -option objc_class_prefix = "ADSThirdParty"; -option php_namespace = "Anduril\\Tasks\\ADS\\ThirdParty\\v1"; - -// Maps to a Line formation of assets with a speed. This is a simple line with two LLAs. -message LineFormation { - // Line start - anduril.tasks.v2.Objective line_start = 1; - - // Line end - anduril.tasks.v2.Objective line_end = 2; - - // Speed in Meters/Second to get in Line Formation - google.protobuf.DoubleValue surface_speed_ms = 3; -} diff --git a/protos/anduril/tasks/ads/thirdparty/v1/marshal.pub.proto b/protos/anduril/tasks/ads/thirdparty/v1/marshal.pub.proto deleted file mode 100644 index ebdd703..0000000 --- a/protos/anduril/tasks/ads/thirdparty/v1/marshal.pub.proto +++ /dev/null @@ -1,23 +0,0 @@ -syntax = "proto3"; - -package anduril.tasks.ads.thirdparty.v1; - -import "anduril/tasks/v2/objective.pub.proto"; -import "google/protobuf/wrappers.proto"; - -option csharp_namespace = "Anduril.Tasks.ADS.ThirdParty.v1"; -option java_multiple_files = true; -option java_outer_classname = "ThirdPartyPowerTaskProto"; -option java_package = "com.anduril.tasks.ADS.thirdparty.v1"; -option objc_class_prefix = "ADSThirdParty"; -option php_namespace = "Anduril\\Tasks\\ADS\\ThirdParty\\v1"; - -// Maps to BREVITY code Marshal. -// Establish(ed) at a specific point, typically used to posture forces in preparation for an offensive operation. -message Marshal { - // Objective to Marshal to. - anduril.tasks.v2.Objective objective = 1; - - // Speed in Meters/Second - google.protobuf.DoubleValue surface_speed_ms = 2; -} diff --git a/protos/anduril/tasks/jadc2/thirdparty/v1/power.pub.proto b/protos/anduril/tasks/jadc2/thirdparty/v1/power.pub.proto deleted file mode 100644 index 6e2d75d..0000000 --- a/protos/anduril/tasks/jadc2/thirdparty/v1/power.pub.proto +++ /dev/null @@ -1,21 +0,0 @@ -syntax = "proto3"; - -package anduril.tasks.jadc2.thirdparty.v1; - -option csharp_namespace = "Anduril.Tasks.JADC2.ThirdParty.v1"; -option java_multiple_files = true; -option java_outer_classname = "ThirdPartyPowerTaskProto"; -option java_package = "com.anduril.tasks.jadc2.thirdparty.v1"; -option objc_class_prefix = "JADC2ThirdParty"; -option php_namespace = "Anduril\\Tasks\\JADC2\\ThirdParty\\v1"; - -// Set the power state of a robot. It is up to the robot to interpret the power state and act accordingly. -message SetPowerState { - PowerState power_state = 1; -} - -enum PowerState { - POWER_STATE_INVALID = 0; - POWER_STATE_ON = 1; - POWER_STATE_OFF = 2; -} diff --git a/protos/anduril/tasks/jadc2/thirdparty/v1/transit.pub.proto b/protos/anduril/tasks/jadc2/thirdparty/v1/transit.pub.proto deleted file mode 100644 index 1ec4f33..0000000 --- a/protos/anduril/tasks/jadc2/thirdparty/v1/transit.pub.proto +++ /dev/null @@ -1,39 +0,0 @@ -syntax = "proto3"; - -package anduril.tasks.jadc2.thirdparty.v1; - -import "anduril/type/coords.pub.proto"; -import "google/protobuf/wrappers.proto"; - -option csharp_namespace = "Anduril.Tasks.JADC2.ThirdParty.v1"; -option java_multiple_files = true; -option java_outer_classname = "JADC2ThirdPartyTasksProto"; -option java_package = "com.anduril.tasks.jadc2.thirdparty.v1"; -option objc_class_prefix = "JADC2ThirdParty"; -option php_namespace = "Anduril\\Tasks\\JADC2\\ThirdParty\\v1"; - -// Transit represents moving a vehicle on a path through one or more points. -message Transit { - // The path consisting of all segments to be taken for this transit task. - repeated anduril.tasks.jadc2.thirdparty.v1.PathSegment path = 1; - - // Speed in which the vehicle will move through each of the path segments. - google.protobuf.DoubleValue surface_speed_ms = 2; -} - -message PathSegment { - // Describes the end of the path segment, the starting point is the end of the previous segment or the - // current position if first. Note that the Altitude reference for a given waypoint dictates the height - // mode used when traversing TO that waypoint. - anduril.type.LLA endpoint = 1; -} - -// TeamTransit represents moving a team of vehicles into a zone. -// The specifics of how each vehicle in the team behaves is determined by the specific autonomy logic. -message TeamTransit { - // Reference to GeoPolygon GeoEntity representing the transit zone area. - string transit_zone_entity_id = 1; - - // Speed in which the vehicles will move to the zone. - google.protobuf.DoubleValue surface_speed_ms = 2; -} diff --git a/protos/anduril/tasks/v2/catalog.pub.proto b/protos/anduril/tasks/v2/catalog.pub.proto deleted file mode 100644 index c09a44b..0000000 --- a/protos/anduril/tasks/v2/catalog.pub.proto +++ /dev/null @@ -1,20 +0,0 @@ -syntax = "proto3"; - -package anduril.tasks.v2; - -option java_multiple_files = true; -option java_outer_classname = "TaskCatalogProto"; -option java_package = "com.anduril.tasks.v2"; - -// Catalog of supported tasks. -message TaskCatalog { - repeated TaskDefinition task_definitions = 1; - - reserved 2; -} - -// Defines a supported task by the task specification URL of its "Any" type. -message TaskDefinition { - // Url path must be prefixed with `type.googleapis.com/`. - string task_specification_url = 1; -} diff --git a/protos/anduril/tasks/v2/common.pub.proto b/protos/anduril/tasks/v2/common.pub.proto deleted file mode 100644 index ec05169..0000000 --- a/protos/anduril/tasks/v2/common.pub.proto +++ /dev/null @@ -1,58 +0,0 @@ -syntax = "proto3"; - -package anduril.tasks.v2; - -import "google/protobuf/duration.proto"; - -option java_multiple_files = true; -option java_package = "com.anduril.tasks.v2"; - -// Maps to the UCI DurationRangeType. -message DurationRange { - google.protobuf.Duration min = 1; - google.protobuf.Duration max = 2; -} - -// Maps to the UCI AnglePair. -message AnglePair { - // Angle lower bound in radians. - double min = 1; - // Angle lower bound in radians. - double max = 2; -} - -// Maps to UCI AreaConstraints. -message AreaConstraints { - AltitudeConstraint altitude_constraint = 1; -} - -message AltitudeConstraint { - // Minimum altitude (AGL) in meters. - double min = 1; - // Maximum altitude (AGL) in meters. - double max = 2; -} - -// Includes information about an Agent. -message Agent { - string entity_id = 2; - - reserved 1; -} - -// Models a Control Area within which Agents must operate. -message ControlArea { - // Reference to GeoPolygon GeoEntity representing the ControlArea. - string entity_id = 1; - // Type of ControlArea. - ControlAreaType control_area_type = 2; -} - -enum ControlAreaType { - CONTROL_AREA_TYPE_INVALID = 0; - CONTROL_AREA_TYPE_KEEP_IN_ZONE = 1; - CONTROL_AREA_TYPE_KEEP_OUT_ZONE = 2; - // Zone for an autonomous asset to nose-dive into - // when its assignment has been concluded - CONTROL_AREA_TYPE_DITCH_ZONE = 3; -} diff --git a/protos/anduril/tasks/v2/objective.pub.proto b/protos/anduril/tasks/v2/objective.pub.proto deleted file mode 100644 index 6d5d561..0000000 --- a/protos/anduril/tasks/v2/objective.pub.proto +++ /dev/null @@ -1,32 +0,0 @@ -syntax = "proto3"; - -package anduril.tasks.v2; - -import "anduril/type/coords.pub.proto"; - -option java_multiple_files = true; -option java_package = "com.anduril.tasks.v2"; - -// Describes the objective of a task. -message Objective { - oneof objective { - // Prefer Entity Objectives whenever the objective is in fact an entity. In other words, don't take position/point - // out of an entity and pass it as a simple point. - string entity_id = 1; - // Point objectives for simple reference points that are not geo entities. - Point point = 5; - } - - reserved 2; -} - -// Describes a single point location. -message Point { - // A human readable name for the point. - string reference_name = 1; - // Indicates the objective is the provided location. - anduril.type.LLA lla = 2; - // An optional entity id that is provided for reverse lookup purposes. This may be used any time the UI might - // have to convert a geoentity to statically defined LLA. - string backing_entity_id = 3; -} diff --git a/protos/anduril/tasks/v2/shared/isr.pub.proto b/protos/anduril/tasks/v2/shared/isr.pub.proto deleted file mode 100644 index 5ad1a2b..0000000 --- a/protos/anduril/tasks/v2/shared/isr.pub.proto +++ /dev/null @@ -1,222 +0,0 @@ -syntax = "proto3"; - -package anduril.tasks.v2; - -import "anduril/tasks/v2/common.pub.proto"; -import "anduril/tasks/v2/objective.pub.proto"; -import "google/protobuf/timestamp.proto"; -import "google/protobuf/wrappers.proto"; - -option java_multiple_files = true; -option java_package = "com.anduril.tasks.v2"; - -// Maps to BREVITY code INVESTIGATE. -message Investigate { - // Indicates where to investigate. - Objective objective = 1; - // Optional common ISR parameters. - ISRParameters parameters = 2; -} - -// Maps to BREVITY code ID with type Visual. -message VisualId { - // Indicates what to identify. - Objective objective = 1; - // Optional common ISR parameters. - ISRParameters parameters = 2; -} - -// Maps to BREVITY code MAP. -message Map { - // Indicates where to perform the SAR. - Objective objective = 1; - // Optional common ISR parameters. - ISRParameters parameters = 2; - // minimum desired NIIRS (National Image Interpretability Rating Scales) see https://irp.fas.org/imint/niirs.htm - google.protobuf.UInt32Value min_niirs = 3; -} - -// Maps to the Loiter behavior within the FlightTask type within UCI v2. -message Loiter { - // Indicates where to perform the loiter. - Objective objective = 1; - // Specifies the details of the loiter. - LoiterType loiter_type = 2; - // Optional common ISR parameters. - // The loiter radius and bearing should be inferred from the standoff_distance and standoff_angle respectively. - ISRParameters parameters = 3; -} - -// Represents intent to search an area. Maps to the Area Search Team Task within the Mission Autonomy Task Model. -message AreaSearch { - // Indicates where to perform the area search. - Objective objective = 1; - // Priors that can be used to inform this AreaSearch. - repeated Prior priors = 2; - // Agents participating in this AreaSearch. - repeated Agent participants = 3; - // Control Area for this AreaSearch. - repeated ControlArea control_areas = 4; - // TODO: populate remaining fields here as we iterate on the AreaSearch integration. -} - -// Represents intent to search a volume. Maps to the Volume Search Team Task within the Mission Autonomy Task Model. -message VolumeSearch { - // Indicates where to perform the volume search. - Objective objective = 1; - // Priors that can be used to inform this VolumeSearch. - repeated Prior priors = 2; - // Agents participating in this VolumeSearch. - repeated Agent participants = 3; - // Control Area for this VolumeSearch. - repeated ControlArea control_areas = 4; - // TODO: populate remaining fields here as we iterate on the VolumeSearch integration. -} - -// Task to improve the quality of a track. Maps to the Improve Track Task within the Mission Autonomy Task Model. -message ImproveTrackQuality { - // Indicates the target track that is having its quality improved. - Objective objective = 1; - // Task will complete when the requested track reaches a TQ >= the termination_track_quality. - uint32 termination_track_quality = 2; -} - -// Indicates intent to follow an Objective. Maps to Brevity code SHADOW. -message Shadow { - // Indicates what to follow. - Objective objective = 1; - // Optional common ISR parameters. - ISRParameters parameters = 2; -} - -// Maps to UCI v2 LoiterType. -message LoiterType { - oneof loiter_type { - OrbitType orbit_type = 1; - } -} - -message OrbitType { - // Indicates the direction in which to perform the loiter. - OrbitDirection direction = 1; - // Indicates the loiter pattern to perform. - OrbitPattern pattern = 2; - // Indicates the amount of time to be spent in loiter. - OrbitDuration duration = 3; -} - -// Direction of the loiter relative to the front of the vehicle. -enum OrbitDirection { - ORBIT_DIRECTION_DIRECTION_INVALID = 0; - ORBIT_DIRECTION_RIGHT = 1; - ORBIT_DIRECTION_LEFT = 2; -} - -enum OrbitPattern { - ORBIT_PATTERN_INVALID = 0; - ORBIT_PATTERN_CIRCLE = 1; - ORBIT_PATTERN_RACETRACK = 2; - ORBIT_PATTERN_FIGURE_EIGHT = 3; -} - -message OrbitDuration { - oneof duration { - DurationRange duration_range = 1; - uint64 num_of_orbits = 2; - } -} - -// A Prior that can be used to inform an ISR Task. -message Prior { - oneof prior { - // Prefer Entity priors whenever the prior is in fact an entity. In other words, don't take position/point - // out of an entity and pass it as a simple point. - string entity_id = 1; - // Point priors for simple reference points that are not geo entities. - Point point = 5; - } -} - -// Common parameters for ISR Tasks. -message ISRParameters { - // Indicates the target speed of the asset. Units are meters per second. - google.protobuf.FloatValue speed_m_s = 2; - // Indicates the standoff distance from the objective. The units are in meters. - google.protobuf.FloatValue standoff_distance_m = 3; - // Indicates the standoff angle relative to the objective's bearing orientation (defaults to north). - // In particular, the asset should approach target from this angle. Units in degrees. - google.protobuf.FloatValue standoff_angle = 5; - // Indicates the amount of time in milliseconds to execute an ISR task before expiring. 0 value indicates no - // expiration. - google.protobuf.UInt64Value expiration_time_ms = 6; - - reserved 1, 4; -} - -// Gimbal pointing command. -message GimbalPoint { - oneof point_type { - // Point the gimbal at and lock on, continuing to look at a specific objective even as the platform moves. - Objective look_at = 1; - - // Point the gimbal at a fixed azimuth/elevation with respect to the platform frame. - AzimuthElevationPoint celestial_location = 2; - - // Point gimbal to an [x, y] location in the video feed. - FramePoint frame_location = 4; - } - // Optional common ISR parameters. - ISRParameters parameters = 3; -} - -// Celestial location with respect to a platform frame. -message AzimuthElevationPoint { - double azimuth = 1; - double elevation = 2; -} - -// Point clicked in the frame of the video feed. -message FramePoint { - // Frame-normalized location in frame on the x-axis, range (0, 1). - // For example, x = 0.3 implies a pixel location of 0.3 * image_width. - float x = 1; - // Frame-normalized location in frame on the y-axis, range (0, 1). - // For example, y = 0.3 implies a pixel location of 0.3 * image_height. - float y = 2; - // Timestamp of frame - google.protobuf.Timestamp timestamp = 3; -} - -// Command for setting gimbal zoom levels. -message GimbalZoom { - oneof mode { - // Set the zoom level to the provided horizontal field of view in degrees. - google.protobuf.DoubleValue set_horizontal_fov = 1; - // Set the zoom level to the provided zoom level. - google.protobuf.FloatValue set_magnification = 2; - } -} - -// Maps to BREVITY code ID with type MONITOR. To task assets to maintain sensor awareness -// on a given objective. -message Monitor { - // Indicates objective to monitor. - Objective objective = 1; - reserved 2, 3; -} - -// Maps to BREVITY code ID with type SCAN. To task assets to find and report any tracks in a geographic area. -message Scan { - // Indicates where to scan. - Objective objective = 1; - // Optional common ISR parameters. - ISRParameters parameters = 2; -} - -// Performs a Battle Damage Assessment (BDA). Does not map to any Task in either UCI or BREVITY. -message BattleDamageAssessment { - // Objective to perform BDA on. - Objective objective = 1; - // Optional common ISR parameters. - ISRParameters parameters = 2; -} diff --git a/protos/anduril/tasks/v2/shared/maneuver.pub.proto b/protos/anduril/tasks/v2/shared/maneuver.pub.proto deleted file mode 100644 index ba4feae..0000000 --- a/protos/anduril/tasks/v2/shared/maneuver.pub.proto +++ /dev/null @@ -1,54 +0,0 @@ -syntax = "proto3"; - -package anduril.tasks.v2; - -import "anduril/tasks/v2/objective.pub.proto"; -import "anduril/tasks/v2/shared/isr.pub.proto"; - -option java_multiple_files = true; -option java_package = "com.anduril.tasks.v2"; - -// Maps to BREVITY code Marshal. -// Establish(ed) at a specific point, typically used to posture forces in preparation for an offensive operation. -message Marshal { - // Objective to Marshal to. - Objective objective = 1; -} - -// Maps to UCI code RoutePlan. -// Used to command a platform between locations by requesting to make this RoutePlan the single primary active route. -message Transit { - RoutePlan plan = 1; -} - -message RoutePlan { - Route route = 1; -} - -message Route { - repeated PathSegment path = 1; -} - -message PathSegment { - oneof end_point { - Waypoint waypoint = 1; - Loiter loiter = 2; - } -} - -message Waypoint { - oneof point { - Point lla_point = 1; - } -} - -message SetLaunchRoute { - RoutePlan plan = 1; - LaunchTrackingMode tracking_mode = 2; -} - -enum LaunchTrackingMode { - LAUNCH_TRACKING_MODE_INVALID = 0; - LAUNCH_TRACKING_MODE_GO_TO_WAYPOINT = 1; - LAUNCH_TRACKING_MODE_TRACK_TO_WAYPOINT = 2; -} diff --git a/protos/anduril/tasks/v2/shared/strike.pub.proto b/protos/anduril/tasks/v2/shared/strike.pub.proto deleted file mode 100644 index a3935ae..0000000 --- a/protos/anduril/tasks/v2/shared/strike.pub.proto +++ /dev/null @@ -1,68 +0,0 @@ -syntax = "proto3"; - -package anduril.tasks.v2; - -import "anduril/tasks/v2/common.pub.proto"; -import "anduril/tasks/v2/objective.pub.proto"; -import "google/protobuf/duration.proto"; -import "google/protobuf/empty.proto"; - -option java_multiple_files = true; -option java_package = "com.anduril.tasks.v2"; - -// Maps to BREVITY code SMACK. -message Smack { - // Objective to SMACK. - Objective objective = 1; - // Optional parameters associated with Strike Tasks. - StrikeParameters parameters = 2; -} - -// Maps to UCI StrikeTask. -message Strike { - // Objective to Strike. - Objective objective = 1; - // Angle range within which to ingress. - AnglePair ingress_angle = 2; - // Distance at which to yield flight control to the onboard flight computer rather than - // higher level autonomy. - StrikeReleaseConstraint strike_release_constraint = 3; - // Optional parameters associated with the Strike task. - StrikeParameters parameters = 4; -} - -// Maps to UCI StrikeTaskReleaseConstraintsType. -message StrikeReleaseConstraint { - oneof strike_release_constraint { - AreaConstraints release_area = 1; - } -} - -message StrikeParameters { - repeated PayloadConfiguration payloads_to_employ = 1; - // GPS time at which the strike should be performed. - google.protobuf.Duration desired_impact_time = 2; - // Bearing at which to perform the run in for a strike. - double run_in_bearing = 3; - // Angle which to glide into the run in for a strike. - double glide_slope_angle = 4; -} - -// Individual payload configuration. -message PayloadConfiguration { - // Unique ID or descriptor for the capability. - string capability_id = 1; - uint32 quantity = 2; -} - -// Releases a payload from the vehicle -message ReleasePayload { - // The payload(s) that will be released - repeated PayloadConfiguration payloads = 1; - // Optional objective, of where the payload should be dropped. If omitted the payload will drop the current location - Objective objective = 2; - oneof release_method { - // Attempt to place the payload delicately from a standstill - google.protobuf.Empty precision_release = 3; - } -} diff --git a/protos/anduril/type/attribution.pub.proto b/protos/anduril/type/attribution.pub.proto deleted file mode 100644 index 37db7c4..0000000 --- a/protos/anduril/type/attribution.pub.proto +++ /dev/null @@ -1,14 +0,0 @@ -syntax = "proto3"; - -package anduril.type; - -option java_multiple_files = true; -option java_package = "com.anduril.type"; - -message Attribution { - // The timestamp at which the event occurred, in UTC epoch microseconds. - int64 timestamp = 1; - - // The user ID that initiated the event. - string user_id = 2; -} diff --git a/protos/anduril/type/color.pub.proto b/protos/anduril/type/color.pub.proto deleted file mode 100644 index 99984d4..0000000 --- a/protos/anduril/type/color.pub.proto +++ /dev/null @@ -1,29 +0,0 @@ -syntax = "proto3"; - -package anduril.type; - -import "google/protobuf/wrappers.proto"; - -option java_multiple_files = true; -option java_package = "com.anduril.type"; - -message Color { - // The amount of red in the color as a value in the interval [0, 1]. - float red = 1; - // The amount of green in the color as a value in the interval [0, 1]. - float green = 2; - // The amount of blue in the color as a value in the interval [0, 1]. - float blue = 3; - // The fraction of this color that should be applied to the pixel. That is, - // the final pixel color is defined by the equation: - // - // `pixel color = alpha * (this color) + (1.0 - alpha) * (background color)` - // - // This means that a value of 1.0 corresponds to a solid color, whereas - // a value of 0.0 corresponds to a completely transparent color. This - // uses a wrapper message rather than a simple float scalar so that it is - // possible to distinguish between a default value and the value being unset. - // If omitted, this color object is rendered as a solid color - // (as if the alpha value had been explicitly given a value of 1.0). - google.protobuf.FloatValue alpha = 4; -} diff --git a/protos/anduril/type/coords.pub.proto b/protos/anduril/type/coords.pub.proto deleted file mode 100644 index 0979ba6..0000000 --- a/protos/anduril/type/coords.pub.proto +++ /dev/null @@ -1,210 +0,0 @@ -syntax = "proto3"; - -package anduril.type; - -option java_multiple_files = true; -option java_package = "com.anduril.type"; - -// Spherical angular coordinates -message ThetaPhi { - // Angle clockwise relative to forward in degrees (Azimuth). - double theta = 1; - // Angle upward relative to forward in degrees (Elevation). - double phi = 2; -} - -message LLA { - // What altitude of zero refers to. - enum AltitudeReference { - // Depending on the context its possible INVALID just means that it is - // clear from the context (e.g. this is LLA is named lla_hae). - // This also might mean AGL which would depend on what height map you are - // using. - ALTITUDE_REFERENCE_INVALID = 0; - ALTITUDE_REFERENCE_HEIGHT_ABOVE_WGS84 = 1; // commonly called height above ellipsoid (HAE) - ALTITUDE_REFERENCE_HEIGHT_ABOVE_EGM96 = 2; // commonly called mean sea level (MSL) - ALTITUDE_REFERENCE_UNKNOWN = 3; // Publishing an altitude with an unkown reference - ALTITUDE_REFERENCE_BAROMETRIC = 4; // ADSB sometimes published barometrically-measured alt - ALTITUDE_REFERENCE_ABOVE_SEA_FLOOR = 5; // Positive distance above sea floor (ASF) at a specific lat/lon - ALTITUDE_REFERENCE_BELOW_SEA_SURFACE = 6; // Positive distance below surface at a specific lat/lon - } - - double lon = 1; // WGS84 longitude in decimal degrees - double lat = 2; // WGS84 geodetic latitude in decimal degrees - double alt = 3; // altitude in meters above either WGS84 or EGM96 (see altitude_reference) - - bool is2d = 4; // [default=false] indicates that altitude is either unset or so uncertain that it is meaningless - - // e.g. is2d = (alt_deviation > 10000) any aircraft would be within 3 deviations from 0 - // e.g. is2d = (alt_deviation > 2000) any group 3 UAV would be within 3 deviations from 0 - - // Meaning of alt. - // altitude in meters above either WGS84 or EGM96, use altitude_reference to - // determine what zero means. - AltitudeReference altitude_reference = 5; -} - -message ENU { - double e = 1; - double n = 2; - double u = 3; -} - -// Holds ECI (Earth-Centered Inertial, https://en.wikipedia.org/wiki/Earth-centered_inertial) -// coordinates. -message ECI { - // Holds the x-coordinate of ECI. - double x = 1; - - // Holds the y-coordinate of ECI. - double y = 2; - - // Holds the z-coordinate of ECI. - double z = 3; -} - -message Vec2 { - double x = 1; - double y = 2; -} - -message Vec2f { - float x = 1; - float y = 2; -} - -message Vec3 { - double x = 1; - double y = 2; - double z = 3; -} - -message Vec3f { - float x = 1; - float y = 2; - float z = 3; -} - -message Quaternion { - // x, y, z are vector portion, w is scalar - double x = 1; - double y = 2; - double z = 3; - double w = 4; -} - -// Yaw-Pitch in radians -message YawPitch { - double yaw = 1; - double pitch = 2; -} - -// Yaw-Pitch-Roll in degrees. -message YPR { - double yaw = 1; - double pitch = 2; - double roll = 3; -} - -message Pose { - // Geospatial location defined by this Pose. - LLA pos = 1; - // The quaternion to transform a point in the Pose frame to the ENU frame. The Pose frame could be Body, Turret, - // etc and is determined by the context in which this Pose is used. - // The normal convention for defining orientation is to list the frames of transformation, for example - // att_gimbal_to_enu is the quaternion which transforms a point in the gimbal frame to the body frame, but - // in this case we truncate to att_enu because the Pose frame isn't defined. A potentially better name for this - // field would have been att_pose_to_enu. - // - // Implementations of this quaternion should left multiply this quaternion to transform a point from the Pose frame - // to the enu frame. - // - // Point posePt{1,0,0}; - // Rotation attPoseToEnu{}; - // Point = attPoseToEnu*posePt; - // - // This transformed point represents some vector in ENU space that is aligned with the x axis of the attPoseToEnu - // matrix. - // - // An alternative matrix expression is as follows: - // ptEnu = M x ptPose - Quaternion att_enu = 2; -} - -message LLAPolygon { - // standard is that points are defined in a counter-clockwise order. this - // is only the exterior ring of a polygon, no holes are supported. - repeated LLA points = 1; -} - -message AERPolygon { - // Azimuth-Range-Elevation - repeated Spherical points = 1; -} - -message LLAPath { - // Ordered list of points on the path. - repeated LLA points = 1; - // True if the last point on the path connects to the first in a closed - // loop - bool loop = 2; -} - -message Spherical { - // azimuth angle in radians - double az = 1; - // elevation angle in radians, we'll use 0 = XY plane - double el = 2; - // range in meters - double range = 3; -} - -message DoubleRange { - double min = 1; - double max = 2; -} - -message Uint64Range { - uint64 min = 1; - uint64 max = 2; -} - -// A symmetric 4D matrix only representing the upper right triangle, useful for covariance matrices. -message TMat4f { - float m00 = 1; - float m01 = 2; - float m02 = 3; - float m03 = 4; - float m11 = 5; - float m12 = 6; - float m13 = 7; - float m22 = 8; - float m23 = 9; - float m33 = 10; -} - -// A symmetric 3D matrix only representing the upper right triangle, useful for covariance matrices. -message TMat3 { - double mxx = 1; - double mxy = 2; - double mxz = 3; - double myy = 4; - double myz = 5; - double mzz = 6; -} - -// symmetric 2d matrix only representing the upper right triangle, useful for -// covariance matrices -message TMat2 { - double mxx = 1; - double mxy = 2; - double myy = 3; -} - -// Rx + t, Technically this is a duplicate of AffineTransform -// but Affine Transform isn't really an affine transform (since it doesn't allow -// skewing and stretching). -message RigidTransform { - Quaternion rotation = 3; - Vec3 translation = 4; -} diff --git a/protos/anduril/type/geometry.pub.proto b/protos/anduril/type/geometry.pub.proto deleted file mode 100644 index be36108..0000000 --- a/protos/anduril/type/geometry.pub.proto +++ /dev/null @@ -1,29 +0,0 @@ -syntax = "proto3"; - -package anduril.type; - -import "anduril/type/coords.pub.proto"; - -option java_multiple_files = true; -option java_package = "com.anduril.type"; - -// A 2d grid with binary values for each grid cell. -message Grid { - // The bottom left extent of the 2d grid. This represents the - // farthest corner on the grid cell, not the center of the - // grid cell. - anduril.type.LLA bottom_left_pos = 1; - // The top right extent of the 2d grid. This represents the - // farthest corner on the grid cell, not the center of the - // grid cell. - anduril.type.LLA top_right_pos = 2; - // The width of the grid in number of cells. - uint32 grid_width = 3; - // The height of the grid in number of cells. - uint32 grid_height = 4; - // Stores the cell values. Each byte contains 8 bits representing - // binary values of cells. Cells are unravelled in row-major order, - // with the first cell located at the top-left corner of the grid. - // In a single byte, the smallest bit represents the left most cell. - bytes cell_values = 5; -} diff --git a/protos/anduril/type/orbit.pub.proto b/protos/anduril/type/orbit.pub.proto deleted file mode 100644 index 36b1d9c..0000000 --- a/protos/anduril/type/orbit.pub.proto +++ /dev/null @@ -1,89 +0,0 @@ -syntax = "proto3"; - -package anduril.type; - -import "google/protobuf/timestamp.proto"; -import "google/protobuf/wrappers.proto"; - -option java_multiple_files = true; -option java_package = "com.anduril.type"; - -// Orbit Mean Elements data, analogous to the Orbit Mean Elements Message in CCSDS 502.0-B-3 -message OrbitMeanElements { - anduril.type.OrbitMeanElementsMetadata metadata = 1; - anduril.type.MeanKeplerianElements mean_keplerian_elements = 2; - anduril.type.TleParameters tle_parameters = 3; -} - -message OrbitMeanElementsMetadata { - // Creation date/time in UTC - google.protobuf.Timestamp creation_date = 1; - // Creating agency or operator - google.protobuf.StringValue originator = 2; - // ID that uniquely identifies a message from a given originator. - google.protobuf.StringValue message_id = 3; - // Reference frame, assumed to be Earth-centered - EciReferenceFrame ref_frame = 4; - // Reference frame epoch in UTC - mandatory only if not intrinsic to frame definition - google.protobuf.Timestamp ref_frame_epoch = 5; - MeanElementTheory mean_element_theory = 6; -} - -message MeanKeplerianElements { - // UTC time of validity - google.protobuf.Timestamp epoch = 1; - oneof line2_field8 { - // Preferred: semi major axis in kilometers - double semi_major_axis_km = 2; - // If using SGP/SGP4, provide the Keplerian Mean Motion in revolutions per day - double mean_motion = 3; - } - double eccentricity = 4; - // Angle of inclination in deg - double inclination_deg = 5; - // Right ascension of the ascending node in deg - double ra_of_asc_node_deg = 6; - // Argument of pericenter in deg - double arg_of_pericenter_deg = 7; - // Mean anomaly in deg - double mean_anomaly_deg = 8; - // Optional: gravitational coefficient (Gravitational Constant x central mass) in kg^3 / s^2 - google.protobuf.DoubleValue gm = 9; -} - -message TleParameters { - // Integer specifying TLE ephemeris type - google.protobuf.UInt32Value ephemeris_type = 1; - // User-defined free-text message classification/caveats of this TLE - google.protobuf.StringValue classification_type = 2; - // Norad catalog number: integer up to nine digits. - google.protobuf.UInt32Value norad_cat_id = 3; - google.protobuf.UInt32Value element_set_no = 4; - // Optional: revolution number - google.protobuf.UInt32Value rev_at_epoch = 5; - // Drag-like ballistic coefficient, required for SGP4 and SGP4-XP mean element models - oneof line1_field11 { - // Drag parameter for SGP-4 in units 1 / Earth radii - double bstar = 6; - // Drag parameter for SGP4-XP in units m^2 / kg - double bterm = 7; - } - // First time derivative of mean motion in rev / day^2 - google.protobuf.DoubleValue mean_motion_dot = 8; - oneof line1_field10 { - // Second time derivative of mean motion in rev / day^3. For use with SGP or PPT3. - double mean_motion_ddot = 9; - // Solar radiation pressure coefficient A_gamma / m in m^2 / kg. For use with SGP4-XP. - double agom = 10; - } -} - -enum MeanElementTheory { - MEAN_ELEMENT_THEORY_INVALID = 0; - MEAN_ELEMENT_THEORY_SGP4 = 1; -} - -enum EciReferenceFrame { - ECI_REFERENCE_FRAME_INVALID = 0; - ECI_REFERENCE_FRAME_TEME = 1; -} diff --git a/third-party-license.txt b/third-party-license.txt deleted file mode 100644 index 5e3969d..0000000 --- a/third-party-license.txt +++ /dev/null @@ -1,243 +0,0 @@ -The following C++ package may be included in this product: - - - protobuf@v29.0.0 - -This package contains the following license: - -Copyright (c) 2018 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ------------ - -The following Go package may be included in this product: - - - gRPC@v1.68.0 - -This package contains the following license: - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License.