Start documenting the Travel API

This commit is contained in:
Daniel Friesel 2020-06-13 21:36:48 +02:00
parent 551954cdbc
commit 60bb0b6df5

View file

@ -19,7 +19,7 @@ paths:
get: get:
tags: tags:
- Status - Status
summary: Retrieves a single status. summary: Retrieves a user's status
parameters: parameters:
- in: path - in: path
name: token name: token
@ -29,25 +29,39 @@ paths:
description: Status Token description: Status Token
responses: responses:
'200': '200':
description: OK. description: OK
content: content:
application/json: application/json:
schema: schema:
$ref: '#/components/schemas/status' $ref: '#/components/schemas/status'
components: '/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: responses:
UnauthorizedError: '200':
description: >- description: OK
Unauthorized. Will be returned by the server if no user was logged in or content:
wrong credentials were supplied. application/json:
NotFoundError: schema:
description: >- $ref: '#/components/schemas/travelResponse'
Not found The parameters in the request were valid, but the server did components:
not find a corresponding object.
ForbiddenError:
description: >-
Forbidden The logged in user is not permitted to perform this action.
(e.g. edit a status of another user.)
schemas: schemas:
token: token:
type: string type: string
@ -77,6 +91,74 @@ components:
type: number type: number
example: 1556083434 example: 1556083434
description: checkin/checkout epoch 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: departureStatus:
type: object type: object
properties: properties:
@ -169,3 +251,14 @@ components:
type: string type: string
example: "7512500863736016593" example: "7512500863736016593"
description: IRIS-specific train ID 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