Safe Sky Airside Sync API (1.22)

Download OpenAPI specification:Download

Safe Sky Industries, Inc.: support@safe-sky.net URL: https://docs.safe-sky.net/

Overview

The Airside Sync system provides an open REST API for accessing report data.

The REST API uses JSON over HTTPS exclusively. In a cloud deployment the API is exposed on https://api.safe-sky.net/; in an on-premises deployment the URL will vary. The API uses versioned URLs, where the current API version is /v1.

OpenAPI Specifications

Airside Sync provides an OpenAPI specification documenting the current API in a machine readable manner, v2 and v3. This specification can be used to generate API code for many languages. The latest version is always available at https://api.safe-sky.net/v1/openapi.json (OpenAPI v2) and https://api.safe-sky.net/v1/openapi-v3.json (OpenAPI v3), with this rendered documentation available at https://api.safe-sky.net/v1/openapi.html.

Regions

Airside Sync is deployed in multiple geographic regions. A customer aerodrome is provisioned into a single region, the one closest to the customer. Region switching is automatic and transparent when using the Airside Sync client, but when using the API you must ensure to use the correct region yourself. If you are unsure about your region, please discuss with customer support.

The region is set by using the corresponding subdomain of api.safe-sky.net. Currently, the following regions exist:

  • eu.api.safe-sky.net for European and British customers. This region is also accessed when using api.safe-sky.net without a region specifier.
  • us.api.safe-sky.net for North American, South American and Caribbean customers.

Using the wrong region for an API call for a given aerodrome will result in an error.

Formatting

API responses are normally compact JSON. To instead receive formatted human-readable JSON you can add the query parameter ?pretty to any API call or, equivalently, set the Accept: application/json+pretty query header.

Auth

All API methods require authentication, unless otherwise noted. Each request must carry an Authorization header with the Bearer scheme and a valid API key. An API key can be created in the Airside Sync GUI, using the "Manage API keys" button at the bottom of the "About" screen. API keys are tied to the user who created them and will inherit their access permissions. API keys can be set to expire or have an unlimited lifetime.

Demo Key

There is a read only API key azt_VRrVFEWcqNes5oGuYA5YDfqpy6ytXNg4 that can be used for demonstration and experimentation on the fictional aerodrome DEMO. For example, to verify authentication from the command line:

% curl -H 'Authorization: Bearer azt_VRrVFEWcqNes5oGuYA5YDfqpy6ytXNg4' \
    https://api.safe-sky.net/v1/auth/user?pretty
{
    "username": "dc78f878-2d7c-40b9-a416-52a7ceea1fff",
    "email": "demo@safe-sky.net",
    "displayName": "Airside Sync Demo User",
    ...

List task users

Returns the usernames of users with task management permissions. The users are filtered based on the requesting user's permissions. A user cannot obtain a list of users of task types which the requesting user has no permissions to.

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string

Responses

Response samples

Content type
application/json
{
  • "taskUsers": [
    ]
}

List aerodrome users

Returns a list of users that are members of the aerodrome. This method requires aerodrome admin permissions.

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string

Aerodrome is optional, when set it returns users with permission for the aerodrome in question only, requires aerodrome admin permission. Blank aerodrome returns all users and requires system admin permission.

Responses

Response samples

Content type
application/json
{
  • "users": [
    ]
}

Add a user to an aerodrome, granting the given permissions.

The email address is used to look up an existing user or, if one does not exist, invite the user to the Airside Sync system. In this case the display name is used when creating the user.

Authorizations:
bearerAuth
Request Body schema: application/json
required
displayName
string
email
string
object (Permissions)

Responses

Request samples

Content type
application/json
{
  • "displayName": "string",
  • "email": "string",
  • "permissions": {
    }
}

Response samples

Content type
application/json
{
  • "error": "string",
  • "sentMail": true,
  • "user": {
    }
}

Get login configuration

The system login configuration determines whether internal or external authentication is used, and which ID provider to use.

Responses

Response samples

Content type
application/json
{
  • "kind": "LOGINKIND_UNSUPPORTED",
  • "oidcAllowedTfps": [
    ],
  • "oidcClientId": "string",
  • "oidcIssuer": "string",
  • "oidcJwksUrl": "string",
  • "oidcLoginDiscoveryUrl": "string",
  • "oidcPermissionsClaim": "string",
  • "oidcRequiredScps": [
    ],
  • "oidcResetDiscoveryUrl": "string",
  • "oidcScopes": [
    ],
  • "oidcSystemAdminClaim": "string"
}

Get current user

Returns the currently authenticated user.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "accountDisabled": true,
  • "city": "string",
  • "country": "string",
  • "created": "2019-08-24T14:15:22Z",
  • "displayName": "string",
  • "email": "string",
  • "permissions": [
    ],
  • "systemAdmin": true,
  • "userId": "string"
}

