This is the offical API documentation for the Nova Common Information Function (Nova-CIF) developed by Nova Systems. The Nova-CIF currently provides four core services:
To access the Nova-CIF API, please contact Nova Systems to obtain a valid Client ID. Refer to the authentication process to obtain a valid JWT to start your session.
The latest version of the Nova-CIF API is v0.4, last updated on September 17, 2020. This section tracks the key changes made during its development. Note, the version number of the Nova-CIF may not be the same as the version number of the CIF Interface (GUI).
Version | Status | Description |
---|---|---|
v0.1 |
Released | Nova-CIF UVRs and Geozones implementation. |
v0.2 |
Released | Nova-CIF Authentication implementation. |
v0.3 |
Released | Nova-CIF Constraints Manager and Nova-DSS integration. |
v0.4 |
Released | Nova-CIF Buildings and Populations SDSP implementation. |
v0.5 |
Development | Nova-CIF CIF-ATM Operations implementation and Nova-DSS integration. |
Future | Nova-CIF Population Density SDSP and NOTAMS support. |
The CIF Interface is a simple web-based graphical user interface developed to allow authorized users to manage Constraint
references and visualize airspace information by leveraging the capabilities provided by CIF-Core and CIF-ATM.
You must register a new user account to access this service. To register for an account, you will need to supply a valid email address.
3D Constraints | Air Traffic Data |
---|---|
![]() |
![]() |
Polygon Definition | 3D Buildings Display |
---|---|
![]() |
![]() |
This section defines the Authentication API. You can use this API to request an OAuth2 JSON Web Token (JWT) from the Nova-CIF authentication server.
Request a new access token for the Nova-CIF by submitting a HTTP POST request to the Nova-CIF authentication server with a valid URL query. See the Python code snippet for an example.
Property | Description |
---|---|
grant_type |
(required) Authorization grant type for this API, must be set as "authorization_code". |
client_id |
(required) The client ID as provided by Nova. |
client_secret |
(required) The client secret key as provided by Nova. |
scope |
(required) List of scopes to request for the generated token. |
curl -X POST {auth_url}
{
"grant_type": "client_credentials",
"scope": "constraints/read+constraints/write",
"client_id": client_id,
"client_secret": client_secret
}
{
"access_token": "eyJraWQi...",
"expires_in": 3600,
"token_type": "Bearer"
}
The access token must be supplied in the HTTP request header when making a request to the Nova-CIF. See the Python code snippet for details about how to supply the access token.
For example, you can retrieve all existing constraint references in the Nova-CIF by submitting a HTTP POST request to /constraints/query/global.
(This example is extracted from Section C3.3)
curl -X POST {base_url}/constraints/query/global
[
{
"constraint_id": "e85bbd66-d739-4477-befe-ee5eaea6e06d",
"time_created": "2020-06-29T02:32:12.693Z",
"extents": [
{"$Volume4D"}
],
"old_version": 2,
"state": "Accepted",
"uss_base_url": "https://fims.novautm.net",
"constraint_type": "STC"
},
{
"constraint_id": "648fcd3d-d36d-444e-9143-3d5cd41b964d",
"time_created": "2020-06-29T02:32:12.693Z",
"extents": [
{"$Volume4D"}
],
"old_version": 1,
"state": "Accepted",
"uss_base_url": "https://fims.novautm.net",
"constraint_type": "LTC"
}
]
This section defines the UVR endpoints within the Constraints API. You can use these endpoints to create or update Constraint
objects of type UVR
or STC
within the Nova-CIF.
STCs must adhere to the additional limitations stipulated by the Federal Authority, the following rules are enforced by the Nova-CIF as part of its constraint validation process:
Submit a new constraint reference to the Nova-CIF by submitting a HTTP POST request to /constraints/create/uvr with valid JSON body content.
cif/constraints.write
is required for API access.state
in the response will show Accepted
if the request is successful, otherwise a Rejected
state will be shown.old_version
of 1 is automatically assigned to the constraint when a new constraint is successfully created.Property | Description |
---|---|
extents |
(required) Volume4D entity which defines the extent of the Constraint entity. |
old_version |
(required) Version number used by the DSS, must be set to 0 for a new constraint. |
uss_base_url |
(required) The base URL of a USS implementation of the USS-USS API. |
curl -X POST {base_url}/constraints/create/uvr
{
"extents": [
{
"time_end": {
"format": "RFC3339",
"value": "2020-07-21T04:26:24Z"
},
"time_start": {
"format": "RFC3339",
"value": "2020-07-20T04:26:24Z"
},
"volume": {
"altitude_lower": {
"reference": "W84",
"units": "M",
"value": 0
},
"altitude_upper": {
"reference": "W84",
"units": "M",
"value": 100
},
"outline_polygon": {
"coordinates": [
[
[103.85495497971431, 1.2886965146831955],
[103.85349357666604, 1.2828751821136281],
[103.85529602112451, 1.2804725240958277],
[103.85495497971431, 1.2886965146831955]
]
],
"type": "Polygon"
}
}
}
],
"old_version": 0,
"uss_base_url": "https://fims.novautm.net"
}
{
"constraint_id": "e85bbd66-d739-4477-befe-ee5eaea6e06d",
"time_created": "2020-06-29T02:32:12.693Z",
"extents": [{"$Volume4D"}],
"old_version": 1,
"state": "Accepted",
"uss_base_url": "https://fims.novautm.net",
"constraint_type": "STC",
"message": "Submitted constraint is conflict-free, a new constraint e85bbd66-d739-4477-befe-ee5eaea6e06d is successfully created."
}
Update an existing UVR constraint reference in the Nova-CIF by submitting a HTTP POST request to /constraints/update/uvr with valid JSON body content.
cif/constraints.update
is required for API access.constraint_id
of the targeted constraint reference must be supplied in the request body, otherwise the request will fail.state
in the response will show Accepted
if the request is successful, otherwise a Rejected
state will be shown.old_version
is automatically incremented by 1 when the constraint is successfully updated.Property | Description |
---|---|
constraint_id |
(required) UUID of the Constraint entity. |
extents |
(required) Volume4D entity which defines the extent of the Constraint entity. |
old_version |
(required) Version number used by the DSS, incremented by 1 after update. |
uss_base_url |
(required) The base URL of a USS implementation of the USS-USS API. |
curl -X POST {base_url}/constraints/update/uvr
{
"constraint_id": "e85bbd66-d739-4477-befe-ee5eaea6e06d",
"extents": [
{
"time_end": {
"format": "RFC3339",
"value": "2020-07-21T04:26:24Z"
},
"time_start": {
"format": "RFC3339",
"value": "2020-07-20T04:26:24Z"
},
"volume": {
"altitude_lower": {
"reference": "W84",
"units": "M",
"value": 0
},
"altitude_upper": {
"reference": "W84",
"units": "M",
"value": 100
},
"outline_polygon": {
"coordinates": [
[
[103.85495497971431, 1.2886965146831955],
[103.85349357666604, 1.2828751821136281],
[103.85529602112451, 1.2804725240958277],
[103.85495497971431, 1.2886965146831955]
]
],
"type": "Polygon"
}
}
}
],
"old_version": 1,
"uss_base_url": "https://fims.novautm.net"
}
{
"constraint_id": "e85bbd66-d739-4477-befe-ee5eaea6e06d",
"time_created": "2020-06-29T02:32:12.693Z",
"extents": [{"$Volume4D"}],
"old_version": 2,
"state": "Accepted",
"uss_base_url": "https://fims.novautm.net",
"constraint_type": "STC",
"message": "Successfully updated constraint e85bbd66-d739-4477-befe-ee5eaea6e06d."
}
This section defines the Geozone endpoints within the Constraints API. You can use these endpoints to create or update Constraint
objects of type Geozone
or LTC
within the Nova-CIF.
Submit a new geozone reference to the Nova-CIF by submitting a HTTP POST request to /constraints/create/gz with valid JSON body content.
cif/constraints.write
is required for API access.state
in the response will show Accepted
if the request is successful, otherwise a Rejected
state will be shown.old_version
of 1 is automatically assigned to the constraint when a new constraint is successfully created.Property | Description |
---|---|
extents |
(required) Volume4D entity which defines the extent of the Constraint entity. |
old_version |
(required) Version number used by the DSS, must be set to 0 for a new constraint. |
uss_base_url |
(required) The base URL of a USS implementation of the USS-USS API. |
curl -X POST {base_url}/constraints/create/gz
{
"extents": [
{
"time_end": {
"format": "RFC3339",
"value": "2020-07-21T04:26:24Z"
},
"time_start": {
"format": "RFC3339",
"value": "2020-07-20T04:26:24Z"
},
"volume": {
"altitude_lower": {
"reference": "W84",
"units": "M",
"value": 0
},
"altitude_upper": {
"reference": "W84",
"units": "M",
"value": 100
},
"outline_polygon": {
"coordinates": [
[
[103.85495497971431, 1.2886965146831955],
[103.85349357666604, 1.2828751821136281],
[103.85529602112451, 1.2804725240958277],
[103.85495497971431, 1.2886965146831955]
]
],
"type": "Polygon"
}
}
}
],
"old_version": 0,
"uss_base_url": "https://fims.novautm.net"
}
{
"constraint_id": "648fcd3d-d36d-444e-9143-3d5cd41b964d",
"time_created": "2020-06-29T02:32:12.693Z",
"extents": [{"$Volume4D"}],
"old_version": 1,
"state": "Accepted",
"uss_base_url": "https://fims.novautm.net",
"constraint_type": "LTC",
"message": "Submitted constraint is conflict-free, a new constraint 648fcd3d-d36d-444e-9143-3d5cd41b964d is successfully created."
}
Update an existing geozone constraint reference in the Nova-CIF by submitting a HTTP POST request to /constraints/update/gz with valid JSON body content.
cif/constraints.update
is required for API access.constraint_id
of the targeted constraint reference must be supplied in the request body, otherwise the request will fail.state
in the response will show Accepted
if the request is successful, otherwise a Rejected
state will be shown.old_version
is automatically incremented by 1 when the constraint is successfully updated.Property | Description |
---|---|
constraint_id |
(required) UUID of the Constraint entity. |
extents |
(required) Volume4D entity which defines the extent of the Constraint entity. |
old_version |
(required) Version number used by the DSS, incremented by 1 after update. |
uss_base_url |
(required) The base URL of a USS implementation of the USS-USS API. |
curl -X POST {base_url}/constraints/update/gz
{
"constraint_id": "648fcd3d-d36d-444e-9143-3d5cd41b964d",
"extents": [
{
"time_end": {
"format": "RFC3339",
"value": "2020-07-21T04:26:24Z"
},
"time_start": {
"format": "RFC3339",
"value": "2020-07-20T04:26:24Z"
},
"volume": {
"altitude_lower": {
"reference": "W84",
"units": "M",
"value": 0
},
"altitude_upper": {
"reference": "W84",
"units": "M",
"value": 100
},
"outline_polygon": {
"coordinates": [
[
[103.85495497971431, 1.2886965146831955],
[103.85349357666604, 1.2828751821136281],
[103.85529602112451, 1.2804725240958277],
[103.85495497971431, 1.2886965146831955]
]
],
"type": "Polygon"
}
}
}
],
"old_version": 1,
"uss_base_url": "https://fims.novautm.net"
}
{
"constraint_id": "648fcd3d-d36d-444e-9143-3d5cd41b964d",
"time_created": "2020-06-29T02:32:12.693Z",
"extents": [{"$Volume4D"}],
"old_version": 2,
"state": "Accepted",
"uss_base_url": "https://fims.novautm.net",
"message": "Successfully updated constraint 648fcd3d-d36d-444e-9143-3d5cd41b964d.",
"constraint_type": "LTC"
}
This section defines the query methods within the Constraints API. You can use these endpoints to query or
remove Constraint
objects within the Nova-CIF.
Note Constraint
objects can be of type UVR
or Geozone
. A geozone reference is a long-term constraint (LTC). A UVR reference is a short-term constraint (STC).
Query an existing constraint reference in the Nova-CIF by submitting a HTTP GET request to /constraints/query/{constraint_id}.
cif/constraints.read
is required for API access.constraint_id
must be specified in the URL parameter /{constraint_id}.Property | Description |
---|---|
constraint_id |
(required) UUID of the Constraint entity. |
curl -X GET {base_url}/constraints/query/{constraint_id}
{
"constraint_id": "648fcd3d-d36d-444e-9143-3d5cd41b964d",
"time_created": "2020-06-29T02:32:12.693Z",
"extents": [
{
"volume": {
"outline_polygon": {
"coordinates": [
[
[103.85495497971431, 1.2886965146831955],
[103.85349357666604, 1.2828751821136282],
[103.85529602112452, 1.2804725240958277],
[103.85495497971431, 1.2886965146831955]
]
],
"type": "Polygon"
},
"altitude_upper": {
"reference": "W84",
"value": 100,
"units": "M"
},
"altitude_lower": {
"reference": "W84",
"value": 0,
"units": "M"
}
},
"time_start": {
"format": "RFC3339",
"value": "2020-07-20T04:26:24Z"
},
"time_end": {
"format": "RFC3339",
"value": "2020-07-21T04:26:24Z"
}
}
],
"old_version": 2,
"state": "Accepted",
"uss_base_url": "https://fims.novautm.net",
"constraint_type": "LTC",
"message": "Constraint 648fcd3d-d36d-444e-9143-3d5cd41b964d retrieved."
}
Retrieve all active constraint references by type in the Nova-CIF by submitting a HTTP GET request to /constraints/type/{constraint_type}. Active constraint references are defined as constraint entities with a valid time horizon.
cif/constraints.read
is required for API access.type
must be specified in the URL parameter /{constraint_type} as a valid string.Property | Description |
---|---|
constraint_type |
(required) Type of constraint (UVR or Geozone), i.e. STC or LTC |
curl -X GET {base_url}/constraints/query/type/{constraint_type}
[
{
"constraint_id": "e85bbd66-d739-4477-befe-ee5eaea6e06d",
"time_created": "2020-06-29T02:32:12.693Z",
"extents": [{"$Volume4D"}],
"old_version": 2,
"state": "Accepted",
"uss_base_url": "https://fims.novautm.net",
"constraint_type": "STC"
}
]
Retrieve all active constraint references relative to a time reference in the Nova-CIF by submitting a HTTP GET request to /constraints/active/{time}. Active constraint references are defined as constraint entities with a valid time horizon.
cif/constraints.read
is required for API access.time
must be specified in the URL parameter /{time} as a Unix timestamp.Property | Description |
---|---|
time |
(required) Time reference used to form the query, specified as a Unix timestamp. |
curl -X GET {base_url}/constraints/query/active/{time}
[
{
"constraint_id": "e85bbd66-d739-4477-befe-ee5eaea6e06d",
"time_created": "2020-06-29T02:32:12.693Z",
"extents": [{"$Volume4D"}],
"old_version": 2,
"state": "Accepted",
"uss_base_url": "https://fims.novautm.net",
"constraint_type": "STC"
},
{
"constraint_id": "648fcd3d-d36d-444e-9143-3d5cd41b964d",
"time_created": "2020-06-29T02:32:12.693Z",
"extents": [{"$Volume4D"}],
"old_version": 1,
"state": "Accepted",
"uss_base_url": "https://fims.novautm.net",
"constraint_type": "LTC"
}
]
Retrieve all existing constraint references in the Nova-CIF by submitting a HTTP POST request to /constraints/query/global.
cif/constraints.read
is required for API access.curl -X POST {base_url}/constraints/query/global
[
{
"constraint_id": "e85bbd66-d739-4477-befe-ee5eaea6e06d",
"time_created": "2020-06-29T02:32:12.693Z",
"extents": [{"$Volume4D"}],
"old_version": 2,
"state": "Accepted",
"uss_base_url": "https://fims.novautm.net",
"constraint_type": "STC"
},
{
"constraint_id": "648fcd3d-d36d-444e-9143-3d5cd41b964d",
"time_created": "2020-06-29T02:32:12.693Z",
"extents": [{"$Volume4D"}],
"old_version": 1,
"state": "Accepted",
"uss_base_url": "https://fims.novautm.net",
"constraint_type": "LTC"
}
]
Remove an existing constraint reference from the Nova-CIF by submitting a HTTP DELETE request to /constraints/remove/{constraint_id}.
cif/constraints.delete
is required for API access.constraint_id
must be specified in the URL parameter /{constraint_id}.state
in the response will show Accepted
if the request is successful, otherwise a Rejected
state will be shown.Property | Description |
---|---|
constraint_id |
(required) UUID of the Constraint entity. |
curl -X DELETE {base_url}/constraints/remove/{constraint_id}
{
"message": "Constraint 648fcd3d-d36d-444e-9143-3d5cd41b964d deleted."
}
This section defines the Operations endpoints within the Operations API. You can use these endpoints to create or update Operation
objects of type Drone
or Aircraft
within the Nova-CIF.
(TBA)
This section defines the set of methods from the Constraints API configured for external use. You can use these endpoints to query Constraint
objects within the Nova-CIF.
Note the differences in data structure between the HTTP responses given here as compared to that given by the query methods defined in Section C3.
Query an existing constraint reference in the Nova-CIF by submitting a HTTP GET request to /constraints/{constraint_id}.
cif/constraints.read
is required for API access.constraint_id
must be specified in the URL parameter /{constraint_id}.URL parameters:
Property | Description |
---|---|
constraint_id |
(required) UUID of the Constraint entity. |
HTTP response status codes:
Code | Description |
---|---|
200 |
Constraint details were retrieved successfully. |
400 |
One or more parameters were missing or invalid. |
401 |
Access token was not provided in Authorization header, token could not be decoded, or token was invalid. |
403 |
The access token was decoded successfully but did not include a scope appropriate to this endpoint. |
404 |
The requested entity could not be found. |
curl -X GET {base_url}/uss/v1/constraints/{constraint_id}
{
"constraint": {
"reference": {
"id": "7d37307f-92f2-4f07-8a26-eb3fcac3636c",
"owner": "1hlc4etfl7fp8tv11r11rclij3",
"version": 3,
"time_start": {
"format": "RFC3339",
"value": "2020-07-17T12:00:00Z"
},
"time_end": {
"format": "RFC3339",
"value": "2020-07-17T13:00:00Z"
},
"uss_base_url": "https://fims.novautm.net"
},
"details": {
"volumes": [
{
"volume": {
"altitude_upper": {
"reference": "W84",
"value": 100,
"units": "M"
},
"altitude_lower": {
"reference": "W84",
"value": 0,
"units": "M"
},
"outline_polygon": {
"coordinates": [
[
[103.85495497971431, 1.2886965146831955],
[103.85349357666604, 1.2828751821136281],
[103.85529602112451, 1.2804725240958277],
[103.85495497971431, 1.2886965146831955]
]
],
"type": "Polygon"
}
},
"time_start": {
"format": "RFC3339",
"value": "2020-07-17T12:00:00Z"
},
"time_end": {
"format": "RFC3339",
"value": "2020-07-17T13:00:00Z"
}
},
],
"type": "STC",
"state": "Accepted"
}
}
}
Notify Nova-CIF directly of changed constraint details by submitting a HTTP POST request to /constraints with valid JSON body content.
cif/constraints.write
is required for API access.HTTP request parameters:
Property | Description |
---|---|
constraint_id |
(required) UUID of the Constraint entity. |
constraint |
(required) Full specification of a UTM Constraint . |
subscriptions |
(required) Subscription(s) from DSS prompting this notification. |
HTTP response status codes:
Code | Description |
---|---|
204 |
New or updated full Constraint information received successfully. |
400 |
The Entity could not be parsed, or contains illegal data. |
401 |
Access token was not provided in Authorization header, token could not be decoded, or token was invalid. |
403 |
The access token was decoded successfully but did not include a scope appropriate to this endpoint. |
curl -X POST {base_url}/uss/v1/constraints
{
"constraint_id": "7d37307f-92f2-4f07-8a26-eb3fcac3636c",
"constraint": {
"reference": {
"id": "7d37307f-92f2-4f07-8a26-eb3fcac3636c",
"owner": "1hlc4etfl7fp8tv11r11rclij3",
"version": 3,
"time_start": {
"format": "RFC3339",
"value": "2020-07-17T12:00:00Z"
},
"time_end": {
"format": "RFC3339",
"value": "2020-07-17T13:00:00Z"
},
"uss_base_url": "https://fims.novautm.net"
},
"details": {
"volumes": [
{
"volume": {
"altitude_upper": {
"reference": "W84",
"value": 100,
"units": "M"
},
"altitude_lower": {
"reference": "W84",
"value": 0,
"units": "M"
},
"outline_polygon": {
"coordinates": [
[
[103.85495497971431, 1.2886965146831955],
[103.85349357666604, 1.2828751821136281],
[103.85529602112451, 1.2804725240958277],
[103.85495497971431, 1.2886965146831955]
]
],
"type": "Polygon"
}
},
"time_start": {
"format": "RFC3339",
"value": "2020-07-17T12:00:00Z"
},
"time_end": {
"format": "RFC3339",
"value": "2020-07-17T13:00:00Z"
}
}
]
}
},
"subscriptions": [
{
"notification_index": 1,
"subscription_id": "282c196e-c707-41d2-a94d-b03cf39127c9"
}
]
}
{
"message": "Constraint information received successfully."
}
Subscribe to Nova-CIF for updates by submitting a HTTP PUT request to /subscriptions with valid JSON body content. Subscription notifications are only triggered by changes to, creation of, or deletion of Constraint
or Operation
entities in the DSS.
cif/subscriptions
is required for API access.HTTP request parameters:
Property | Description |
---|---|
extents |
(required) Volume4D entity which defines the extent of the subscription area. |
old_version |
(required) Version number must be set to 0 for a new subscription. |
uss_base_url |
(required) The base URL where notifications will be pushed to. |
notify_for_operations |
(optional) Subscribe for Operation notifications. Default is "false". |
notify_for_constraints |
(optional) Subscribe for Constraint notifications. Default is "false". |
HTTP response status codes:
Code | Description |
---|---|
200 |
A new Subscription was created successfully. |
400 |
The request attempted to mutate the Subscription in a disallowed way. |
401 |
Access token was not provided in Authorization header, token could not be decoded, or token was invalid. |
403 |
The access token was decoded successfully but did not include a scope appropriate to this endpoint. |
curl -X PUT {base_url}/uss/v1/subscriptions
{
"extents": {
"time_end": {
"format": "RFC3339",
"value": "2020-08-12T14:26:24Z"
},
"time_start": {
"format": "RFC3339",
"value": "2020-08-12T10:26:24Z"
},
"volume": {
"altitude_lower": {
"reference": "W84",
"units": "M",
"value": 0
},
"altitude_upper": {
"reference": "W84",
"units": "M",
"value": 100
},
"outline_polygon": {
"coordinates": [
[
[103.84313131960306, 1.2884812239473575],
[103.83284296993344, 1.2574632207548007],
[103.90566519493661, 1.2222661763030516],
[103.93508344477397, 1.2889633660872732],
[103.84313131960306, 1.2884812239473575]
]
],
"type": "Polygon"
}
}
},
"old_version": 0,
"uss_base_url": "https://fims.novautm.net",
"notify_for_operations": "true",
"notify_for_constraints": "true"
}
{
"constraints": [
{
"id": "1713c11a-2957-4665-acd6-0687ea410412",
"ovn": "1OxgePtMiHqHgGraLLSXy2sXQOeKoMqSbY0BWFkdkFE=",
"owner": "1hlc4etfl7fp8tv11r11rclij3",
"time_end": {
"format": "RFC3339",
"value": "2020-08-12T13:00:00Z"
},
"time_start": {
"format": "RFC3339",
"value": "2020-08-12T12:00:00Z"
},
"uss_base_url": "https://fims.novautm.net",
"version": 1
}
],
"operations": [],
"subscription": {
"dependent_operations": [],
"id": "a0ad441b-f016-4cad-b4ae-b7ed26ba5be0",
"implicit_subscription": false,
"notification_index": 0,
"notify_for_constraints": true,
"notify_for_operations": true,
"time_end": {
"format": "RFC3339",
"value": "2020-08-12T14:26:24Z"
},
"time_start": {
"format": "RFC3339",
"value": "2020-08-12T10:26:24Z"
},
"uss_base_url": "https://fims.novautm.net",
"version": 1
}
}
This section defines the Building Data Service within the CIF-SDSP. You can use these endpoints to query Building
objects within the CIF-SDSP.
Define a box to query a geographical area to retrieve building data by submitting a HTTP POST request to /buildings/query/box.
sdsp/buildings.read
is required for API access.Property | Description |
---|---|
box_lower |
(required) Lower bounds of the geographical query area given as a lon-lat pair. |
box_upper |
(required) Upper bounds of the geographical query area given as a lon-lat pair. |
curl -X POST {base_url}/buildings/query/box
{
"box": {
"box_lower": [103.866288, 1.314993],
"box_upper": [103.871510, 1.314044]
}
}
{
"data": [
{
"building_id": "way/295367545",
"residents": 21,
"centroid": {
"type": "Point",
"coordinates": [103.87169677997852, 1.3151087000293904]
},
"volume": {
"outline_polygon": {
"coordinates": [
[
[103.87194759999971, 1.3153839000000036],
[103.87209839999971, 1.3150074000000036],
[103.87132059999972, 1.3146959000000038],
[103.87116969999971, 1.3150724000000034],
[103.87194759999971, 1.3153839000000036]
]
],
"type": "Polygon"
},
"altitude_upper": {
"reference": "W84",
"value": 4.1,
"units": "M"
},
"altitude_lower": {
"reference": "W84",
"value": 0,
"units": "M"
}
},
"description": "Building data provided by Nova-CIF SDSP.",
"date_created": "2020-07-23T06:28:58Z"
}
],
"message": "Request is successful.",
"state": "Success"
}
Define a polygon to query a geographical area to retrieve building data by submitting a HTTP POST request to /buildings/query/polygon.
sdsp/buildings.read
is required for API access.Property | Description |
---|---|
coordinates |
(required) Coordinates which define the polygon in GeoJSON format. |
type |
(required) Must be defined as "Polygon". |
curl -X POST {base_url}/buildings/query/polygon
{
"coordinates": [
[
[103.866288, 1.314993],
[103.871510, 1.314044],
[103.869494, 1.309757],
[103.866288, 1.314993]
]
],
"type": "Polygon"
}
{
"data": [
{
"building_id": "way/295367545",
"residents": 21,
"centroid": {
"type": "Point",
"coordinates": [103.87169677997852, 1.3151087000293904]
},
"volume": {"$Volume3D"},
"description": "Building data provided by Nova-CIF SDSP.",
"date_created": "2020-07-23T06:28:58Z"
}
],
"message": "Request is successful.",
"state": "Success"
}
Define a path to retrieve coinciding building data by submitting a HTTP POST request to /buildings/query/path. A path is made up of sequential line segments of the type LineString
.
sdsp/buildings.read
is required for API access.Property | Description |
---|---|
coordinates |
(required) Coordinates which define the path in GeoJSON format. |
type |
(required) Must be defined as "LineString". |
curl -X POST {base_url}/buildings/query/path
{
"coordinates": [
[103.866288, 1.314993],
[103.871510, 1.314044],
[103.869494, 1.309757]
],
"type": "LineString"
}
{
"data": [
{
"building_id": "way/295367545",
"residents": 21,
"centroid": {
"type": "Point",
"coordinates": [103.87169677997852, 1.3151087000293904]
},
"volume": {
"outline_polygon": {"$Volume3D"},
"description": "Building data provided by Nova-CIF SDSP.",
"date_created": "2020-07-23T06:28:58Z"
}
],
"message": "Request is successful.",
"state": "Success"
}
This section defines the Population Data Service within the CIF-SDSP. You can use these endpoints to query population data such as urban population density information.
(TBA)
This section defines the Air Traffic Data Service within the CIF-SDSP. You can use these endpoints to query live aircraft state information (ADS-B) from the CIF-ATM server.
Retrieve all active airborne air traffic state information within the Singapore Airspace by submitting a HTTP GET request to /traffic/query/active. Air traffic states within a 1 minute time interval from the time of the request are classified as active.
cif/traffic.read
is required for API access. (TBA)Property | Description |
---|---|
time |
(required) Time reference used to form the query, specified as a Unix timestamp. |
curl -X GET {base_url}/traffic/query/active
[
{
"reference": {
"icao24": "780a6f",
"origin_country": "China",
"callsign": "CPA2074 ",
"state": "airborne"
},
"details": {
"ground_speed": {
"reference": "GROUND",
"units": "MetersPerSecond",
"value": 152.66
},
"position": {
"coordinates": [104.0187, 1.4536],
"type": "Point"
},
"last_contact": {
"format": "UNIX",
"value": 1599642060
},
"baro_altitude": {
"reference": "BAROMETRIC",
"units": "M",
"value": 2118.36
},
"geo_altitude": {
"reference": "AGL",
"units": "M",
"value": 2194.56
},
"heading": {
"reference": "NORTH",
"units": "DEG",
"value": 4.06
}
}
}
]
Retrieve all active airborne air traffic state information within the Singapore Airspace by specifying a time origin in a HTTP GET request to /traffic/query/active/{time}. Air traffic states within a time interval measured from the specified time origin and the time of the request are classified as active.
cif/traffic.read
is required for API access. (TBA)curl -X GET {base_url}/traffic/query/active/{time}
[
{
"reference": {
"icao24": "780a6f",
"origin_country": "China",
"callsign": "CPA2074 ",
"state": "airborne"
},
"details": {
"ground_speed": {
"reference": "GROUND",
"units": "MetersPerSecond",
"value": 152.66
},
"position": {
"coordinates": [104.0187, 1.4536],
"type": "Point"
},
"last_contact": {
"format": "UNIX",
"value": 1599642060
},
"baro_altitude": {
"reference": "BAROMETRIC",
"units": "M",
"value": 2118.36
},
"geo_altitude": {
"reference": "AGL",
"units": "M",
"value": 2194.56
},
"heading": {
"reference": "NORTH",
"units": "DEG",
"value": 4.06
}
}
}
]
The CIF-ATM service automagically creates Operation
references from near-realtime air traffic data (manned air operations) and injects them into the DSS for discovery and synchronization within the local UTM ecosystem.
These manned Operation
references are created at a certain frequency which is based on the update rate of the near-realtime air traffic telemetry information. This update rate is approximately 10-15 seconds.
All manned Operation
references are treated as NonConforming
flights in the DSS. New Operation
references created by the CIF-ATM will trigger a notification which notifies the relevant USS who is subscribed to an area in the proximity of the flight.
Upon receiving a notification, the USS should query the CIF-ATM to retrieve specific information about the Operation
and establish a connection to receive telemetry updates from the NonConforming
flight. This is done IAW the ASTM interUSS Standards.
The ASTM-compliant Operation
endpoints are provided in the Section M3.
This section defines Operation API witin the CIF-ATM service. This API is reserved for handling of manned air operations and should not to be confused with the Operation API within the CIF-USS service, which is restricted to UA operations.
You can use these endpoints to query Operation
details and telemetry updates within the CIF-ATM service.
Query an existing operation reference in the CIF-ATM by submitting a HTTP GET request to /operations/{operation_id}.
cif/traffic.read
is required for API access. (TBA)operation_id
must be specified in the URL parameter /{operation_id}.URL parameters:
Property | Description |
---|---|
operation_id |
(required) UUID of the Operation entity. |
HTTP response status codes:
Code | Description |
---|---|
200 |
Operation details were retrieved successfully. |
400 |
One or more parameters were missing or invalid. |
401 |
Access token was not provided in Authorization header, token could not be decoded, or token was invalid. |
403 |
The access token was decoded successfully but did not include a scope appropriate to this endpoint. |
404 |
The requested entity could not be found. |
curl -X GET {base_url}/uss/v1/operations/{operation_id}
{
"operation": {
"reference": {
"subscribers": [
{
"subscriptions": [
{
"subscription_id": "04057eb0-ce6a-4862-adba-6ce3c30498f7",
"notification_index": 2
},
{
"subscription_id": "3b182833-2c22-485a-8adf-ab406e378891",
"notification_index": 1
}
],
"uss_base_url": "https://atm.fims.novautm.net"
}
],
"operation_reference": {
"owner": "1hlc4etfl7fp8tv11r11rclij3",
"subscription_id": "3b182833-2c22-485a-8adf-ab406e378891",
"uss_base_url": "https://atm.fims.novautm.net",
"time_start": {
"format": "RFC3339",
"value": "2020-09-14T09:31:29Z"
},
"ovn": "Fp/YVC/6mvzV5afSaU8yYN5CHHcA/OPuNlGxTzUX/lI=",
"id": "0acf0517-5e02-40e7-a6d3-f6ff92de00ff",
"time_end": {
"format": "RFC3339",
"value": "2020-09-14T09:41:29Z"
},
"version": 2
}
},
"details": {
"volumes": [
{
"volume": {
"outline_circle": {
"type": "Feature",
"geometry": {
"coordinates": [104.0379, 1.4541]
},
"properties": {
"radius": {
"value": 100,
"units": "M"
}
}
},
"altitude_upper": {
"reference": "W84",
"value": 1132.46,
"units": "M"
},
"altitude_lower": {
"reference": "W84",
"value": 132.46000000000004,
"units": "M"
}
},
"time_start": {
"format": "RFC3339",
"value": "2020-09-14T09:31:29.000Z"
},
"time_end": {
"format": "RFC3339",
"value": "2020-09-14T09:41:29.000Z"
}
}
],
"state": "NonConforming",
"vlos": false
}
}
}
Query telemetry data from an existing operation in the CIF-ATM by submitting a HTTP GET request to /operations/{operation_id}/telemetry.
cif/traffic.read
is required for API access. (TBA)operation_id
must be specified in the URL parameter /{operation_id}.URL parameters:
Property | Description |
---|---|
operation_id |
(required) UUID of the Operation entity. |
HTTP response status codes:
Code | Description |
---|---|
200 |
Operation telemetry details were retrieved successfully. |
400 |
One or more parameters were missing or invalid. |
401 |
Access token was not provided in Authorization header, token could not be decoded, or token was invalid. |
403 |
The access token was decoded successfully but did not include a scope appropriate to this endpoint. |
404 |
The requested entity could not be found. |
409 |
Operation is not in a state that provides telemetry. |
curl -X GET {base_url}/uss/v1/operations/{operation_id}/telemetry
{
"telemetry": {
"id": "0acf0517-5e02-40e7-a6d3-f6ff92de00ff",
"position": {
"longitude": 103.9883,
"latitude": 1.3445,
"accuracy_h": "HAUnknown",
"accuracy_v": "VAUnknown",
"extrapolated": false,
"altitude": {
"value": 632.46,
"reference": "AGL",
"units": "M"
}
},
"velocity": {
"speed": 6.17,
"units_speed": "MetersSecond",
"track": 292.5
},
"time_measured": {
"value": "2020-09-14T09:36:15.000Z",
"format": "RFC3339"
}
}
}
This section defines the data schemas used by Nova-CIF. The current API implements the ASTM interUSS Standards v0.3.4 data schemas.
Universally-unique identifier (version 4). Given as constraint_id
.
"648fcd3d-d36d-444e-9143-3d5cd41b964d"
RFC3339-formatted datetime object. The time zone must be 'Z'.
Property | Description |
---|---|
format |
(required) Must be "RFC3339". |
value |
(required) Time string in RFC3339 format. |
{
"format": "RFC3339",
"value": "2020-05-21T04:26:24Z"
}
Pair of longitude and latitude used for specifying geographical vertex. Specified as an array. Note the exact order is important!
[
103.87169677997852,
1.3151087000293904
]
Altitude reference object.
Property | Description |
---|---|
reference |
(required) UTM currently only allows "W84". |
units |
(required) UTM only allows meters, "M". |
value |
(required) Numeric value of the altitude. |
{
"reference": "W84",
"units": "M",
"value": 0
}
Point GeoJSON geometry. Note that coordinates
is validated to be be an array of size two.
Property | Description |
---|---|
coordinates |
(required) Longitude latitude pair. |
type |
(required) Must be 'Polygon' per GeoJSON spec. |
{
"coordinates": [
103.87169677997852, 1.3151087000293904
],
"type": "Point"
}
Polygon GeoJSON geometry. Note that coordinates
is validated to be be an array of size one. This implies there are no interior rings allowed currently.
Property | Description |
---|---|
coordinates |
(required) Polygon coordinates per GeoJSON spec. |
type |
(required) Must be 'Polygon' per GeoJSON spec. |
{
"coordinates": [
[
[103.85495497971431, 1.2886965146831955],
[103.85349357666604, 1.2828751821136281],
[103.85529602112451, 1.2804725240958277],
[103.85495497971431, 1.2886965146831955]
]
],
"type": "Polygon"
}
LineString GeoJSON geometry. Note that coordinates
is an array of LonLatPair vertices.
Property | Description |
---|---|
coordinates |
(required) Array of vertices. |
type |
(required) Must be 'Polygon' per GeoJSON spec. |
{
"coordinates": [
[103.866288, 1.314993],
[103.871510, 1.314044],
[103.869494, 1.309757]
],
"type": "LineString"
}
Three-dimensional geographic volume consisting of a vertically-extruded shape.
Property | Description |
---|---|
altitude_lower |
(required) Lower bounding altitude of this volume. |
altitude_upper |
(required) Upper bounding altitude of this volume. |
outline_polygon |
(required) Polygon object per GeoJSON spec. |
{
"altitude_lower": {"$Altitude"},
"altitude_upper": {"$Altitude"},
"outline_polygon": {"$Polygon"}
}
Four-dimensional geographic volume consisting of a vertically-extruded shape and a finite time horizon.
Property | Description |
---|---|
time_start |
(required) Start time of this volume. |
time_end |
(required) End time of this volume. |
volume |
(required) Volume3D object. |
{
"time_end": {"$Time"},
"time_start": {"$Time"},
"volume": {"$Volume3D"}
}
A constraint reference entity defines the geographical airspace restriction in spacetime. Refer to the ASTM interUSS Standards for more details on its usage.
extents
property is an array which contains a single Volume4D
object.Property | Description |
---|---|
constraint_id |
(required) UUID of the Constraint entity. |
extents |
(required) Volume4D entity which defines the extent of the Constraint entity. |
old_version |
(required) Version number used by the DSS. |
uss_base_url |
(required) The base URL of a USS implementation of the USS-USS API. |
{
"constraint_id": {"$UUID"},
"extents": [{"$Volume4D"}],
"time_created": {"$Time"},
"old_version": 1,
"uss_base_url": "https://fims.novautm.net",
}
A constraint reference entity defines the geographical airspace restriction in spacetime. Refer to the ASTM interUSS Standards for more details on its usage.
DSSConstraint
is made up of a ConstraintReference
and ConstraintDetails
. volumes
property is an array which contains a single Volume4D
object.Property | Description |
---|---|
constraint_id |
(required) UUID of the Constraint entity. |
constraint |
(required) Full specification of a UTM Constraint . |
subscriptions |
(required) Subscription(s) from DSS prompting this notification. |
{
"constraint_id": {"$UUID"},
"constraint": {
"reference": {
"id": {"$UUID"},
"owner": "1hlc4etfl7fp8tv11r11rclij3",
"version": 3,
"time_start": {"$Time"},
"time_end": {"$Time"},
"uss_base_url": "https://fims.novautm.net"
},
"details": {
"volumes": [{"$Volume4D"}],
"type": "STC"
}
},
"subscriptions": [
{
"notification_index": 1,
"subscription_id": {"$UUID"}
}
]
}
A ConstraintReference (area in which a Constraint
is present, along with other high-level information, but no details). The DSS reports only these references, no ConstraintDetails are provided.
Property | Description |
---|---|
id |
(required) UUID of the Constraint entity. |
owner |
(required) Created by the DSS based on creating client's ID. |
version |
(required) Sequential version of the Constraint managed by the DSS. |
time_start |
(required) Start time of Constraint as RFC3339-formatted time/date string. |
time_end |
(required) End time of Constraint as RFC3339-formatted time/date string. |
uss_base_url |
(required) The base URL of a USS implementation of the USS-USS API. |
{
"id": {"$UUID"},
"owner": "1hlc4etfl7fp8tv11r11rclij3",
"version": 3,
"time_start": {"$Time"},
"time_end": {"$Time"},
"uss_base_url": "https://fims.novautm.net"
}
Details of a Constraint
which are stored within the Nova-CIF. USSs exchange ConstraintDetails and additional information peer-to-peer after initial discovery via the DSS.
Property | Description |
---|---|
volumes |
(required) Volume4D entity which defines the extent of the Constraint entity. |
type |
(optional) Type of constraint (UVR or Geozone), i.e. STC or LTC |
{
"volumes": [{"$Volume4D"}],
"type": "STC"
}
Constraint type given as a string. Supported types include short-term constraints or UVRs denoted by STC, and long-term constraints or Geozones denoted by LTC.
constraint_type
is automatically allocated by the CIF.Property | Description |
---|---|
constraint_type |
(required) Type of constraint (UVR or Geozone), i.e. STC or LTC |
{
"constraint_type": "STC"
}