Introduction to schema
This page presents the JSON schema used to structure AIS messages within the OrbitSailor platform. The schema defines a standardized format for vessel position reports, including metadata such as timestamps, navigational status, and vessel dimensions. It ensures consistency across satellite and terrestrial data sources, enabling reliable integration and analysis. Each field is documented with its purpose and expected data type, supporting developers and data users in building robust maritime applications.
Full schema
JSON
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"Mmsi": {
"description": "The MMSI of the vessel that emitted this position",
"type": "integer"
},
"SatelliteId": {
"description": "An indentifier specifying which datasource provided the message",
"type": "integer"
},
"TimestampSat": {
"type": "object",
"description": "The timestamp of reception of the AIS message at the satellite / terrestrial station",
"properties": {
"Seconds": {
"description": "seconds since the unix epoch",
"type": "integer"
}
},
"required": ["Seconds"]
},
"MessageType": {
"description": "the AIS message type, does not include 5 or 24 because their fields are folded into this message",
"type": "integer"
},
"Position": {
"description": "reported vessel position at this time",
"type": "object",
"properties": {
"LatitudeDeg": {
"type": "number"
},
"LongitudeDeg": {
"type": "number"
}
},
"required": ["LatitudeDeg", "LongitudeDeg"]
},
"NavigationalStatus": {
"description": "Vessel navigational status. See ITU 1371 table 45 for values",
"type": "integer"
},
"SogKt": {
"description": "Speed over ground equivalent in knots",
"type": "integer"
},
"CogDegrees": {
"description": "Course over ground equivalent in degrees with 90 being eastward",
"type": "number"
},
"TrueHeading": {
"description": "True heading in degrees",
"type": "integer"
},
"SpecialManoeuvreIndicator": {
"description": "Special maneuvre indicator. 0 = default (not provided), 1 = Not engaged in special maneuvre, 2 = engaged in special maneuvre",
"type": "integer"
},
"ShipTypeClass": {
"description": "Consolidated ship type classes. 0 = unknown, 1 = Cargo, 2 = Fishing, 3 = Undefinend, 4 = Other, 5 = Passenger, 6 = Tanker, 7 = Tug",
"type": "integer"
},
"CallSign": {
"description": "Vessel callsign",
"type": "string"
},
"Name": {
"description": "Vessel name",
"type": "string"
},
"DimensionAm": {
"description": "Size of the vessel in the A domain (AIS transmitter to bow)",
"type": "integer"
},
"DimensionBm": {
"description": "Size of the vessel in the B domain (AIS transmitter to stern)",
"type": "integer"
},
"DimensionCm": {
"description": "Size of the vessel in the C domain (AIS transmitter to port side)",
"type": "integer"
},
"DimensionDm": {
"description": "Size of the vessel in the D domain (AIS transmitter to starboard side)",
"type": "integer"
},
"Destination": {
"description": "Vessel voyage destination, provided by captain. Do note that this is often unreliable",
"type": "string"
},
"MaxStaticDraught": {
"description": "Vessel current max static draught",
"type": "number"
},
"ShipType": {
"description": "The ship type reported in AIS",
"type": "integer"
},
"SourceId": {
"description": "An indentifier specifiying the message source",
"type": "integer"
},
"ChannelId": {
"description": "1 for class A, 2 for class B",
"type": "integer"
},
"T5TimestampSat": {
"type": "object",
"description": "The unix timestamp at which the static information contained in this message have been received",
"properties": {
"Seconds": {
"type": "integer"
}
},
"required": ["Seconds"]
},
"ShipTypeClassAis": {
"description": "Consolidated ship type classe derived from the static information, see description of ShipTypeClass field for values",
"type": "integer"
},
"LuxspaceDataReceptionTimestamp": {
"type": "object",
"description": "The timestamp at which Luxspace received the message in our datacenter",
"properties": {
"Seconds": {
"type": "integer"
},
"Nanos": {
"description": "Nanoseconds component of the timestamp",
"type": "integer"
}
},
"required": ["Seconds"]
}
},
"required": [
"Mmsi",
"TimestampSat",
"MessageType",
"Position",
"NavigationalStatus",
"SogKt",
"CogDegrees",
"TrueHeading",
"SpecialManoeuvreIndicator",
"ShipTypeClass",
"LuxspaceDataReceptionTimestamp"
]
}