List API keys

Returns a list of current API keys for the currently authenticated user. For security reasons the full API keys are not returned, instead a truncated display string is returned that can be shown to the user. The revocation ID is used to refer to a key in the revoke API key call.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "keys": [
    ]
}

Create API key

Creates an API key that can be used to authenticate as the currently authenticated user. The validity period is specified in days.

Authorizations:
bearerAuth
Request Body schema: application/json
required
validityDays
integer <int32>

Responses

Request samples

Content type
application/json
{
  • "validityDays": 0
}

Response samples

Content type
application/json
{
  • "key": "string"
}

Revoke API key

Revokes an API key, by looking it up via its revocation ID.

Authorizations:
bearerAuth
path Parameters
revocationId
required
string

Responses

Response samples

Content type
application/json
{ }

Set user data

Set user data for the currently authenticated user. User data is a collection of key-value pairs, where the key is a string and the value is a slice of bytes (base64 encoded, in JSON). The server does not interpret the value and is only used to store it. The Airside Sync app uses user data to store user preferences and other settings.

Authorizations:
bearerAuth
path Parameters
data.key
required
string
Request Body schema: application/json
required
value
string <byte>

In JSON, this value is base64 encoded.

Responses

Request samples

Content type
application/json
{
  • "value": "string"
}

Response samples

Content type
application/json
{ }

Get user data

Get user data for the currently authenticated user. User data is a collection of key-value pairs, where the key is a string and the value is a slice of bytes (base64 encoded, in JSON). The server does not interpret the value and is only used to store it. The Airside Sync app uses user data to store user preferences and other settings.

Authorizations:
bearerAuth
path Parameters
key
required
string

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

List read-only access keys

Returns a list of current read-only access keys for the currently authenticated user or all the keys related to the aerodrome for admins. For security reasons the full read-only access keys are not returned, instead a truncated display string is returned that can be shown to the user. The revocation ID is used to refer to a key in the revoke read-only access key call.

Authorizations:
bearerAuth
query Parameters
aerodromeId
string

Responses

Response samples

Content type
application/json
{
  • "keys": [
    ]
}

Revoke read-only access key

Revokes a read-only access key, by looking it up via its revocation ID.

Authorizations:
bearerAuth
path Parameters
revocationId
required
string
query Parameters
aerodromeId
string

Responses

Response samples

Content type
application/json
{ }

Update aerodrome user

Update the user permissions for one or more aerodromes and sets the display name. The special permission "RevokeAccess" can be used to remove permissions for an aerodrome entirely.

Authorizations:
bearerAuth
path Parameters
userId
required
string
Request Body schema: application/json
required
displayName
string
object (Permissions)

Responses

Request samples

Content type
application/json
{
  • "displayName": "string",
  • "permissions": {
    }
}

Response samples

Content type
application/json
{
  • "error": "string",
  • "user": {
    }
}

Blob

Get a blob from backend storage

The blob data is returned directly in the HTTP response body. The key to use is returned by other methods, such as GetSpokenATIS.

Authorizations:
bearerAuth
path Parameters
key
required
string.+

Responses

Response samples

Content type
application/json
"string"

Config

List aerodromes

This method requires system admin permissions.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "aerodromes": [
    ]
}

Create aerodrome

This method requires system admin permissions.

