asyncapi: '2.0.0' info: title: Geofenced vehicle positioning version: '1.0.0' contact: name: Ably url: 'https://www.ably.io/contact' description: "Details for the GPS positions of vehicles across the globe" servers: ably: url: ws://realtime.ably.io description: Endpoint used by Ably's Realtime client libraries protocol: ws security: - apiKey: [] - jwt: [] - httpBearerToken: [] mqtt: url: mqtt://mqtt.ably.io:{port} description: Ably's MQTT endpoint variables: port: description: Secure connection (TLS) is available through port 8883. default: '8883' enum: - '1883' - '8883' security: - mqttApiKey: [] - mqttJwt: [] protocol: mqtt protocolVersion: '3.1.1' rest: url: https://rest.ably.io description: Ably REST API protocol: https defaultContentType: application/json channels: '{lat}}:{lon}': subscribe: summary: Vehicle positions operationId: receiveVehicleUpdate message: payload: type: object properties: id: type: integer description: Vehicle's unique ID, comprised of the operatorID and the vehicleID vehicle: type: object properties: position: type: object properties: latitude: type: number format: float description: Latitude of the vehicle longitude: type: number format: float description: Longitude of the vehicle timestamp: type: integer description: Timestamp of when the position update occured vehicle: type: object properties: id: type: string description: Vehicle ID label: type: string description: Informative label of the vehicle parameters: lat: $ref: '#/components/parameters/lat' lon: $ref: '#/components/parameters/lon' schemas: lat: type: integer description: 'WGS 84 latitude in degrees. **null** if location is unavailable.' example: 24 lon: type: number format: float description: 'WGS 84 longitude in degrees. **null** if location is unavailable.' example: 60