diff options
Diffstat (limited to 'public/static/api.yml')
-rw-r--r-- | public/static/api.yml | 267 |
1 files changed, 267 insertions, 0 deletions
diff --git a/public/static/api.yml b/public/static/api.yml new file mode 100644 index 0000000..e55c5f7 --- /dev/null +++ b/public/static/api.yml @@ -0,0 +1,267 @@ +# Copyright (C) 2020 Birte Kristina Friesel +# +# SPDX-License-Identifier: CC0-1.0 +openapi: 3.0.3 +info: + title: travelynx + version: 0.1.0 + description: Travelynx API +servers: + - url: 'https://travelynx.de/api/v1' + - url: 'https://travellynx.de/api/v1' + - url: 'https://travelynx.finalrewind.org/api/v1' +tags: + - name: Status + description: 'Query check-in and journey status' + - name: Travel + description: 'Check into and out of trains' + - name: Import + description: 'Import a journey' +paths: + '/status/{token}': + get: + tags: + - Status + summary: Retrieves a user's status + parameters: + - in: path + name: token + schema: + $ref: '#/components/schemas/token' + required: true + description: Status Token + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/status' + '/travel': + post: + tags: + - Travel + summary: Check into or out of a train + requestBody: + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/checkinRequest' + - $ref: '#/components/schemas/checkoutRequest' + - $ref: '#/components/schemas/undoRequest' + examples: + checkin: + value: {"action": "checkin", "token": "FIXME"} + checkout: + value: {"action": "checkout", "token": "FIXME"} + undo: + value: {"action": "undo", "token": "FIXME"} + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/travelResponse' +components: + schemas: + token: + type: string + description: Status Token as configured on Travelynx User Panel + status: + type: object + properties: + deprecated: + type: boolean + example: false + description: if true, this API version is no longer supported and will be removed in the future + checkedIn: + type: boolean + example: true + description: Is the user currently checked into a train? + fromStation: + $ref: '#/components/schemas/departureStatus' + toStation: + $ref: '#/components/schemas/arrivalStatus' + intermediateStops: + type: array + items: + $ref: '#/components/schemas/intermediateStop' + train: + $ref: '#/components/schemas/train' + actionTime: + type: number + example: 1556083434 + description: checkin/checkout epoch + travelRequest: + type: object + discriminator: + propertyName: action + mapping: + checkin: checkinRequest + checkout: checkoutRequest + undo: undoRequest + properties: + token: + type: string + action: + type: string + enum: ['checkin', 'checkout', 'undo'] + required: + - token + - action + checkinRequest: + allOf: + - $ref: '#/components/schemas/travelRequest' + - type: object + properties: + train: + type: object + properties: + type: + type: string + example: "ICE" + no: + type: string + example: "209" + fromStation: + $ref: '#/components/schemas/station' + toStation: + $ref: '#/components/schemas/station' + comment: + type: string + required: ['train', 'fromStation'] + checkoutRequest: + allOf: + - $ref: '#/components/schemas/travelRequest' + - type: object + properties: + force: + type: boolean + description: "If true: perform checkout now. May lead to log entries without arrival time" + default: false + toStation: + $ref: '#/components/schemas/station' + comment: + type: string + required: ['toStation'] + undoRequest: + allOf: + - $ref: '#/components/schemas/travelRequest' + - type: object + travelResponse: + type: object + properties: + deprecated: + type: boolean + example: false + description: if true, this API version is no longer supported and will be removed in the future + success: + type: boolean + example: true + status: + $ref: '#/components/schemas/status' + departureStatus: + type: object + properties: + name: + type: string + example: "Essen Hbf" + ds100: + type: string + example: "EE" + uic: + type: number + example: 8000098 + latitude: + type: number + example: 51.451355 + longitude: + type: number + example: 7.014793 + scheduledTime: + type: number + example: 1556083680 + realtime: + type: number + example: 1556083680 + arrivalStatus: + type: object + description: If journey destination is not yet known, all fields are null + nullable: true + properties: + name: + type: string + example: "Essen Stadtwald" + ds100: + type: string + example: "EESA" + uic: + type: number + example: 8001896 + latitude: + type: number + example: 51.422853 + longitude: + type: number + example: 7.023296 + scheduledTime: + type: number + example: 1556083980 + nullable: true + description: If arrival time is not yet known, this field is null + realtime: + type: number + example: 1556083980 + nullable: true + description: If arrival time is not yet known, this field is null + intermediateStop: + type: object + properties: + name: + type: string + example: "Essen Süd" + scheduledArrival: + type: number + example: 1556083800 + nullable: true + realArrival: + type: number + example: 1556083800 + nullable: true + scheduledDeparture: + type: number + example: 1556083860 + nullable: true + realDeparture: + type: number + example: 1556083860 + nullable: true + train: + type: object + properties: + type: + type: string + example: "S" + line: + type: string + example: "6" + no: + type: string + example: "30634" + id: + type: string + example: "7512500863736016593" + description: IRIS-specific train ID + station: + oneOf: + - type: string + description: Station Name + example: "Essen Hbf" + - type: string + description: DS100 Code + example: "EE" + - type: number + description: EVA number + example: 8000098 |