Authorizations:
bearerAuth
Request Body schema: application/json
required
aerodromeId
string (Aerodrome identifier (ICAO))
object (atlasAFTNConfig)
object (atlasAFTNConfig)
aprons
Array of strings (Aprons, in the order they are presented to the user)
atisEmailBodyTemplate
string (ATIS email body template override (Go template format))
atisEmailSubjectTemplate
string (ATIS email subject template override (Go template format))
awoswxSiteId
string (wx.awos.se site ID, for importing weather data)
Array of objects (Customised report definitions)
deployment
string (- PRODUCTION: Used by customer for production purposes - TESTING: Used by customer for testing / training purposes - TRIAL: Used by prospective customer for trial purposes - DEVELOPMENT: Used internally for development purposes - EXPIRED: Has expired)
Default: "UNKNOWN"
Enum: "UNKNOWN" "PRODUCTION" "TESTING" "TRIAL" "DEVELOPMENT" "EXPIRED"
description
string (Aerodrome description (name) for display purposes)
distanceUnit
string (atlasDistanceUnit)
Default: "DISTANCE_UNIT_UNSPECIFIED"
Enum: "DISTANCE_UNIT_UNSPECIFIED" "METERS" "FEET"
object (atlasEmailConfig)
emailImportAccount
string (Email account ID for importing sensor data sent via email)
expires
string <date-time> (The license expiry for the aerodrome, or blank if the license does not expire)
iata
string (Airport code (IATA), for information purposes only)
managedEmailDomains
Array of strings (Email domains where new users can be added)
object (atlasAerodromeMap)
mapPointPrecision
integer <int32> (Map point precision in meters, for reducing map resolution to increase performance)
metarId
string (METAR ID (ICAO), for importing weather data)
object (atlasMobileSensorThresholds)
object (atlasNavCanadaConfig)
optionalFeatures
Array of strings (Enabled optional features (licensed modules))
Items Enum: "NO_OPTIONAL_FEATURE" "MOBILE_SENSORS_FEATURE" "ATIS_REPORTING_FEATURE" "DESKTOP_UI_FEATURE" "MEDIA_CAPTURE_FEATURE" "NAVBLUE_RUNWAYSENSE_FEATURE" "SEND_RCR_FEATURE" "FRICTION_REPORTING_FEATURE" "VIEWER_KEY_FEATURE" "ARCHIVE_VIEW_FEATURE" "STOCK_REMARKS_FEATURE" "API_FEATURE" "SEND_SMS_FEATURE" "SEND_FAX_FEATURE" "MAP_FEATURE" "RUNWAY_ASSESSMENT_FEATURE" "PIREP_FEATURE" "TASK_MANAGEMENT_FEATURE" "ANALYTICS_FEATURE"
object (atlasPlausibilityThresholds)
object (atlasAerodromePreferences)
rcrEmailBodyTemplate
string (RCR email body template override (Go template format))
rcrEmailSubjectTemplate
string (RCR email subject template override (Go template format))
regulatoryFramework
string (atlasRegulatoryFramework)
Default: "FRAMEWORK_UNSPECIFIED"
Enum: "FRAMEWORK_UNSPECIFIED" "ICAO_GRF" "CANADA_RSC" "ICAO_GRF_NOMULTIDEPTH"
runwaySenseId
string (NavBlue RunwaySense ID, for importing aircraft braking data)
Array of objects (Runways, in the order they are presented to the user)
Array of objects (RWS200 config)
silentAprons
Array of strings (Silent aprons, i.e., those that can be reported but are not included in SNOWTAM)
silentTaxiways
Array of strings (Silent taxiways, i.e., those that can be reported but are not included in SNOWTAM)
snowtamEmailBodyTemplate
string (SNOWTAM email body template override (Go template format))
snowtamEmailSubjectTemplate
string (SNOWTAM email subject template override (Go template format))
taxiways
Array of strings (Taxiways, in the order they are presented to the user)
userLimit
integer <int32> (User limit, where 0 means unlimited)

Responses

Request samples

Content type
application/json
{
  • "aerodromeId": "string",
  • "aftnRcr": {
    },
  • "aftnSnowtam": {
    },
  • "aprons": [
    ],
  • "atisEmailBodyTemplate": "string",
  • "atisEmailSubjectTemplate": "string",
  • "awoswxSiteId": "string",
  • "customForms": [
    ],
  • "deployment": "UNKNOWN",
  • "description": "string",
  • "distanceUnit": "DISTANCE_UNIT_UNSPECIFIED",
  • "email": {
    },
  • "emailImportAccount": "string",
  • "expires": "2019-08-24T14:15:22Z",
  • "iata": "string",
  • "managedEmailDomains": [
    ],
  • "map": {
    },
  • "mapPointPrecision": 0,
  • "metarId": "string",
  • "mobileSensorThresholds": {
    },
  • "navCanada": {
    },
  • "optionalFeatures": [
    ],
  • "plausibilityThresholds": {
    },
  • "preferences": {
    },
  • "rcrEmailBodyTemplate": "string",
  • "rcrEmailSubjectTemplate": "string",
  • "regulatoryFramework": "FRAMEWORK_UNSPECIFIED",
  • "runwaySenseId": "string",
  • "runways": [
    ],
  • "rws200": [
    ],
  • "silentAprons": [
    ],
  • "silentTaxiways": [
    ],
  • "snowtamEmailBodyTemplate": "string",
  • "snowtamEmailSubjectTemplate": "string",
  • "taxiways": [
    ],
  • "userLimit": 0
}

Response samples

Content type
application/json
{
  • "config": {
    }
}

Get aerodrome configuration

Returns the configuration for the specified aerodrome, including map data.

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string

Responses

Response samples

Content type
application/json
{
  • "config": {
    }
}

Update aerodrome preferences

Set optional preferences for the specified aerodrome. Requires aerodrome admin permissions.

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string
Request Body schema: application/json
required
object (atlasAerodromePreferences)

Responses

Request samples

