lattice_sdk/api/types/entity.rs
1pub use crate::prelude::*;
2
3/// The entity object represents a single known object within the Lattice operational environment. It contains
4/// all data associated with the entity, such as its name, ID, and other relevant components.
5#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
6pub struct Entity {
7 /// A Globally Unique Identifier (GUID) for your entity. If this field is empty, the Entity Manager API
8 /// automatically generates an ID when it creates the entity.
9 #[serde(rename = "entityId")]
10 #[serde(skip_serializing_if = "Option::is_none")]
11 pub entity_id: Option<String>,
12 /// A human-readable entity description that's helpful for debugging purposes and human
13 /// traceability. If this field is empty, the Entity Manager API generates one for you.
14 #[serde(skip_serializing_if = "Option::is_none")]
15 pub description: Option<String>,
16 /// Indicates the entity is active and should have a lifecycle state of CREATE or UPDATE.
17 /// Set this field to true when publishing an entity.
18 #[serde(rename = "isLive")]
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub is_live: Option<bool>,
21 /// The time when the entity was first known to the entity producer. If this field is empty, the Entity Manager API uses the
22 /// current timestamp of when the entity is first received.
23 /// For example, when a drone is first powered on, it might report its startup time as the created time.
24 /// The timestamp doesn't change for the lifetime of an entity.
25 #[serde(rename = "createdTime")]
26 #[serde(skip_serializing_if = "Option::is_none")]
27 pub created_time: Option<DateTime<Utc>>,
28 /// Future time that expires an entity and updates the is_live flag.
29 /// For entities that are constantly updating, the expiry time also updates.
30 /// In some cases, this may differ from is_live.
31 /// Example: Entities with tasks exported to an external system must remain
32 /// active even after they expire.
33 /// This field is required when publishing a prepopulated entity.
34 /// The expiry time must be in the future, but less than 30 days from the current time.
35 #[serde(rename = "expiryTime")]
36 #[serde(skip_serializing_if = "Option::is_none")]
37 pub expiry_time: Option<DateTime<Utc>>,
38 /// Use noExpiry only when the entity contains information that should be available to other
39 /// tasks or integrations beyond its immediate operational context. For example, use noExpiry
40 /// for long-living geographical entities that maintain persistent relevance across multiple
41 /// operations or tasks.
42 #[serde(rename = "noExpiry")]
43 #[serde(skip_serializing_if = "Option::is_none")]
44 pub no_expiry: Option<bool>,
45 /// Human-readable descriptions of what the entity is currently doing.
46 #[serde(skip_serializing_if = "Option::is_none")]
47 pub status: Option<Status>,
48 /// Geospatial data related to the entity, including its position, kinematics, and orientation.
49 #[serde(skip_serializing_if = "Option::is_none")]
50 pub location: Option<Location>,
51 /// Indicates uncertainty of the entity's position and kinematics.
52 #[serde(rename = "locationUncertainty")]
53 #[serde(skip_serializing_if = "Option::is_none")]
54 pub location_uncertainty: Option<LocationUncertainty>,
55 /// Geospatial representation of the entity, including entities that cover an area rather than a fixed point.
56 #[serde(rename = "geoShape")]
57 #[serde(skip_serializing_if = "Option::is_none")]
58 pub geo_shape: Option<GeoShape>,
59 /// Additional details on what the geospatial area or point represents, along with visual display details.
60 #[serde(rename = "geoDetails")]
61 #[serde(skip_serializing_if = "Option::is_none")]
62 pub geo_details: Option<GeoDetails>,
63 /// Entity name displayed in the Lattice UI side panel. Also includes identifiers that other systems can use to reference the same entity.
64 #[serde(skip_serializing_if = "Option::is_none")]
65 pub aliases: Option<Aliases>,
66 /// If this entity is tracked by another entity, this component contains data related to how it's being tracked.
67 #[serde(skip_serializing_if = "Option::is_none")]
68 pub tracked: Option<Tracked>,
69 /// If this entity has been correlated or decorrelated to another one, this component contains information on the correlation or decorrelation.
70 #[serde(skip_serializing_if = "Option::is_none")]
71 pub correlation: Option<Correlation>,
72 /// View of the entity.
73 #[serde(rename = "milView")]
74 #[serde(skip_serializing_if = "Option::is_none")]
75 pub mil_view: Option<MilView>,
76 /// Ontology defines an entity's categorization in Lattice, and improves data retrieval and integration. Builds a standardized representation of the entity.
77 #[serde(skip_serializing_if = "Option::is_none")]
78 pub ontology: Option<Ontology>,
79 /// Details an entity's available sensors.
80 #[serde(skip_serializing_if = "Option::is_none")]
81 pub sensors: Option<Sensors>,
82 /// Details an entity's available payloads.
83 #[serde(skip_serializing_if = "Option::is_none")]
84 pub payloads: Option<Payloads>,
85 /// Details the entity's power source.
86 #[serde(rename = "powerState")]
87 #[serde(skip_serializing_if = "Option::is_none")]
88 pub power_state: Option<PowerState>,
89 /// The primary data source provenance for this entity.
90 #[serde(skip_serializing_if = "Option::is_none")]
91 pub provenance: Option<Provenance>,
92 /// Provenance of override data.
93 #[serde(skip_serializing_if = "Option::is_none")]
94 pub overrides: Option<Box<Overrides>>,
95 /// Describes an entity's specific characteristics and the operations that can be performed on the entity.
96 /// For example, "simulated" informs the operator that the entity is from a simulation, and "deletable"
97 /// informs the operator (and system) that the delete operation is valid against the entity.
98 #[serde(skip_serializing_if = "Option::is_none")]
99 pub indicators: Option<Indicators>,
100 /// The prioritization associated with an entity, such as if it's a threat or a high-value target.
101 #[serde(rename = "targetPriority")]
102 #[serde(skip_serializing_if = "Option::is_none")]
103 pub target_priority: Option<TargetPriority>,
104 /// Describes an entity's signal characteristics, primarily used when an entity is a signal of interest.
105 #[serde(skip_serializing_if = "Option::is_none")]
106 pub signal: Option<Signal>,
107 /// A message describing any transponder codes associated with Mode 1, 2, 3, 4, 5, S interrogations. These are related to ADS-B modes.
108 #[serde(rename = "transponderCodes")]
109 #[serde(skip_serializing_if = "Option::is_none")]
110 pub transponder_codes: Option<TransponderCodes>,
111 /// Describes an entity's security classification levels at an overall classification level and on a per
112 /// field level.
113 #[serde(rename = "dataClassification")]
114 #[serde(skip_serializing_if = "Option::is_none")]
115 pub data_classification: Option<Classification>,
116 /// A catalog of tasks that can be performed by an entity.
117 #[serde(rename = "taskCatalog")]
118 #[serde(skip_serializing_if = "Option::is_none")]
119 pub task_catalog: Option<TaskCatalog>,
120 /// Media associated with an entity, such as videos, images, or thumbnails.
121 #[serde(skip_serializing_if = "Option::is_none")]
122 pub media: Option<Media>,
123 /// The relationships between this entity and other entities in the common operational picture (COP).
124 #[serde(skip_serializing_if = "Option::is_none")]
125 pub relationships: Option<Relationships>,
126 /// Visual details associated with the display of an entity in the client.
127 #[serde(rename = "visualDetails")]
128 #[serde(skip_serializing_if = "Option::is_none")]
129 pub visual_details: Option<VisualDetails>,
130 /// Physical dimensions of the entity.
131 #[serde(skip_serializing_if = "Option::is_none")]
132 pub dimensions: Option<Dimensions>,
133 /// Additional information about an entity's route.
134 #[serde(rename = "routeDetails")]
135 #[serde(skip_serializing_if = "Option::is_none")]
136 pub route_details: Option<RouteDetails>,
137 /// Schedules associated with this entity.
138 #[serde(skip_serializing_if = "Option::is_none")]
139 pub schedules: Option<Schedules>,
140 /// Health metrics or connection status reported by the entity.
141 #[serde(skip_serializing_if = "Option::is_none")]
142 pub health: Option<Health>,
143 /// Details for the group associated with this entity.
144 #[serde(rename = "groupDetails")]
145 #[serde(skip_serializing_if = "Option::is_none")]
146 pub group_details: Option<GroupDetails>,
147 /// Contains relevant supply information for the entity, such as fuel.
148 #[serde(skip_serializing_if = "Option::is_none")]
149 pub supplies: Option<Supplies>,
150 /// Orbit information for space objects.
151 #[serde(skip_serializing_if = "Option::is_none")]
152 pub orbit: Option<Orbit>,
153}