# Copyright (C) 2020 Daniel 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