Content type
application/json
{
  • "preferences": {
    }
}

Response samples

Content type
application/json
{ }

Add or update task types

Create a new task type or updates an existing task type if an id is supplied. Requires aerodrome admin permissions.

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string
typeId
required
integer <int32>
Request Body schema: application/json
required
string

Responses

Request samples

Content type
application/json
"string"

Response samples

Content type
application/json
{ }

Update aerodrome configuration

This method requires system admin permissions.

Authorizations:
bearerAuth
path Parameters
config.aerodromeId
required
string

Aerodrome identifier (ICAO)

Request Body schema: application/json
required

Aerodrome configuration

object (atlasAFTNConfig)
object (atlasAFTNConfig)
aprons
Array of strings (Aprons, in the order they are presented to the user)
atisEmailBodyTemplate
string (ATIS email body template override (Go template format))
atisEmailSubjectTemplate
string (ATIS email subject template override (Go template format))
awoswxSiteId
string (wx.awos.se site ID, for importing weather data)
Array of objects (Customised report definitions)
deployment
string (- PRODUCTION: Used by customer for production purposes - TESTING: Used by customer for testing / training purposes - TRIAL: Used by prospective customer for trial purposes - DEVELOPMENT: Used internally for development purposes - EXPIRED: Has expired)
Default: "UNKNOWN"
Enum: "UNKNOWN" "PRODUCTION" "TESTING" "TRIAL" "DEVELOPMENT" "EXPIRED"
description
string (Aerodrome description (name) for display purposes)
distanceUnit
string (atlasDistanceUnit)
Default: "DISTANCE_UNIT_UNSPECIFIED"
Enum: "DISTANCE_UNIT_UNSPECIFIED" "METERS" "FEET"
object (atlasEmailConfig)
emailImportAccount
string (Email account ID for importing sensor data sent via email)
expires
string <date-time> (The license expiry for the aerodrome, or blank if the license does not expire)
iata
string (Airport code (IATA), for information purposes only)
managedEmailDomains
Array of strings (Email domains where new users can be added)
object (atlasAerodromeMap)
mapPointPrecision
integer <int32> (Map point precision in meters, for reducing map resolution to increase performance)
metarId
string (METAR ID (ICAO), for importing weather data)
object (atlasMobileSensorThresholds)
object (atlasNavCanadaConfig)
optionalFeatures
Array of strings (Enabled optional features (licensed modules))
Items Enum: "NO_OPTIONAL_FEATURE" "MOBILE_SENSORS_FEATURE" "ATIS_REPORTING_FEATURE" "DESKTOP_UI_FEATURE" "MEDIA_CAPTURE_FEATURE" "NAVBLUE_RUNWAYSENSE_FEATURE" "SEND_RCR_FEATURE" "FRICTION_REPORTING_FEATURE" "VIEWER_KEY_FEATURE" "ARCHIVE_VIEW_FEATURE" "STOCK_REMARKS_FEATURE" "API_FEATURE" "SEND_SMS_FEATURE" "SEND_FAX_FEATURE" "MAP_FEATURE" "RUNWAY_ASSESSMENT_FEATURE" "PIREP_FEATURE" "TASK_MANAGEMENT_FEATURE" "ANALYTICS_FEATURE"
object (atlasPlausibilityThresholds)
object (atlasAerodromePreferences)
rcrEmailBodyTemplate
string (RCR email body template override (Go template format))
rcrEmailSubjectTemplate
string (RCR email subject template override (Go template format))
regulatoryFramework
string (atlasRegulatoryFramework)
Default: "FRAMEWORK_UNSPECIFIED"
Enum: "FRAMEWORK_UNSPECIFIED" "ICAO_GRF" "CANADA_RSC" "ICAO_GRF_NOMULTIDEPTH"
runwaySenseId
string (NavBlue RunwaySense ID, for importing aircraft braking data)
Array of objects (Runways, in the order they are presented to the user)
Array of objects (RWS200 config)
silentAprons
Array of strings (Silent aprons, i.e., those that can be reported but are not included in SNOWTAM)
silentTaxiways
Array of strings (Silent taxiways, i.e., those that can be reported but are not included in SNOWTAM)
snowtamEmailBodyTemplate
string (SNOWTAM email body template override (Go template format))
snowtamEmailSubjectTemplate
string (SNOWTAM email subject template override (Go template format))
taxiways
Array of strings (Taxiways, in the order they are presented to the user)
userLimit
integer <int32> (User limit, where 0 means unlimited)

Responses

Request samples

Content type
application/json
{
  • "aftnRcr": {
    },
  • "aftnSnowtam": {
    },
  • "aprons": [
    ],
  • "atisEmailBodyTemplate": "string",
  • "atisEmailSubjectTemplate": "string",
  • "awoswxSiteId": "string",
  • "customForms": [
    ],
  • "deployment": "UNKNOWN",
  • "description": "string",
  • "distanceUnit": "DISTANCE_UNIT_UNSPECIFIED",
  • "email": {
    },
  • "emailImportAccount": "string",
  • "expires": "2019-08-24T14:15:22Z",
  • "iata": "string",
  • "managedEmailDomains": [
    ],
  • "map": {
    },
  • "mapPointPrecision": 0,
  • "metarId": "string",
  • "mobileSensorThresholds": {
    },
  • "navCanada": {
    },
  • "optionalFeatures": [
    ],
  • "plausibilityThresholds": {
    },
  • "preferences": {
    },
  • "rcrEmailBodyTemplate": "string",
  • "rcrEmailSubjectTemplate": "string",
  • "regulatoryFramework": "FRAMEWORK_UNSPECIFIED",
  • "runwaySenseId": "string",
  • "runways": [
    ],
  • "rws200": [
    ],
  • "silentAprons": [
    ],
  • "silentTaxiways": [
    ],
  • "snowtamEmailBodyTemplate": "string",
  • "snowtamEmailSubjectTemplate": "string",
  • "taxiways": [
    ],
  • "userLimit": 0
}

Response samples

Content type
application/json
{
  • "config": {
    }
}

Update aerodrome configuration

This method requires system admin permissions.

Authorizations:
bearerAuth
path Parameters
config.aerodromeId
required
string

Aerodrome identifier (ICAO)

query Parameters
updateMask
string
Request Body schema: application/json
required

Aerodrome configuration

object (atlasAFTNConfig)
object (atlasAFTNConfig)
aprons
Array of strings (Aprons, in the order they are presented to the user)
atisEmailBodyTemplate
string (ATIS email body template override (Go template format))
atisEmailSubjectTemplate
string (ATIS email subject template override (Go template format))
awoswxSiteId
string (wx.awos.se site ID, for importing weather data)
Array of objects (Customised report definitions)
deployment
string (- PRODUCTION: Used by customer for production purposes - TESTING: Used by customer for testing / training purposes - TRIAL: Used by prospective customer for trial purposes - DEVELOPMENT: Used internally for development purposes - EXPIRED: Has expired)
Default: "UNKNOWN"
Enum: "UNKNOWN" "PRODUCTION" "TESTING" "TRIAL" "DEVELOPMENT" "EXPIRED"
description
string (Aerodrome description (name) for display purposes)
distanceUnit
string (atlasDistanceUnit)
Default: "DISTANCE_UNIT_UNSPECIFIED"
Enum: "DISTANCE_UNIT_UNSPECIFIED" "METERS" "FEET"
object (atlasEmailConfig)
emailImportAccount
string (Email account ID for importing sensor data sent via email)
expires
string <date-time> (The license expiry for the aerodrome, or blank if the license does not expire)
iata
string (Airport code (IATA), for information purposes only)
managedEmailDomains
Array of strings (Email domains where new users can be added)
object (atlasAerodromeMap)
mapPointPrecision
integer <int32> (Map point precision in meters, for reducing map resolution to increase performance)
metarId
string (METAR ID (ICAO), for importing weather data)
object (atlasMobileSensorThresholds)
object (atlasNavCanadaConfig)
optionalFeatures
Array of strings (Enabled optional features (licensed modules))
Items Enum: "NO_OPTIONAL_FEATURE" "MOBILE_SENSORS_FEATURE" "ATIS_REPORTING_FEATURE" "DESKTOP_UI_FEATURE" "MEDIA_CAPTURE_FEATURE" "NAVBLUE_RUNWAYSENSE_FEATURE" "SEND_RCR_FEATURE" "FRICTION_REPORTING_FEATURE" "VIEWER_KEY_FEATURE" "ARCHIVE_VIEW_FEATURE" "STOCK_REMARKS_FEATURE" "API_FEATURE" "SEND_SMS_FEATURE" "SEND_FAX_FEATURE" "MAP_FEATURE" "RUNWAY_ASSESSMENT_FEATURE" "PIREP_FEATURE" "TASK_MANAGEMENT_FEATURE" "ANALYTICS_FEATURE"
object (atlasPlausibilityThresholds)
object (atlasAerodromePreferences)
rcrEmailBodyTemplate
string (RCR email body template override (Go template format))
rcrEmailSubjectTemplate
string (RCR email subject template override (Go template format))
regulatoryFramework
string (atlasRegulatoryFramework)
Default: "FRAMEWORK_UNSPECIFIED"
Enum: "FRAMEWORK_UNSPECIFIED" "ICAO_GRF" "CANADA_RSC" "ICAO_GRF_NOMULTIDEPTH"
runwaySenseId
string (NavBlue RunwaySense ID, for importing aircraft braking data)
Array of objects (Runways, in the order they are presented to the user)
Array of objects (RWS200 config)
silentAprons
Array of strings (Silent aprons, i.e., those that can be reported but are not included in SNOWTAM)
silentTaxiways
Array of strings (Silent taxiways, i.e., those that can be reported but are not included in SNOWTAM)
snowtamEmailBodyTemplate
string (SNOWTAM email body template override (Go template format))
snowtamEmailSubjectTemplate
string (SNOWTAM email subject template override (Go template format))
taxiways
Array of strings (Taxiways, in the order they are presented to the user)
userLimit
integer <int32> (User limit, where 0 means unlimited)

Responses

Request samples

Content type
application/json
{
  • "aftnRcr": {
    },
  • "aftnSnowtam": {
    },
  • "aprons": [
    ],
  • "atisEmailBodyTemplate": "string",
  • "atisEmailSubjectTemplate": "string",
  • "awoswxSiteId": "string",
  • "customForms": [
    ],
  • "deployment": "UNKNOWN",
  • "description": "string",
  • "distanceUnit": "DISTANCE_UNIT_UNSPECIFIED",
  • "email": {
    },
  • "emailImportAccount": "string",
  • "expires": "2019-08-24T14:15:22Z",
  • "iata": "string",
  • "managedEmailDomains": [
    ],
  • "map": {
    },
  • "mapPointPrecision": 0,
  • "metarId": "string",
  • "mobileSensorThresholds": {
    },
  • "navCanada": {
    },
  • "optionalFeatures": [
    ],
  • "plausibilityThresholds": {
    },
  • "preferences": {
    },
  • "rcrEmailBodyTemplate": "string",
  • "rcrEmailSubjectTemplate": "string",
  • "regulatoryFramework": "FRAMEWORK_UNSPECIFIED",
  • "runwaySenseId": "string",
  • "runways": [
    ],
  • "rws200": [
    ],
  • "silentAprons": [
    ],
  • "silentTaxiways": [
    ],
  • "snowtamEmailBodyTemplate": "string",
  • "snowtamEmailSubjectTemplate": "string",
  • "taxiways": [
    ],
  • "userLimit": 0
}

Response samples

Content type
application/json
{
  • "config": {
    }
}

Health

Perform a health check

The system performs an end-to-end health check, including a full database transaction, and returns a summarized status. This method can be used for service monitoring and load balancing.

This method does not require authentication.

Responses

Response samples

Content type
application/json
{
  • "status": "FAIL"
}

Live

The aerodrome assessment is represented a single JSON object. At the top level are certain metadata fields, and the runways, taxiways and aprons arrays. Each contain lists of objects describing an individual aerodrome element. Each such element has several fields, each generally consisting of both a value and meta field. The value is the current assessment and the meta contains information about who and when made the assessment. The personal information (user ID) is in some cases redacted.

Get current assessments

The aerodrome live method returns the currently assessed state of the aerodrome. No request body is required.

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string

Responses

Response samples

Content type
application/json
{
  • "aerodrome": {
    },
  • "atisPreview": "string",
  • "csvPreview": "string",
  • "pdfPreview": "string",
  • "pirepSummary": {
    },
  • "plausibilityAnalysis": [
    ],
  • "rcrCurrent": [
    ],
  • "rcrHistory": [
    ],
  • "remainingValidityMinutes": 0,
  • "significantChangeStatus": "SIGNIFICANT_CHANGE_STATUS_UNSPECIFIED",
  • "textPreview": "string"
}

Update apron assessments

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string
Request Body schema: application/json
required
Array of objects (Apron assessments)

Responses

Request samples

Content type
application/json
{
  • "aprons": [
    ]
}

Response samples

Content type
application/json
{ }

Get spoken ATIS report

Returns the ATIS report as voice synthesized speech. If keyOnly is set, then only the blob key for the generated file is returned, and GetBlob can be used to download it.

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string
query Parameters
keyOnly
boolean

Responses

Response samples

Content type
application/json
{
  • "hash": "string",
  • "key": "string",
  • "mp3": "string"
}

Update general free text remarks for the aerodrome

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string
Request Body schema: application/json
required
remarks
string
stockPhrases
Array of strings

Responses

Request samples

Content type
application/json
{
  • "remarks": "string",
  • "stockPhrases": [
    ]
}

Response samples

Content type
application/json
{ }

Reset aerodrome

Resets all assessments for the entire aerodrome.

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string

Responses

Response samples

Content type
application/json
{ }

Restore aerodrome from specific report

Restores all aerodrome assessments to those of the specified report (either RCR or SNOWTAM).

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string
reportId
required
string

Responses

Response samples

Content type
application/json
{ }

Update runway assessments

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string
runway.runwayId
required
string
Request Body schema: application/json
required

Runway assessments

object (A boolean)
object (A boolean)
object (A distance)
object (A distance)
object (A boolean)
object (A deicing chemical)
object (A boolean)
object (A boolean)
landingDirection
string (atlasSide)
Default: "LR"
Enum: "LR" "L" "R"
object (A boolean)
object (A time)
object (A string)
singleZone
boolean
object (A distance and side)
object (A distance and side)
object (One or more strings)
object (A temperature)
object (A distance and side)
object (Runway zone assessments)
object (Runway zone assessments)
object (Runway zone assessments)

Responses

Request samples

Content type
application/json
{
  • "adjacentSnowbanks": {
    },
  • "chemicalTreatment": {
    },
  • "clearedLength": {
    },
  • "clearedWidth": {
    },
  • "closed": {
    },
  • "deicingChemical": {
    },
  • "driftingSnow": {
    },
  • "frozenSand": {
    },
  • "landingDirection": "LR",
  • "looseSand": {
    },
  • "observationTime": {
    },
  • "remarks": {
    },
  • "singleZone": true,
  • "snowDrifts": {
    },
  • "snowbanks": {
    },
  • "stockPhrases": {
    },
  • "temperature": {
    },
  • "windrows": {
    },
  • "zoneA": {
    },
  • "zoneB": {
    },
  • "zoneC": {
    }
}

Response samples

Content type
application/json
{ }

Watch aerodrome assessments stream

This returns a stream of JSON objects, in real time as assessments change.

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string

Responses

Response samples

Content type
application/json
{
  • "error": {
    },
  • "result": {
    }
}

Update taxiway assessments

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string
Request Body schema: application/json
required
Array of objects (Taxiway assessments)

Responses

Request samples

Content type
application/json
{
  • "taxiways": [
    ]
}

Response samples

Content type
application/json
{ }

Reset runway

Resets all assessments for a specific runway.

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string
runwayId
required
string

Responses

Response samples

Content type
application/json
{ }

List available recent condition imports

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string
runwayId
required
string
query Parameters
sinceHours
integer <int32>

Number of hours to look back, defaults to 24

Responses

Response samples

Content type
application/json
{
  • "imports": [
    ]
}

Inject a condition import

Airside Sync can accept condition data from third party providers, which can then be selected for import in the app. Only fields with the metadata op UPDATE_SET or UPDATE_CLEAR are applied on import.

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string
runwayId
required
string
Request Body schema: application/json
required
description
string
object (Runway assessments)
source
string
timestamp
string <date-time>

Responses

Request samples

Content type
application/json
{
  • "description": "string",
  • "runway": {
    },
  • "source": "string",
  • "timestamp": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{ }

Push

The Push service is to be implemented by upstream integration points that wish to receive a notification of important Airside Sync events.

Publish a report

This method is called when a new report (RCR, SNOWTAM, ATIS, or Custom) is published. The report is presented in the body of the request. The server should return a 2xx code to accept report. Any other response code will be interpreted as a publish failure. The response body is ignored.

N.b.: Airside Sync does not implement this API endpoint. It is part of the Airside Sync API documentation for clarity only. The API endpoint should be implemented by the integration partner, and the URL documented here is for documentation purposes only.

Request Body schema: application/json
required
object (Aerodrome assessments)
object (atlasCustomForm)

A CustomForm is a form that can be filled out by the user. The form is self contained in that every form instance describes both the form schema and the filled out values. This allows forms to evolve over time, while leaving old data intact.

formattedAtis
string (Report in ATIS text format)
formattedCsv
string (Report in CSV format)
formattedPdf
string <byte> (Report in PDF format)
formattedPdfBlobKey
string (Blob key for the PDF report (alternative to formatted_pdf))
formattedText
string (Report in RCR/SNOWTAM text)
object (atlasAerodromeReportMeta)

Responses

Request samples

Content type
application/json
{
  • "aerodrome": {
    },
  • "customForm": {
    },
  • "formattedAtis": "string",
  • "formattedCsv": "string",
  • "formattedPdf": "string",
  • "formattedPdfBlobKey": "string",
  • "formattedText": "string",
  • "meta": {
    }
}

Response samples

Content type
application/json
{ }

Reports

Publish report

Create and publish a new SNOWTAM, RCR, or ATIS (according to the given format) and send it out using specified methods. The created report is returned.

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string
Request Body schema: application/json
required
format
string (atlasPublishReportFormat)
Default: "UNSPECIFIED"
Enum: "UNSPECIFIED" "RCR" "SNOWTAM" "ATIS" "CUSTOM_FORM" "TASK"
methods
Array of strings (atlasPublishReportMethod)
Items Enum: "METHOD_UNSPECIFIED" "AFTN" "FAX" "NAVCANADA" "EMAIL" "SMS"
updateTime
boolean

Responses

Request samples

Content type
application/json
{
  • "format": "UNSPECIFIED",
  • "methods": [
    ],
  • "updateTime": true
}

Response samples

Content type
application/json
{
  • "report": {
    },
  • "results": [
    ]
}

Get report (SNOWTAM, RCR, ATIS or Customised Report)

Get a specific published report for the given aerodrome based on the report ID.

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string
reportId
required
string

Responses

Response samples

Content type
application/json
{
  • "report": {
    }
}

Get latest SNOWTAM

Get the latest published SNOWTAM for the given aerodrome.

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string

Responses

Response samples

Content type
application/json
{
  • "report": {
    }
}

List years

Lists the years in which reports were published for the given aerodrome.

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string

Responses

Response samples

Content type
application/json
{
  • "years": [
    ]
}

List reports (SNOWTAM, RCR, ATIS or Customised Report)

Lists the published reports for the given aerodrome and year.

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string
year
required
integer <int32>

Responses

Response samples

Content type
application/json
{
  • "reports": [
    ]
}

Sensor

List sensor sessions for a given runway

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string
runwayId
required
string
query Parameters
sinceHours
integer <int32>

Number of hours to look back, defaults to 24

Responses

Response samples

Content type
application/json
{
  • "sensorSessions": [
    ]
}

Get a sensor session by ID

This returns the entire sensor session, with all data points from the sensor plus correlating position data from the device GPS.

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string
runwayId
required
string
sessionId
required
string

Responses

Response samples

Content type
application/json
{
  • "measurementLog": {
    }
}

System

List online users

List the users who are currently online for the given aerodrome. Requires aerodrome admin permissions.

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string

Responses

Response samples

Content type
application/json
{
  • "users": [
    ]
}

Get system info

Get current system information (version, etc).

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "features": {
    },
  • "licenseLimits": {
    },
  • "licensee": {
    },
  • "minRecommendedAppVer": "string",
  • "recommendedAppVer": "string",
  • "version": {
    }
}

Task

Create a task

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string
Request Body schema: application/json
required
assignee
string
description
string
owner
string
photoIds
Array of strings
object (atlasMapPoint)
taskId
string
type
string

Responses

Request samples

Content type
application/json
{
  • "assignee": "string",
  • "description": "string",
  • "owner": "string",
  • "photoIds": [
    ],
  • "position": {
    },
  • "taskId": "string",
  • "type": "string"
}

Response samples

Content type
application/json
{ }

List all tasks for a given number of days

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string
sinceDays
required
integer <int32>

Responses

Response samples

Content type
application/json
{
  • "tasks": [
    ]
}

Get a task

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string
taskId
required
string

Responses

Response samples

Content type
application/json
{
  • "task": {
    }
}

Update the assigned user of a task

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string
taskId
required
string
Request Body schema: application/json
required
string

Responses

Request samples

Content type
application/json
"string"

Response samples

Content type
application/json
{ }

Update the task description

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string
taskId
required
string
Request Body schema: application/json
required
string

Responses

Request samples

Content type
application/json
"string"

Response samples

Content type
application/json
{ }

Update or add a note to a task

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string
taskId
required
string
noteId
required
string
Request Body schema: application/json
required
string

Responses

Request samples

Content type
application/json
"string"

Response samples

Content type
application/json
{ }

Update the task status

Authorizations:
bearerAuth
path Parameters
aerodromeId
required
string
taskId
required
string
Request Body schema: application/json
required
string (atlasTaskStatus)
Default: "TASK_STATUS_UNSPECIFIED"
Enum: "TASK_STATUS_UNSPECIFIED" "TASK_STATUS_CREATED" "TASK_STATUS_ASSIGNED" "TASK_STATUS_IN_PROGRESS" "TASK_STATUS_ESCALATED" "TASK_STATUS_AWAIT_INFO" "TASK_STATUS_COMPLETED" "TASK_STATUS_CANCELLED"

Responses

Request samples

Content type
application/json
"TASK_STATUS_UNSPECIFIED"

Response samples

Content type
application/json
{ }

Tile

Get map tile

The tile name is in OpenStreetMap format: x/y/zoom. The tile data is returned in the HTTP body in png format.

Authorizations:
bearerAuth
path Parameters
name
required
string.+

Responses

Response samples

Content type
application/json
{
  • "contentType": "string",
  • "data": "string",
  • "extensions": [
    ]
}