From d7e51c586d9bca91c814c8ce6a2bc0e094a7cd52 Mon Sep 17 00:00:00 2001 From: Edwin van den Belt Date: Fri, 31 Jan 2020 16:37:55 +0100 Subject: [PATCH] #59: overlays can now be handled in a composit-leg, #63: geojson to communicate the leg (reducing the message length), #83: missing available assets in operator information, #85 extra condititions for payment (upfront-payment and pay-when-finished) and optional bank account, #87: distance or time based scales, #89: fare scales, #86: missing MP/TO id --- TOMP-API-1.1.2.yaml | 2304 +++++++++++++++++++++++ TOMP-API-latest.yaml | 286 ++- documents/proposals/authentication.pptx | Bin 0 -> 215811 bytes styleguide.md | 12 +- 4 files changed, 2523 insertions(+), 79 deletions(-) create mode 100644 TOMP-API-1.1.2.yaml create mode 100644 documents/proposals/authentication.pptx diff --git a/TOMP-API-1.1.2.yaml b/TOMP-API-1.1.2.yaml new file mode 100644 index 0000000..6d8f742 --- /dev/null +++ b/TOMP-API-1.1.2.yaml @@ -0,0 +1,2304 @@ +openapi: 3.0.0 +# Added by API Auto Mocking Plugin +servers: + - description: SwaggerHub API Auto Mocking + url: https://virtserver.swaggerhub.com/efel85/GBFS/1.1 +info: + title: Transport Operator MaaS Provider API + description: An API between MaaS providers and transport operators for booking trips and corresponding assets. +

The documentation (examples, process flows and sequence diagrams) can be found at github. + version: "1.1.2" + contact: + email: edoardo.felici@minienw.nl + license: + name: Apache 2.0 + url: 'http://www.apache.org/licenses/LICENSE-2.0.html' + +tags: + - name: planning + description: gives information about transport asset availability and pricing [free_bike_status and system_pricing_plans in GBFS].

The endpoints in this part can give information about the availability of assets (or type-of-assets) and can provide information to take the next step - the booking part. + + - name: booking + description: a booking is the main object exchanged between MaaS and a TO [from MaaS-API].
See also Booking.md

This section contains functionality to book a leg (part of a trip) for one asset (or asset-type), including the non-happy paths (cancel, expire etc). + + - name: booking [optional] + description: endpoints that can faciliate processes in the booking process, but are not necessary for a minimal viable product. You can think of getting information, updating (parts of) a booking (not the state!), adding and removing subscriptions (webhook), etc. + + - name: trip execution + description: supports the complete trip execution process. It contains f.i. getting an available asset, assigning the asset to the leg, starting, pausing, finishing a leg (all by using the POST /legs/{id}/events) or updating a leg (not the state!). + + - name: trip execution [optional] + description: endpoints that can facilitate processes in the trip execution process, but are not necessary for a minimal viable product. + + - name: general + description: general operations (e.g. notifications) + + - name: operator information + description: gives information about systems, stations, operating hours [from GBFS] + + - name: payment + description: arranges financial settlement for legs + + - name: support + description: support for the user while the leg is being executed + + - name: TO + description: the Transport Operator's endpoints + + - name: MP + description: the MaaS Service Provider's endpoints + + +# security. Allowed methods basic (in header: Authorization: Basic ZGVtbzpwQDU1dzByZA==), +# bearer (in header: Authorization: Bearer ) +# Api-key (in header: X-API-Key: abcdef12345) +# OAuth2 and OpenId are also available +# The exact ways to authenticate will be described in version 1.2 +security: + - BasicAuth: [] + - BearerAuth: [] + - ApiKeyAuth: [] + - OAuth: [] + - OpenId: [] + +paths: + /planning-options/: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + post: + description: Returns available transport options for given coordinate and radius.

Start time can be defined, but is optional. If startTime is not provided, but required by the third party API, a default value of "Date.now()" is used. [from MaaS-API /listing]. + During the routing phase this service can be used to check availability without any state changes.

In the final check, just before presenting the alternatives to the user, a call should be made using `provide-ids`, requesting the TO to provide unique IDs to reference to during communication with the MP. +

see (2.1) in the process flow - planning + tags: + - planning + - TO + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/planning-check' + responses: + '201': + description: Available transport methods matching the given query parameters. If no transport methods are available, an empty array is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/planning-options' + headers: + Location: + description: The URI where the created options can be found, in case of 'provide-ids' = true + schema: + type: string + example: '/planning-options/1234' + Content-Language: + description: ISO 639-1 two letter language code + example: nl + schema: + type: string + required: true + maas-id: + description: the maas-id of the sending party + schema: + type: string + Expires: + description: the result is valid until this timestamp. After this timestamp the planning-option will be discarded, if cannot become a booking-option. + schema: + $ref: '#/components/schemas/timestamp' + required: true + '202': + $ref: '#/components/responses/202Accepted' + '400': + $ref: '#/components/responses/400BadRequest' + '401': + $ref: '#/components/responses/401Unauthorized' + + /bookings/: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + post: + description: Creates a new `Booking` for the TO in **Pending** state. The ID of the posted booking should be the ID provided in the previous step (planning-options). +

The Booking may be modified in the response, e.g. location being adjusted for a more suitable pick-up location. + In addition, the service may contain a **meta** attribute for arbitrary TO metadata that the TO needs later, and **token** attribute depicting how long the current state is valid. +

The optional webhook can be used to post updates from TO to MP. If it isn't used, the subscription possibility in this API can be used or the events can be posted directly. +

see (3.2) in the process flow - booking + tags: + - booking + - TO + requestBody: + description: One of available options, returned by /planning-options, with an ID. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/booking-option' + + responses: + '201': + description: A new booking was succesfully created, status pending + content: + application/json: + schema: + $ref: '#/components/schemas/booking' + headers: + Content-Language: + description: ISO 639-1 two letter language code + example: nl + schema: + type: string + required: true + Expires: + description: The result is valid until this timestamp. The pending booking is expired after this timestamp. This option can be used, but there is also a facility to use the webhook, mentioned in '#/component/schemas/booking'. + schema: + $ref: '#/components/schemas/timestamp' + required: true + '202': + $ref: '#/components/responses/202Accepted' + '400': + $ref: '#/components/responses/400BadRequest' + '401': + $ref: '#/components/responses/401Unauthorized' + '404': + $ref: '#/components/responses/404NotFound' + '409': + $ref: '#/components/responses/409Conflict' + callbacks: # webhooks + # as described in https://swagger.io/docs/specification/callbacks/ + booking-operations: + '{$request.body#/webhook}': + patch: + description: see POST /bookings/{id}/events + responses: + '200': + description: operation ok + get: + description: Optional - Returns bookings that has been created earlier, selected on state. + tags: + - booking [optional] + - TO + parameters: + - name: state + in: query + required: true + schema: + $ref: '#/components/schemas/booking-state' + + responses: + '200': + description: The bookings matching the query + content: + application/json: + schema: + type: array + description: The bookings that matched the query (zero or more) + items: + $ref: '#/components/schemas/booking' + headers: + 'Content-Language': + description: ISO 639-1 two letter language code + example: nl + schema: + type: string + '400': + $ref: '#/components/responses/400BadRequest' + '401': + $ref: '#/components/responses/401Unauthorized' + + /bookings/{id}/events: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + - name: id + in: path + description: Leg identifier + required: true + schema: + type: string + post: + description: This endpoint **must** be used to alter the state of a booking:
- The operation 'CANCEL' Cancels the booking (see <4> in the process flow - booking),
- the operation 'EXPIRE' informs that the booking-option is expired (seel <5> in the process flow - booking) and
- the 'COMMIT' actually makes this booking option a real confirmed booking. (see also (3.2) in process flow - booking). This event should also be used to commit in the 'postponed-commit' scenario.
- 'DENY' tells the MP that the leg is cancelled in the post-commit scenario.

`CANCEL` - Cancels a confirmed booking. Cancelling twice should still return 204. Cancelling a pending booking should be refused with 403.
`EXPIRE` - Typically for sending back a signal from TO to MP to tell the pending state is expired. Expiring twide should return 204. Expiring a booking in a non-pending state will result in 403.
`COMMIT` - Turns the booking in a confirmed state, after all legs are in state pending. Committing twice will result in 204. If the booking is in state CANCELLED or EXPIRED, a commit will result a 403.
`DENY` - Used for the 'postponed-commit' scenario. Whenever a TO cannot give garantees directly to fullfil a booking, it can return a 'COMMIT', but the state of the booking object should be 'POSTPONED-COMMIT'. In the conditions returned in the planning phase is stated until when this phase can be. After this time it will be come expired. Otherwise it can be commmitted when the leg is confirmed or denied (using this event). + tags: + - booking + - MP + - TO + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/booking-operation' + responses: + '200': + description: The modified booking + content: + application/json: + schema: + $ref: '#/components/schemas/booking' + headers: + 'Content-Language': + description: ISO 639-1 two letter language code + example: nl + schema: + type: string + '204': + $ref: '#/components/responses/204NoContent' + '400': + $ref: '#/components/responses/400BadRequest' + '401': + $ref: '#/components/responses/401Unauthorized' + '403': + $ref: '#/components/responses/403Forbidden' + '404': + $ref: '#/components/responses/404NotFound' + + /bookings/{id}: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + - name: id + in: path + description: Booking identifier + required: true + schema: + type: string + get: + description: Returns the booking. See (3.5.2) in the process flow - booking. In the 'meta'-field the digital tickes can be returned (see (3.3) in the process flow - booking) + tags: + - booking + - TO + responses: + '200': + description: The booking was found + content: + application/json: + schema: + $ref: '#/components/schemas/booking' + headers: + 'Content-Language': + description: ISO 639-1 two letter language code + example: nl + schema: + type: string + '401': + $ref: '#/components/responses/401Unauthorized' + '404': + $ref: '#/components/responses/404NotFound' + '410': + $ref: '#/components/responses/410Gone' + put: + description: Optional - This endpoint should be used to adjust the parameters of the booking. Changes not acceptable to the TO should return 400. If a booking is started and can no longer be adjusted the TO should return 403. The state of the booking should **never** be adjusted using this method. Use /bookings/{id}/events for that. See also (7.2) in the flow diagram - booking. + tags: + - booking + - TO + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/booking' + description: changed booking + required: true + + responses: + '200': + description: The booking was modified + content: + application/json: + schema: + $ref: '#/components/schemas/booking' + headers: + 'Content-Language': + description: ISO 639-1 two letter language code + example: nl + schema: + type: string + '400': + $ref: '#/components/responses/400BadRequest' + '401': + $ref: '#/components/responses/401Unauthorized' + '403': + $ref: '#/components/responses/403Forbidden' + '404': + $ref: '#/components/responses/404NotFound' + '409': + $ref: '#/components/responses/409Conflict' + + /bookings/{id}/subscription: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + - name: id + in: path + description: Booking identifier + required: true + schema: + type: string + post: + description: Optional - subscribe to a specific booking (=leg & (type of) asset). This is an optional endpoint. This endpoint facilitates notifications in all the phases. (see (7.1) in the flow chart - execution) + tags: + - booking [optional] + - TO + - MP + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/booking' + responses: + '200': + description: Succeeded, subscription is made. Operations on this will be send to the webhook + '400': + $ref: '#/components/responses/400BadRequest' + '401': + $ref: '#/components/responses/401Unauthorized' + '404': + $ref: '#/components/responses/404NotFound' + callbacks: # webhooks + # as described in https://swagger.io/docs/specification/callbacks/ + booking-operations: + '{$request.body#/webhook}': + patch: + description: see POST /booking/{id}/events + responses: + '200': + description: operation ok + delete: + description: Optional - subscribe to a specific booking (=leg & (type of) asset). This is an optional endpoint + tags: + - booking [optional] + - TO + - MP + responses: + '200': + description: unsubscribe succeeded + '400': + $ref: '#/components/responses/400BadRequest' + '401': + $ref: '#/components/responses/401Unauthorized' + '404': + $ref: '#/components/responses/404NotFound' + default: + description: Unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/error' + + /bookings/{id}/notifications: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + - name: id + in: path + description: Booking identifier + required: true + schema: + type: string + get: + description: retrieves all notifications concerning events related to this booking. + tags: + - general + - TO + responses: + '200': + description: The bookings matching the query + headers: + 'Content-Language': + description: ISO 639-1 two letter language code + example: nl + schema: + type: string + content: + application/json: + schema: + type: array + description: Notifications related to this booking. Later versions of this API will define the types and use more extensively. For now, this is a catch-all for any messages the TO or MP need to send to each other that does not have its own API call. + items: + $ref: '#/components/schemas/notification' + '400': + $ref: '#/components/responses/400BadRequest' + '401': + $ref: '#/components/responses/401Unauthorized' + '404': + $ref: '#/components/responses/404NotFound' + post: + description: notification between MaaS provider and Transport operator in case of user no-show or if specific asset is not available or some other event occurs not covered by other API calls. + tags: + - general + - TO + - MP + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/notification' + responses: + '204': + description: notification received + '400': + $ref: '#/components/responses/400BadRequest' + '401': + $ref: '#/components/responses/401Unauthorized' + '404': + $ref: '#/components/responses/404NotFound' + + /operator/stations: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + get: + tags: + - operator information + summary: describes all available stations + description: All stations contained in this list are considered public (ie, can be shown on a map for public use). If there are private stations (such as Capital Bikeshare's White House station) these should not be exposed here and their status should not be included [from GBFS] + responses: + 200: + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/station-information' + headers: + 'Content-Language': + description: ISO 639-1 two letter language code + example: nl + schema: + type: string + '400': + $ref: '#/components/responses/400BadRequest' + '401': + $ref: '#/components/responses/401Unauthorized' + + /operators/available-assets: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + - name: id + in: path + description: Booking identifier + required: true + schema: + type: string + get: + description: Returns a list of available assets. + tags: + - operator information + - TO + responses: + '200': + description: Available assets. If no suitable assets are found an empty array is to be returned. + headers: + 'Content-Language': + description: ISO 639-1 two letter language code + example: nl + schema: + type: string + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/asset' + '401': + $ref: '#/components/responses/401Unauthorized' + '403': + $ref: '#/components/responses/403Forbidden' + '404': + $ref: '#/components/responses/404NotFound' + + /operator/alerts: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + get: + tags: + - operator information + summary: informs customers about changes to the system outside of normal operations + description: This feed is intended to inform customers about changes to the system that do not fall within the normal system operations. For example, system closures due to weather would be listed here, but a system that only operated for part of the year would have that schedule listed in the system-calendar.json feed. This file is an array of alert objects defined as below. Obsolete alerts should be removed so the client application can safely present to the end user everything present in the feed. The consumer could use the start/end information to determine if this is a past, ongoing or future alert and adjust the presentation accordingly. [from GBFS] + responses: + '200': + description: returns currently active system alerts + content: + application/json: + schema: + $ref: '#/components/schemas/system-alert' + headers: + 'Content-Language': + description: ISO 639-1 two letter language code + example: nl + schema: + type: string + '400': + $ref: '#/components/responses/400BadRequest' + '401': + $ref: '#/components/responses/401Unauthorized' + + /operator/operating-calendar: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + get: + tags: + - operator information + summary: describes the operating calendar for a system. An array of year objects defined as follows (if start/end year are omitted, then assume the start and end months do not change from year to year). [from GFBS] + responses: + 200: + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/system-calendar' + headers: + 'Content-Language': + description: ISO 639-1 two letter language code + example: nl + schema: + type: string + '400': + $ref: '#/components/responses/400BadRequest' + '401': + $ref: '#/components/responses/401Unauthorized' + + /operator/operating-hours: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + get: + tags: + - operator information + summary: describes the system hours of operation + description: Describes the hours of operation of all available systems of the transport operator [from GBFS] + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/system-hours' + headers: + 'Content-Language': + description: ISO 639-1 two letter language code + example: nl + schema: + type: string + '400': + $ref: '#/components/responses/400BadRequest' + '401': + $ref: '#/components/responses/401Unauthorized' + + /operator/information: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + get: + tags: + - operator information + summary: describes the system + description: Describes the system including System operator, System location, year implemented, URLs, contact info, time zone. [from GBFS] + responses: + '200': + description: successful operation + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/system-information' + example: + system-id: XXTO0001 + language: eng + name: FreeBike + timezone: IST + type-of-system: free-floating + headers: + 'Content-Language': + description: ISO 639-1 two letter language code + example: nl + schema: + type: string + '400': + $ref: '#/components/responses/400BadRequest' + '401': + $ref: '#/components/responses/401Unauthorized' + + /operator/pricing-plans: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + get: + tags: + - operator information + summary: gives pricing information + description: Describes pricing of systems or assets [from GBFS] + + responses: + '200': + description: returns standard pricing plans for an operator + content: + application/json: + schema: + $ref: '#/components/schemas/system-pricing-plan' + headers: + 'Content-Language': + description: ISO 639-1 two letter language code + example: nl + schema: + type: string + '400': + $ref: '#/components/responses/400BadRequest' + '401': + $ref: '#/components/responses/401Unauthorized' + + /operator/regions: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + get: + tags: + - operator information + summary: describes regions for a system that is broken up by geographic or political region. It is defined as a separate feed to allow for additional region metadata (such as shape definitions). [from GBFS] + responses: + 200: + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/system-region' + '400': + $ref: '#/components/responses/400BadRequest' + '401': + $ref: '#/components/responses/401Unauthorized' + + /payment/journal-entry: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + get: + tags: + - payment + - MP + - TO + description: Returns all the journal entries that should be payed per leg + parameters: + - name: from + in: path + description: start of the selection + required: true + schema: + $ref: '#/components/schemas/timestamp' + - name: to + in: path + description: end of the selection + required: true + schema: + $ref: '#/components/schemas/timestamp' + - name: state + in: path + required: true + schema: + $ref: '#/components/schemas/journal-state' + - name: category + in: path + description: type of booking line (e.g. fare, addition costs, fines, ...) + required: true + schema: + type: string + enum: [ALL, DAMAGE, LOSS, STOLEN, EXTRA_USAGE, REFUND, FINE, OTHER_ASSET_USED, CREDIT, VOUCHER, DEPOSIT, OTHER] + + responses: + '200': + description: journal entries + headers: + 'Content-Language': + description: ISO 639-1 two letter language code + example: nl + schema: + type: string + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/journal-entry' + '400': + $ref: '#/components/responses/400BadRequest' + '401': + $ref: '#/components/responses/401Unauthorized' + + /payment/{id}/claim-extra-costs: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + patch: + tags: + - payment + - MP + description: extra costs that the TO has to charge to the MP or vice versa + parameters: + - name: id + in: path + description: Booking identifier + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/extra-costs' + + responses: + '200': + description: journal entry received, will be processed (state = INVOICED) + headers: + 'Content-Language': + description: ISO 639-1 two letter language code + example: nl + schema: + type: string + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/journal-entry' + '400': + $ref: '#/components/responses/400BadRequest' + '401': + $ref: '#/components/responses/401Unauthorized' + + /support/{id}/request/{support-type}: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + put: + description: identifies a request for support from user via MP + tags: + - support + parameters: + - name: id + in: path + description: Booking identifier + required: true + schema: + type: string + - name: support-type + in: path + description: type of support needed + required: true + schema: + enum: [ BROKEN_DOWN, NOT_AT_LOCATION, NOT_CLEAN, NOT_AVAILABLE, UNABLE_TO_OPEN, UNABLE_TO_CLOSE, OTHER ] + responses: + '200': + description: support request acknowledged + headers: + 'Content-Language': + description: ISO 639-1 two letter language code + example: nl + schema: + type: string + '400': + $ref: '#/components/responses/400BadRequest' + '401': + $ref: '#/components/responses/401Unauthorized' + '404': + $ref: '#/components/responses/404NotFound' + + /support/{id}/status: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + get: + description: Identifies the current status of the support request + tags: + - support + parameters: + - name: id + in: path + description: Booking identifier + required: true + schema: + type: string + responses: + '200': + description: support status delivered + content: + application/json: + schema: + $ref: '#/components/schemas/support-status' + headers: + 'Content-Language': + description: ISO 639-1 two letter language code + example: nl + schema: + type: string + '400': + $ref: '#/components/responses/400BadRequest' + '401': + $ref: '#/components/responses/401Unauthorized' + '404': + $ref: '#/components/responses/404NotFound' + + /legs/{id}/available-assets: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + - name: id + in: path + description: Booking identifier + required: true + schema: + type: string + get: + description: Returns a list of available assets for the given booking. These assets can be used to POST to /legs/{id}/asset if no specific asset is assigned by the TO. If picking an asset is not allowed for this booking, or one already has been, 403 should be returned. If the booking is unknown, 404 should be returned. See (4.7) in the process flow. - trip execution + tags: + - trip execution + - TO + responses: + '200': + description: Available assets for the booking. If no suitable assets are found an empty array is to be returned. + headers: + 'Content-Language': + description: ISO 639-1 two letter language code + example: nl + schema: + type: string + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/asset' + '401': + $ref: '#/components/responses/401Unauthorized' + '403': + $ref: '#/components/responses/403Forbidden' + '404': + $ref: '#/components/responses/404NotFound' + + /legs/{id}: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + - name: id + in: path + description: Leg identifier + required: true + schema: + type: string + get: + description: Retrieves the latest summary of the leg, being the execution of a portion of a journey travelled using one asset (vehicle). Every leg belongs to one booking, every booking has at most one current leg. Where the booking describes the agreement between user/MP and TO, the leg describes the journey as it occured. See (4.3) in the flow chart - trip execution + tags: + - trip execution + - TO + - MP + responses: + '200': + description: operation successful + content: + application/json: + schema: + $ref: '#/components/schemas/leg' + '401': + $ref: '#/components/responses/401Unauthorized' + '404': + $ref: '#/components/responses/404NotFound' + put: + description: Updates the leg with new information. Only used for updates about execution to the MP. To request changes as the MP, the booking should be updated and the TO can accept the change and update the leg in turn. + tags: + - trip execution + - MP + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/leg' + description: changed leg (e.g. with different duration or destination) + required: true + responses: + '204': + $ref: '#/components/responses/204NoContent' + '400': + $ref: '#/components/responses/400BadRequest' + '401': + $ref: '#/components/responses/401Unauthorized' + '404': + $ref: '#/components/responses/404NotFound' + + /legs/{id}/asset: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + - name: id + in: path + description: Leg identifier + required: true + schema: + type: string + get: + description: Optional - The specific asset used for this leg. If no asset is assigned, this will result in an asset object with only the asset type completed. + tags: + - trip execution [optional] + - TO + responses: + '200': + description: operation successful + content: + application/json: + schema: + $ref: '#/components/schemas/asset' + '401': + $ref: '#/components/responses/401Unauthorized' + '404': + $ref: '#/components/responses/404NotFound' + + /legs/{id}/events: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + - name: id + in: path + description: Leg identifier + required: true + schema: + type: string + post: + description: This endpoint must be used to alter the state of a leg.
+ Operations:
`PREPARE` the TO can send a message telling the MP that he is preparing the booked leg [To be implemented by the MP] (see (7.2) in the process flow - trip execution),
+ `ASSIGN_ASSET` can assign an asset to a leg. Can be to assign an asset in case there is still an asset type assigned [Optionally implementable by the MP]. See (4.7) in the process flow - trip execution
+ `RESERVE` will claim an asset ahead in time [Optionally implementable by the TO],
+ `SET_IN_USE` will activate the leg or resume the leg [TO and MP] (see (4.6) in process flow),
+ `PAUSE` will pause the leg [TO and MP] (see (4.6) in process flow),
+ `START_FINISHING` will start the end-of-leg [Optionally implementable by TO and MP],
+ `FINISH` will end this leg (see (4.6) in process flow) [TO and MP] + tags: + - trip execution + - MP + - TO + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/leg-event" + responses: + '200': + description: The bookings matching the query + content: + application/json: + schema: + type: array + description: The bookings that matched the query (zero or more) + items: + $ref: '#/components/schemas/leg' + headers: + 'Content-Language': + description: ISO 639-1 two letter language code + example: nl + schema: + type: string + '204': + $ref: '#/components/responses/204NoContent' + '400': + $ref: '#/components/responses/400BadRequest' + '401': + $ref: '#/components/responses/401Unauthorized' + '404': + $ref: '#/components/responses/404NotFound' + + /legs/{id}/progress: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + - name: id + in: path + description: Leg identifier + required: true + schema: + type: string + get: + description: Monitors the current location of the asset and duration & distance of the leg (see (4.7) in process flow) + tags: + - trip execution + - TO + parameters: + - name: location-only + in: query + description: Specifies if only the location should be returned + schema: + type: boolean + default: false + responses: + '200': + description: operation successful + content: + application/json: + schema: + $ref: '#/components/schemas/leg-progress' + '401': + $ref: '#/components/responses/401Unauthorized' + '404': + $ref: '#/components/responses/404NotFound' + post: + description: Monitors the current location of the asset and duration & distance of the leg + tags: + - trip execution + - MP + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/leg-progress' + responses: + '204': + $ref: '#/components/responses/204NoContent' + '400': + $ref: '#/components/responses/400BadRequest' + '401': + $ref: '#/components/responses/401Unauthorized' + '404': + $ref: '#/components/responses/404NotFound' + +components: + schemas: + asset: + required: + - asset-id + properties: + asset-id: + type: string + description: unique identifier of an asset + place: + $ref: '#/components/schemas/place' + is-reserved: + type: boolean + description: true indicates the bike is currently reserved for someone else + is-reserved-from: + $ref: '#/components/schemas/timestamp' + description: optional addition to determine if an asset is reserved in the future + is-reserved-to: + $ref: '#/components/schemas/timestamp' + description: optional addition to determine when asset is available in the future + is-disabled: + type: boolean + description: true indicates the asset is currently disabled (broken) + image: + description: specific image, overruling asset-type image + type: string + format: URL + example: 'https://files.fietsersbond.nl/app/uploads/2014/10/30151126/ST2_Men_Side_CityKit-Stromer.jpg' + rental-url: + type: string + description: deep-linking option from GBFS+ + format: URL + example: https://www.rentmyfreebike.com/rental + + planning-options: + type: object + description: Available option matching the query. Optionally including asset information for claiming specific assets. The pricing is also included. + required: + - id + - leg + - type-of-asset + - pricing + properties: + conditions: + type: array + items: + $ref: '#/components/schemas/condition' + results: + type: array + items: + type: object + oneOf: + - $ref: '#/components/schemas/simple-leg' + - $ref: '#/components/schemas/composit-leg' + + simple-leg: + type: object + properties: + id: + description: unique ID (TO's perspective) for this option. This ID is used during the complete process booking of a specific asset or an asset of a specific type. If the availability-request is not fired within f.i. 30 minutes, it can savely be removed. + type: string + leg: + $ref: '#/components/schemas/options-leg' + type-of-asset: + $ref: '#/components/schemas/type-of-asset' + pricing: + $ref: '#/components/schemas/fare' + asset: + $ref: '#/components/schemas/asset' + conditions: + description: references to the 'conditions' array (start of this object). + type: array + items: + type: string + + composit-leg: + description: this leg type should be used when returning multiple legs to fullfil a single request from A to B. For instance handling overlegs or when acting as broker for multiple sub contractors. + type: object + properties: + pricing: + $ref: '#/components/schemas/fare' + legs: + type: array + items: + $ref: '#/components/schemas/operator-leg' + + operator-leg: + type: object + allOf: + - $ref: '#/components/schemas/simple-leg' + properties: + operator-name: + type: string + operator-maas-id: + type: string + description: the maas-id from the operator + operator-description: + type: string + description: short description of the operator + operator-contact: + type: string + description: contact information + + condition: + type: object + oneOf: + - $ref: '#/components/schemas/postponed-commit-condition' + - $ref: '#/components/schemas/return-area-condition' + - $ref: '#/components/schemas/deposit-condition' + - $ref: '#/components/schemas/upfront-payment-condition' + - $ref: '#/components/schemas/pay-when-finished-condition' + discriminator: + propertyName: conditionType + properties: + name: + type: string + + postponed-commit-condition: + type: object + required: + - conditionType + properties: + conditionType: + type: string + example: 'POSTPONED-COMMIT' + ultimate-response-time: + $ref: '#/components/schemas/timestamp' + + deposit-condition: + type: object + description: in case the TO demands a deposit before usage. Requesting and refunding should be done using the /payment/claim-extra-costs endpoint. + required: + - conditionType + properties: + conditionType: + type: string + example: 'DEPOSIT' + allOf: + - $ref: '#/components/schemas/amount-of-money' + + upfront-payment-condition: + type: object + description: in case the TO demands a upfront payment before usage. The payment should be made in the booking phase. + required: + - conditionType + properties: + conditionType: + type: string + example: 'UPFRONT-PAYMENT' + + pay-when-finished-condition: + type: object + description: in case the TO demands a direct payment after usage. + required: + - conditionType + properties: + conditionType: + type: string + example: 'PAY-WHEN-FINISHED' + + return-area-condition: + type: object + description: a return area. In the condition list there can be multiple return area's. In case the return area is a building, it's allowed to put a single point in the geometry. + required: + - conditionType + properties: + conditionType: + type: string + example: 'RETURN-AREA' + station-id: + description: optional station id (see static information) + type: string + geometry: + $ref: '#/components/schemas/polygon' + opening-times: + description: the opening times of the facility + type: array + items: + $ref: '#/components/schemas/period' + + polygon: + type: object + additionalProperties: true + properties: + points: + type: array + items: + $ref: '#/components/schemas/coordinate' + minLength: 3 + + booking-option: + type: object + description: A new booking, created by MaaS POST request in 'PENDING' state. The ID is generated by the TO in the 'availability-check'. + required: + - id + - customer + properties: + id: + description: unique ID (TO's perspective) for identifying this specific available (type of) asset + type: string + customer: + $ref: '#/components/schemas/customer' + + leg-event: + type: object + description: event for the leg + required: + - time + - event + properties: + time: + $ref: '#/components/schemas/timestamp' + event: + type: string + enum: [PREPARE, ASSIGN_ASSET, SET_IN_USE, PAUSE, START_FINISHING, FINISH, ISSUE] + comment: + type: string + description: free text + asset: + $ref: '#/components/schemas/asset' + + leg-state: + type: string + description: status of a leg + enum: [NOT_STARTED, PREPARING, IN_USE, PAUSED, FINISHING, FINISHED, ISSUE_REPORTED] + + planning-check: + type: object + description: the request for available assets. User's location in comma separated form e.g. 60.123,27.456 (lat/long, WGS84) + required: + - from + allOf: + - $ref: '#/components/schemas/period' + properties: + from: + $ref: '#/components/schemas/coordinate' + radius: + description: Maximum distance a user wants to travel to reach asset in metres, e.g. 500 metres + type: number + to: + $ref: '#/components/schemas/coordinate' + travellers: + description: the amount of people that have to travel from `from` to `to` [https://github.com/efel85/TOMP-API/issues/56] + type: number + provide-ids: + description: default false (during planning phase). Whenever entering the booking phase to present the options to the user, set it to true to refert to this option. The returned ID can be used througout the complete process. [https://github.com/efel85/TOMP-API/issues/57] + type: boolean + users: + type: array + items: + $ref: '#/components/schemas/user' + + user: + type: object + properties: + age: + type: number + licenses: + type: array + items: + $ref: '#/components/schemas/license' + cards: + type: array + items: + $ref: '#/components/schemas/card' + requirements: + description: Requirements the users has ((dis)abilities, share [TRUE|FALSE], preferences [TBD]). See also 'https://github.com/efel85/TOMP-API/blob/master/documents/Woordenboek%20Reizigerskenmerken%20CROW%20Eindversie%208%20mei%202019.pdf' [https://github.com/efel85/TOMP-API/issues/17 and https://github.com/efel85/TOMP-API/issues/27] + type: array + items: + $ref: '#/components/schemas/key-value' + + license: + type: object + properties: + country: + $ref: '#/components/schemas/country' + asset-type: + $ref: '#/components/schemas/asset-class' + + card: + type: object + properties: + card-type: + type: string + country: + $ref: '#/components/schemas/country' + asset-type: + $ref: '#/components/schemas/asset-class' + + booking: + type: object + description: The booking information describing the state and details of the transaction + required: + - id + - state + - leg + - customer + - token + allOf: + - $ref: '#/components/schemas/booking-option' + properties: + id: + description: The identifier MaaS will be using to referring to the booking + type: string + state: + $ref: '#/components/schemas/booking-state' + conditions: + type: array + items: + $ref: '#/components/schemas/condition' + token: + $ref: '#/components/schemas/token' + webhook: + type: string + description: in case this field is used, the webhook ``must`` be used to communicate, even though the URL of cancelling or expiring the booking is derivable. + format: uri + example: https://myserver.com/booking/{id}/events + meta: + description: Arbitrary metadata that a TO can add + type: array + items: + $ref: '#/components/schemas/key-value' + + booking-state: + description: The life-cycle state of the booking (from NEW to FINISHED) + type: string + enum: [NEW, PENDING, RELEASED, EXPIRED, CONDITIONAL_CONFIRMED, CONFIRMED, CANCELLED, STARTED, FINISHED] + example: CONFIRMED + + coordinate: + type: object + description: a lon, lat (WGS84, EPSG:4326) + properties: + lng: + type: number + example: 6.169639 + lat: + type: number + example: 52.253279 + + customer: + type: object + required: + - id + properties: + id: + description: The identifier MaaS uses to identify the customer + type: string + example: "A0-123456" + first-name: + description: First name of the customer + type: string + example: John + last-name: + description: Last name of the customer + type: string + example: Doe + phone: + description: Phone number that the customer may be reached from + type: string + + day: + type: string + enum: [MON, TUE, WED, THU, FRI, SAT, SUN] + distance: + description: The estimated distance travelled in the leg (in meters) + type: integer + minimum: 0 + example: 7250 + duration: + description: A duration of some time (relative to time) in milliseconds + type: integer + maximum: 2147483647 + minimum: 0 + example: 11112 + error: + type: object + description: An error that the service may send, e.g. in case of invalid input, + missing authorization or internal service error. + required: + - message + - code + properties: + message: + type: string + description: A human readable error message (preferrably in English) + example: invalid input + code: + type: string + description: A TO internal error code, used for reference + example: 12345 + + journal-entry: + type: object + properties: + journal-id: + description: id of the entry, leg id can be reused + type: string + journal-sequence-id: + description: sequence id of the entry, in combination with journal-id unique from TO perspective. + type: string + bank-account: + $ref: '#/components/schemas/bank-account' + invoice-date: + $ref: '#/components/schemas/timestamp' + external-url: + description: an optional external invoice. + type: string + format: url + state: + $ref: '#/components/schemas/journal-state' + expiration-date: + $ref: '#/components/schemas/timestamp' + comment: + type: string + amount: + $ref: '#/components/schemas/amount-of-money' + distance: + description: the travelled distance. Only if applicable. + type: number + distance-type: + type: string + enum: [KM, MILE] + used-time: + description: the time in seconds that the assed is used. Only if applicable. + type: number + details: + type: object + description: the specification of the amount; how is it composed. + oneOf: + - $ref: '#/components/schemas/fare' + - $ref: '#/components/schemas/extra-costs' + + journal-state: + type: string + enum: [TO_INVOICE, INVOICED, PARTLY_PAYED, PAYED, TO_DISCUSS, REJECTED] + + journal-category: + type: string + enum: [ALL, DAMAGE, LOSS, STOLEN, EXTRA_USAGE, REFUND, FINE, OTHER_ASSET_USED, CREDIT, VOUCHER, DEPOSIT, OTHER] + + bank-account: + type: object + properties: + name: + description: account name + type: string + number: + description: account number + type: string + country: + $ref: '#/components/schemas/country' + bank-identification: + description: bank identification, like BIC code + type: string + + extra-costs: + type: object + description: Costs that the TO is charging the MP; credits are negative + required: + - reason + - description + - amount + allOf: + - $ref: '#/components/schemas/amount-of-money' + properties: + category: + $ref: '#/components/schemas/journal-category' + description: + description: free text to describe the extra costs. Mandatory in case of 'OTHER' + type: string + account: + $ref: '#/components/schemas/bank-account' + meta: + description: Arbitrary metadata that a TO can add, like voucher codes + type: array + items: + $ref: '#/components/schemas/key-value' + + fare: + description: the total fare is the sum of all parts, except for the 'MAX' fare-part. This one descripes the maximum price for the complete leg. + properties: + parts: + type: array + items: + $ref: '#/components/schemas/fare-part' + + fare-part: + type: object + description: this describes a part of the fare (or discount). It contains a for instance the startup costs (fixed) or the flex part (e.g. 1.25 EUR per 2.0 MILES). The amount is tax included. In case of discounts, the values are negative. With 'MAX' you can specify e.g. a maximum of 15 euro per day. Percentage is mainly added for discounts. The `scale` properties create the ability to communicate scales (e.g. the first 4 kilometers you've to pay EUR 0.35 per kilometer, the kilometers 4 until 8 EUR 0.50 and above it EUR 0.80 per kilometer). + example: { "amount": 9.96, "currency-code": "EUR", "tax-rate": 21.0, "type": "FLEX", "unit-type": "HOUR", "units": 1 } + allOf: + - $ref: '#/components/schemas/amount-of-money' + properties: + type: + description: type of fare part + type: string + enum: [FIXED, FLEX, MAX] + unit-type: + type: string + description: in case of 'FLEX' mandatory. E.g. 0.5 EUR per HOUR + enum: [KM, SECOND, MINUTE, HOUR, MILE, PERCENTAGE] + units: + type: number + description: the number of km, seconds etc in the `per` part. In the first example of the description this should be 2.0 + scale-from: + type: number + scale-to: + type: number + scale-type: + type: string + enum: [KM, MILE, HOUR, MINUTE] + + amount-of-money: + type: object + properties: + amount: + description: This should be in the base unit as defined by the ISO 4217 currency code with the appropriate number of decimal places and omitting the currency symbol. e.g. if the price is in US Dollars the price would be 9.95 + type: number + example: 9.95 + currency-code: + description: ISO 4217 currency code + type: string + minLength: 3 + maxLength: 3 + tax-rate: + type: number + description: tax rate (percentage of amount) + example: 21.0 + + key-value: + type: object + properties: + key: + type: string + example: + "key": "value" + + leg: + type: object + description: A OpenlegPlanner compatible definition of a leg (see OpenlegPlanner docs for reference) + additionalProperties: true + required: + - from + - to + - mode + - start-time + - end-time + properties: + from: + description: The coordinates the TO should use to resolve leg start location + $ref: '#/components/schemas/place' + to: + description: The coordinates the TO should use to resolve leg finish location + $ref: '#/components/schemas/place' + start-time: + $ref: '#/components/schemas/timestamp' + end-time: + $ref: '#/components/schemas/timestamp' + mode: + $ref: '#/components/schemas/type-of-asset' + state: + $ref: '#/components/schemas/leg-state' + departure-delay: + $ref: '#/components/schemas/duration' + arrival-delay: + $ref: '#/components/schemas/duration' + distance: + $ref: '#/components/schemas/distance' + fare: + $ref: '#/components/schemas/fare' + route: + type: string + route-short-name: + type: string + route-long-name: + type: string + agency-id: + type: string + leg-geometry: + type: string + description: format as in geojson linestring eg. [[6.169639, 52.253279], .. ] WGS84, [lng,lat] + + leg-progress: + type: object + description: provides current asset location & duration and distance of the current leg + required: + - coordinates + properties: + coordinate: + $ref: '#/components/schemas/coordinate' + duration: + $ref: '#/components/schemas/duration' + distance: + $ref: '#/components/schemas/distance' + + notification: + type: object + description: notifies the MaaS operator of issues with a booking [addendum] + properties: + type: + type: string + enum: [VEHICLE_NOT_AVAILABLE, USER_NO_SHOW, OTHER] + example: VEHICLE_NOT_AVAILABLE + comment: + type: string + description: free text + + options-leg: + type: object + allOf: + - $ref: '#/components/schemas/period' + properties: + from: + $ref: '#/components/schemas/coordinate' + to: + $ref: '#/components/schemas/coordinate' + + period: + type: object + properties: + start-time: + $ref: '#/components/schemas/timestamp' + end-time: + $ref: '#/components/schemas/timestamp' + + place: + type: object + description: a origin or destination of a leg, non 3D. lon/lat in WGS84. + required: + - lon + - lat + properties: + name: + description: Human readable name of the place + type: string + stop-reference: + type: array + items: + $ref: '#/components/schemas/stop-reference' + station-d: + description: reference to /operator/stations + type: string + coordinate: + $ref: '#/components/schemas/coordinate' + extra-info: + type: array + items: + $ref: '#/components/schemas/key-value' + + station-information: + properties: + stations: + type: array + items: + type: object + required: + - station-id + - name + - coordinate + properties: + station-id: + type: string + description: unique identifier of a station + example: XX:Y:12345678 + name: + type: string + description: public name of the station + example: Island Central + coordinate: + $ref: '#/components/schemas/coordinate' + address: + type: string + description: Valid street number and name where station is located. This field is intended to be an actual address, not a free form text description (see "cross-street") + example: Main Road 1 + cross-street: + type: string + description: Cross street of where the station is located. This field is intended to be a descriptive field for human consumption. In cities, this would be a cross street, but could also be a description of a location in a park, etc. + example: on the corner with Secondary Road + region-id: + type: string + description: ID of the region where the station is located (see "system-regions") + postal-code: + type: string + description: Postal code where station is located + example: X123456 + rental-methods: + type: array + description: Array of enumerables containing the payment methods accepted at this station. + items: + type: string + enum: [KEY, CREDITCARD, PAYPASS, APPLEPAY, ANDROIDPAY, TRANSITCARD, ACCOUNTNUMBER, PHONE] + example: [CREDITCARD,PAYPASS,APPLEPAY] + rental-url: + type: string + format: URL + example: https://www.rentmyfreebike.com + + stop-reference: + type: object + description: reference to a stop (can be nation specific). This can help to specific pinpoint a (bus) stop. Extra information about the stop is not supplied; you should find it elsewhere. + required: + - type + - id + - country + properties: + type: + type: string + description: type of external reference (GTFS, CHB). This should be extended + enum: [GTFS_STOP_ID, GTFS_STOP_CODE, GTFS_AREA_ID, CHB_STOP_PLACE_CODE, CHB_QUAY_CODE, NS_CODE] + id: + type: string + description: this field should contain the complete ID. E.g. NL:S:13121110 or BE:S:79640040 + country: + $ref: '#/components/schemas/country' + + support-status: + description: the current status of support + type: object + properties: + status: + type: string + enum: [PROCESSING, UPDATE_REQUESTED, RESOLVED, CANCELLED] + example: PROCESSING + time-to-resolution: + type: integer + description: time in minutes to expected resolution of support request + example: 9 + + system-alert: + type: object + properties: + alerts: + type: array + items: + type: object + required: + - alert-id + - alert-type + - start + - summary + properties: + alert-id: + type: string + description: a unique identifier for this alert + alert-type: + type: string + enum: [SYSTEMCLOSURE, STATIONCLOSURE, STATIONMOVE, OTHER] + start-and-end-times: + description: Array of hashes with the keys "start" and "end" indicating when the alert is in effect (e.g. when the system or station is actually closed, or when it is scheduled to be moved). If this array is omitted then the alert should be displayed as long as it is in the feed. + type: array + items: + $ref: '#/components/schemas/period' + station-ids: + type: array + items: + type: string + description: Array of strings - If this is an alert that affects one or more stations, include their ids, otherwise omit this field. If both stationIDs and regionIDs are omitted, assume this alert affects the entire system + example: stationID0001 + region-id: + type: array + items: + type: string + description: Array of strings - If this system has regions, and if this alert only affects certain regions, include their ids, otherwise, omit this field. If both stationIDs and regionIDs are omitted, assume this alert affects the entire system + example: regionID0001 + url: + type: string + format: hostname + description: URL where the customer can learn more information about this alert, if there is one + example: http://www.rentmyfreebike.com/alerts + summary: + type: string + description: A short summary of this alert to be displayed to the customer + example: station closed + description: + type: string + description: Detailed text description of the alert + example: station closed indefinitely due to vandalism + last-updated: + $ref: '#/components/schemas/timestamp' + + system-calendar: + type: object + properties: + periods: + type: array + items: + type: object + required: + - start-month + - start-day + - end-month + - end-day + properties: + start-month: + type: integer + minimum: 1 + maximum: 12 + description: Starting month for the system operations (1-12) + example: 1 + start-day: + type: integer + minimum: 1 + maximum: 31 + description: Starting day for the system operations (1-31) + example: 1 + start-year: + type: integer + description: Starting year for the system operations + example: 2019 + end-month: + type: integer + minimum: 1 + maximum: 12 + description: Ending month for the system operations (1-12) + example: 12 + end-day: + type: integer + minimum: 1 + maximum: 31 + description: Ending day for the system operations (1-31) + example: 31 + end-year: + type: integer + description: Ending year for the system operations + example: 2099 + + system-hours: + properties: + hours: + type: array + items: + type: object + required: + - user-type + - days + - start-time + - end-time + properties: + user-type: + type: string + description: This indicates that this set of rental hours applies to either members or non-members only. + enum: [MEMBER, NON_MEMBERS] + example: MEMBER + start-time: + $ref: '#/components/schemas/time' + end-time: + $ref: '#/components/schemas/time' + days: + type: array + description: An array of abbreviations (first 3 letters) of English names of the days of the week that this hour object applies to (i.e. ["mon", "tue"]). Each day can only appear once within all of the hours objects in this feed. + items: + $ref: '#/components/schemas/day' + + system-information: + properties: + information: + type: array + items: + type: object + description: operation successful + required: + - system-id + - language + - name + - timezone + - type-of-system + properties: + system-id: + description: identifier for this transport system. This should be globally unique (even between different systems) + type: string + example: XXTO0001 + language: + description: An IETF language tag indicating the language that will be used throughout the rest of the files. This is a string that defines a single language tag only. + type: string + format: ietf + example: eng + name: + description: Full name of the system to be displayed to customers + type: string + example: FreeBike + short-name: + description: Optional abbreviation for a system + type: string + example: FB + operator: + description: Name of the operator of the system + type: string + example: FreeBike + url: + description: The URL of the transport operator. The value must be a fully qualified URL that includes http:// or https://, and any special characters in the URL must be correctly escaped. + type: string + example: https://www.rentmyfreebike.com + purchase-url: + description: A fully qualified URL where a customer can purchase a membership or learn more about purchasing memberships + type: string + example: https://www.rentmyfreebike.com/purchase + start-date: + description: String in the form YYYY-MM-DD representing the date that the system began operations + type: string + format: date + example: 2019-01-01 + phone-number: + description: A single voice telephone number for the specified system. This field is a string value that presents the telephone number as typical for the system's service area. It can and should contain punctuation marks to group the digits of the number. + type: string + example: 555-12345 + email: + description: A single contact email address for customers to address questions about the system + type: string + format: email + example: rent@freebike.com + timezone: + description: The time zone where the system is located. Time zone names never contain the space character but may contain an underscore. Please refer to the "TZ" value in https://en.wikipedia.org/wiki/List_of_tz_database_time_zones for a list of valid values + type: string + example: IST + license-url: + description: A fully qualified URL of a page that defines the license terms for the GBFS data for this system, as well as any other license terms the system would like to define (including the use of corporate trademarks, etc) + type: string + example: https://www.rentmyfreebike.com/license + type-of-system: + description: Describes the type of system + type: string + enum: [FREE_FLOATING, STATION_BASED, VIRTUAL_STATION_BASED] + example: FREE_FLOATING + conditions: + description: Added to include possibility to communicatie general rental conditions like minimum age, max. reservation time etc. [amended] + type: string + + system-pricing-plan: + properties: + pricing-plan: + type: array + items: + type: object + required: + - plan-id + - name + - currency + - price + - isTaxable + - description + properties: + plan-id: + type: string + description: a unique identifier for this plan in the system + example: freeplan1 + url: + type: string + description: a fully qualified URL where the customer can learn more about this particular scheme + example: https://www.rentmyfreebike.com/freeplan + name: + type: string + description: name of this pricing scheme + example: Free Plan + fare: + $ref: '#/components/schemas/fare' + is-taxable: + type: boolean + description: false indicates that no additional tax will be added (either because tax is not charged, or because it is included) true indicates that tax will be added to the base price + description: + type: string + description: Text field describing the particular pricing plan in human readable terms. This should include the duration, price, conditions, etc. that the publisher would like users to see. This is intended to be a human-readable description and should not be used for automatic calculations + example: Unlimited plan for free bikes, as long as you don't break them! + + system-region: + properties: + regions: + type: array + items: + type: object + required: + - region-id + - name + properties: + region-id: + type: string + description: Unique identifier for this region + example: BikeRegion + name: + type: string + description: Public name for this region + example: BikeTown + + time: + description: A time description in hh:mm, 24-hour notation. + type: object + properties: + time: + type: string + timezone: + type: string + + timestamp: + description: A UTC timestamp (number of milliseconds in a Date object since January + 1, 1970, 00:00:00) + example: 1546336800 + + token: + description: The validity token (such as booking ID, travel ticket etc.) that MaaS clients will display to validate the leg when starting the leg. + properties: + validity-duration: + description: The rules that MaaS will interpret to schedule, -validate or cancel the booking. + type: object + properties: + from: + description: The starting time from which the ticket is valid + $ref: '#/components/schemas/timestamp' + to: + description: The finishing time the ticket is valid for + $ref: '#/components/schemas/timestamp' + meta: + description: Arbitrary metadata the TO may pass along the ticket to the client (e.g. a booking code, base64 encoded binary) + type: array + items: + $ref: '#/components/schemas/key-value' + + asset-class: + type: string + description: the class of asset. It's possible to specify it more in the asset-sub-type in type-of-asset. These classes are taken from the NeTeX standard, but ALL and UNKNOWN are removed. On the other hand OTHER and PARKING are added. + enum: [AIR, BUS, TROLLEYBUS, TRAM, COACH, RAIL, INTERCITYRAIL, URBANRAIL, METRO, WATER, CABLEWAY, FUNICULAR, TAXI, SELFDRIVE, FOOT, BICYCLE, MOTORCYCLE, CAR, SHUTTLE, OTHER, PARKING] + + type-of-asset: + description: what kind of asset is this? Classify it, give the aspects. Most aspects are optional and should be used when applicable. + required: + - type-id + - name + - asset-class + - energy-label + properties: + type-id: + type: string + description: unique identifier of a type, scope TO + name: + type: string + description: name of asset type + asset-class: + $ref: '#/components/schemas/asset-class' + asset-sub-class: + type: string + description: a more precise classification of the asset, like 'cargo bike', 'public bus', 'coach bus', 'office bus', 'water taxi', 'segway'. This is mandatory when using 'OTHER' as class. + fuel: + type: string + enum: [NONE, GASOLINE, DIESEL, ELECTRIC, HYBRID_GASOLINE, HYBRID_DIESEL, HYBRID_GAS, HYDROGEN, GAS, BIO_MASS, KEROSINE, OTHER] + energy-label: + type: string + enum: [A,B,C,D,E] + co2-per-km: + type: number + brand: + type: string + description: brand of the asset + model: + type: string + building-year: + type: number + travel-abroad: + type: boolean + description: true indicates asset is allowed to travel abroad + air-conditioning: + type: boolean + description: true indicates airconditioning required + cabrio: + type: boolean + description: true indicates cabrio required + colour: + type: string + description: colour of the asset + cargo: + type: string + description: describes options to carry cargo + easy-accessibility: + type: string + description: describes if asset is or needs to be easily accessible + enum: [LIFT, ESCALATOR, GROUND LEVEL, SIGHTIMPAIRMENT, HEARINGIMPAIRMENT, WHEELCHAIR] + gears: + type: integer + description: number of gears of the asset + gearbox: + type: string + description: type of gearbox + enum: [MANUAL, AUTOMATIC, SEMIAUTOMATIC] + image: + type: string + format: url + infant-seat: + type: boolean + description: true indicates infant seat required + persons: + type: integer + description: number of persons able to use the asset + pets: + type: boolean + description: true indicates pets are allowed on asset + propulsion: + type: string + description: way in which the asset is powered + enum: [MUSCLE, ELECTRIC, GASOLINE, DIESEL, HYBRID, LPG, HYDROGEN] + smoking: + type: boolean + description: true indicates smoking is allowed on asset + state-of-charge: + type: integer + minimum: 0 + maximum: 100 + description: percentage of charge available + towing-hook: + type: boolean + description: true indicates towing hook required + underground-parking: + type: boolean + description: true indicates underground parking is allowed with asset + winter-tires: + type: boolean + description: true indicates winter tires required + other: + type: string + description: free text to describe asset + meta: + description: this array can contain extra information about the type of asset. For instance values from the 'Woordenboek Reizigerskenmerken'. [https://github.com/efel85/TOMP-API/issues/17]. These values can also be used in the planning-options. + type: array + items: + $ref: '#/components/schemas/key-value' + + country: + type: string + description: country codes according ISO 3166-2 + maxLength: 2 + minLength: 2 + + booking-operation: + type: object + description: operation on the booking-option + required: + - operation + properties: + operation: + type: string + enum: [CANCEL, EXPIRE, DENY, COMMIT] + + parameters: + acceptLanguage: + in: header + name: Accept-Language + required: true + schema: + type: string + description: ISO 639-1 two letter language code + example: nl + api: + in: header + name: Api + required: true + schema: + type: string + description: API description, can be TOMP or maybe other (specific/derived) API definitions + example: TOMP + apiVersion: + in: header + name: Api-Version + required: true + schema: + type: string + description: Version of the API. + example: 1.1 + + securitySchemes: + BasicAuth: + type: http + scheme: basic + BearerAuth: + type: http + scheme: bearer + ApiKeyAuth: + type: apiKey + in: header + name: X-API-Key + OAuth: + type: oauth2 + flows: + authorizationCode: + authorizationUrl: /oauth/authorize + tokenUrl: /oauth/token + scopes: {} + OpenId: + type: openIdConnect + openIdConnectUrl: https://unknownserver/.well-known/openid-configuration + + responses: + 202Accepted: + description: Request was successfully accepted for processing but has not yet completed. + headers: + Location: + schema: + type: string + description: The URI where the created or updated resource will eventually be found. + example: '/bookings/1234' + 204NoContent: + description: Request was successful, no content to return. + 400BadRequest: + description: Bad request (invalid query or body parameters). + content: + application/json: + schema: + $ref: '#/components/schemas/error' + 401Unauthorized: + description: Authorization error (invalid API key) or insufficient access rights given current authorization. + content: + application/json: + schema: + $ref: '#/components/schemas/error' + 403Forbidden: + description: The request will not be fulfilled, because the request is not legal in the current state. Authorization will not help. + content: + application/json: + schema: + $ref: '#/components/schemas/error' + 404NotFound: + description: The requested resources does not exist or the requester is not authorized to see it or know it exists. + 409Conflict: + description: The request will not be fulfilled. The request itself is legal, but the content conflicts with the server and might be stale. The user might try again after looking up the current state of the resource. + 410Gone: + description: The requested resource is no longer available. This is permanent. + \ No newline at end of file diff --git a/TOMP-API-latest.yaml b/TOMP-API-latest.yaml index 8b639a9..6d8f742 100644 --- a/TOMP-API-latest.yaml +++ b/TOMP-API-latest.yaml @@ -6,8 +6,8 @@ servers: info: title: Transport Operator MaaS Provider API description: An API between MaaS providers and transport operators for booking trips and corresponding assets. -

The documentation (examples, process flows and sequence diagrams) can be found at github. - version: "1.1.1" +

The documentation (examples, process flows and sequence diagrams) can be found at github. + version: "1.1.2" contact: email: edoardo.felici@minienw.nl license: @@ -19,7 +19,7 @@ tags: description: gives information about transport asset availability and pricing [free_bike_status and system_pricing_plans in GBFS].

The endpoints in this part can give information about the availability of assets (or type-of-assets) and can provide information to take the next step - the booking part. - name: booking - description: a booking is the main object exchanged between MaaS and a TSP [from MaaS-API].
See also Booking.md

This section contains functionality to book a leg (part of a trip) for one asset (or asset-type), including the non-happy paths (cancel, expire etc). + description: a booking is the main object exchanged between MaaS and a TO [from MaaS-API].
See also Booking.md

This section contains functionality to book a leg (part of a trip) for one asset (or asset-type), including the non-happy paths (cancel, expire etc). - name: booking [optional] description: endpoints that can faciliate processes in the booking process, but are not necessary for a minimal viable product. You can think of getting information, updating (parts of) a booking (not the state!), adding and removing subscriptions (webhook), etc. @@ -45,7 +45,7 @@ tags: - name: TO description: the Transport Operator's endpoints - - name: MSP + - name: MP description: the MaaS Service Provider's endpoints @@ -69,7 +69,7 @@ paths: - $ref: '#/components/parameters/apiVersion' post: description: Returns available transport options for given coordinate and radius.

Start time can be defined, but is optional. If startTime is not provided, but required by the third party API, a default value of "Date.now()" is used. [from MaaS-API /listing]. - During the routing phase this service can be used to check availability without any state changes.

In the final check, just before presenting the alternatives to the user, a call should be made using `provide-ids`, requesting the TO to provide unique IDs to reference to during communication with the MSP. + During the routing phase this service can be used to check availability without any state changes.

In the final check, just before presenting the alternatives to the user, a call should be made using `provide-ids`, requesting the TO to provide unique IDs to reference to during communication with the MP.

see (2.1) in the process flow - planning tags: - planning @@ -98,6 +98,10 @@ paths: schema: type: string required: true + maas-id: + description: the maas-id of the sending party + schema: + type: string Expires: description: the result is valid until this timestamp. After this timestamp the planning-option will be discarded, if cannot become a booking-option. schema: @@ -116,10 +120,10 @@ paths: - $ref: '#/components/parameters/api' - $ref: '#/components/parameters/apiVersion' post: - description: Creates a new `Booking` for the TSP in **Pending** state. The ID of the posted booking should be the ID provided in the previous step (planning-options). + description: Creates a new `Booking` for the TO in **Pending** state. The ID of the posted booking should be the ID provided in the previous step (planning-options).

The Booking may be modified in the response, e.g. location being adjusted for a more suitable pick-up location. In addition, the service may contain a **meta** attribute for arbitrary TO metadata that the TO needs later, and **token** attribute depicting how long the current state is valid. -

The optional webhook can be used to post updates from TO to MSP. If it isn't used, the subscription possibility in this API can be used or the events can be posted directly. +

The optional webhook can be used to post updates from TO to MP. If it isn't used, the subscription possibility in this API can be used or the events can be posted directly.

see (3.2) in the process flow - booking tags: - booking @@ -215,10 +219,10 @@ paths: schema: type: string post: - description: This endpoint **must** be used to alter the state of a booking:
- The operation 'CANCEL' Cancels the booking (see <4> in the process flow - booking),
- the operation 'EXPIRE' informs that the booking-option is expired (seel <5> in the process flow - booking) and
- the 'COMMIT' actually makes this booking option a real confirmed booking. (see also (3.2) in process flow - booking). This event should also be used to commit in the 'postponed-commit' scenario.
- 'DENY' tells the MSP that the leg is cancelled in the post-commit scenario.

`CANCEL` - Cancels a confirmed booking. Cancelling twice should still return 204. Cancelling a pending booking should be refused with 403.
`EXPIRE` - Typically for sending back a signal from TO to MSP to tell the pending state is expired. Expiring twide should return 204. Expiring a booking in a non-pending state will result in 403.
`COMMIT` - Turns the booking in a confirmed state, after all legs are in state pending. Committing twice will result in 204. If the booking is in state CANCELLED or EXPIRED, a commit will result a 403.
`DENY` - Used for the 'postponed-commit' scenario. Whenever a TO cannot give garantees directly to fullfil a booking, it can return a 'COMMIT', but the state of the booking object should be 'POSTPONED-COMMIT'. In the conditions returned in the planning phase is stated until when this phase can be. After this time it will be come expired. Otherwise it can be commmitted when the leg is confirmed or denied (using this event). + description: This endpoint **must** be used to alter the state of a booking:
- The operation 'CANCEL' Cancels the booking (see <4> in the process flow - booking),
- the operation 'EXPIRE' informs that the booking-option is expired (seel <5> in the process flow - booking) and
- the 'COMMIT' actually makes this booking option a real confirmed booking. (see also (3.2) in process flow - booking). This event should also be used to commit in the 'postponed-commit' scenario.
- 'DENY' tells the MP that the leg is cancelled in the post-commit scenario.

`CANCEL` - Cancels a confirmed booking. Cancelling twice should still return 204. Cancelling a pending booking should be refused with 403.
`EXPIRE` - Typically for sending back a signal from TO to MP to tell the pending state is expired. Expiring twide should return 204. Expiring a booking in a non-pending state will result in 403.
`COMMIT` - Turns the booking in a confirmed state, after all legs are in state pending. Committing twice will result in 204. If the booking is in state CANCELLED or EXPIRED, a commit will result a 403.
`DENY` - Used for the 'postponed-commit' scenario. Whenever a TO cannot give garantees directly to fullfil a booking, it can return a 'COMMIT', but the state of the booking object should be 'POSTPONED-COMMIT'. In the conditions returned in the planning phase is stated until when this phase can be. After this time it will be come expired. Otherwise it can be commmitted when the leg is confirmed or denied (using this event). tags: - booking - - MSP + - MP - TO requestBody: content: @@ -337,7 +341,7 @@ paths: tags: - booking [optional] - TO - - MSP + - MP requestBody: content: application/json: @@ -366,7 +370,7 @@ paths: tags: - booking [optional] - TO - - MSP + - MP responses: '200': description: unsubscribe succeeded @@ -412,7 +416,7 @@ paths: application/json: schema: type: array - description: Notifications related to this booking. Later versions of this API will define the types and use more extensively. For now, this is a catch-all for any messages the TO or MSP need to send to each other that does not have its own API call. + description: Notifications related to this booking. Later versions of this API will define the types and use more extensively. For now, this is a catch-all for any messages the TO or MP need to send to each other that does not have its own API call. items: $ref: '#/components/schemas/notification' '400': @@ -426,7 +430,7 @@ paths: tags: - general - TO - - MSP + - MP requestBody: content: application/json: @@ -470,6 +474,44 @@ paths: '401': $ref: '#/components/responses/401Unauthorized' + /operators/available-assets: + parameters: + - $ref: '#/components/parameters/acceptLanguage' + - $ref: '#/components/parameters/api' + - $ref: '#/components/parameters/apiVersion' + - name: id + in: path + description: Booking identifier + required: true + schema: + type: string + get: + description: Returns a list of available assets. + tags: + - operator information + - TO + responses: + '200': + description: Available assets. If no suitable assets are found an empty array is to be returned. + headers: + 'Content-Language': + description: ISO 639-1 two letter language code + example: nl + schema: + type: string + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/asset' + '401': + $ref: '#/components/responses/401Unauthorized' + '403': + $ref: '#/components/responses/403Forbidden' + '404': + $ref: '#/components/responses/404NotFound' + /operator/alerts: parameters: - $ref: '#/components/parameters/acceptLanguage' @@ -647,7 +689,7 @@ paths: get: tags: - payment - - MSP + - MP - TO description: Returns all the journal entries that should be payed per leg parameters: @@ -673,7 +715,8 @@ paths: description: type of booking line (e.g. fare, addition costs, fines, ...) required: true schema: - $ref: '#/components/schemas/journal-category' + type: string + enum: [ALL, DAMAGE, LOSS, STOLEN, EXTRA_USAGE, REFUND, FINE, OTHER_ASSET_USED, CREDIT, VOUCHER, DEPOSIT, OTHER] responses: '200': @@ -694,7 +737,7 @@ paths: $ref: '#/components/responses/400BadRequest' '401': $ref: '#/components/responses/401Unauthorized' - + /payment/{id}/claim-extra-costs: parameters: - $ref: '#/components/parameters/acceptLanguage' @@ -703,8 +746,8 @@ paths: patch: tags: - payment - - MSP - description: extra costs that the TO has to charge to the MSP. The MSP should consider what to do with these costs + - MP + description: extra costs that the TO has to charge to the MP or vice versa parameters: - name: id in: path @@ -720,13 +763,19 @@ paths: responses: '200': - description: successful operation + description: journal entry received, will be processed (state = INVOICED) headers: 'Content-Language': description: ISO 639-1 two letter language code example: nl schema: type: string + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/journal-entry' '400': $ref: '#/components/responses/400BadRequest' '401': @@ -738,7 +787,7 @@ paths: - $ref: '#/components/parameters/api' - $ref: '#/components/parameters/apiVersion' put: - description: identifies a request for support from user via MSP + description: identifies a request for support from user via MP tags: - support parameters: @@ -856,11 +905,11 @@ paths: schema: type: string get: - description: Retrieves the latest summary of the leg, being the execution of a portion of a journey travelled using one asset (vehicle). Every leg belongs to one booking, every booking has at most one current leg. Where the booking describes the agreement between user/MSP and TO, the leg describes the journey as it occured. See (4.3) in the flow chart - trip execution + description: Retrieves the latest summary of the leg, being the execution of a portion of a journey travelled using one asset (vehicle). Every leg belongs to one booking, every booking has at most one current leg. Where the booking describes the agreement between user/MP and TO, the leg describes the journey as it occured. See (4.3) in the flow chart - trip execution tags: - trip execution - TO - - MSP + - MP responses: '200': description: operation successful @@ -873,10 +922,10 @@ paths: '404': $ref: '#/components/responses/404NotFound' put: - description: Updates the leg with new information. Only used for updates about execution to the MSP. To request changes as the MSP, the booking should be updated and the TO can accept the change and update the leg in turn. + description: Updates the leg with new information. Only used for updates about execution to the MP. To request changes as the MP, the booking should be updated and the TO can accept the change and update the leg in turn. tags: - trip execution - - MSP + - MP requestBody: content: application/json: @@ -935,16 +984,16 @@ paths: type: string post: description: This endpoint must be used to alter the state of a leg.
- Operations:
`PREPARE` the TO can send a message telling the MSP that he is preparing the booked leg [To be implemented by the MSP] (see (7.2) in the process flow - trip execution),
- `ASSIGN_ASSET` can assign an asset to a leg. Can be to assign an asset in case there is still an asset type assigned [Optionally implementable by the MSP]. See (4.7) in the process flow - trip execution
+ Operations:
`PREPARE` the TO can send a message telling the MP that he is preparing the booked leg [To be implemented by the MP] (see (7.2) in the process flow - trip execution),
+ `ASSIGN_ASSET` can assign an asset to a leg. Can be to assign an asset in case there is still an asset type assigned [Optionally implementable by the MP]. See (4.7) in the process flow - trip execution
`RESERVE` will claim an asset ahead in time [Optionally implementable by the TO],
- `SET_IN_USE` will activate the leg or resume the leg [TO and MSP] (see (4.6) in process flow),
- `PAUSE` will pause the leg [TO and MSP] (see (4.6) in process flow),
- `START_FINISHING` will start the end-of-leg [Optionally implementable by TO and MSP],
- `FINISH` will end this leg (see (4.6) in process flow) [TO and MSP] + `SET_IN_USE` will activate the leg or resume the leg [TO and MP] (see (4.6) in process flow),
+ `PAUSE` will pause the leg [TO and MP] (see (4.6) in process flow),
+ `START_FINISHING` will start the end-of-leg [Optionally implementable by TO and MP],
+ `FINISH` will end this leg (see (4.6) in process flow) [TO and MP] tags: - trip execution - - MSP + - MP - TO requestBody: content: @@ -1014,7 +1063,7 @@ paths: description: Monitors the current location of the asset and duration & distance of the leg tags: - trip execution - - MSP + - MP requestBody: content: application/json: @@ -1081,23 +1130,57 @@ components: type: array items: type: object - properties: - id: - description: unique ID (TO's perspective) for this option. This ID is used during the complete process booking of a specific asset or an asset of a specific type. If the availability-request is not fired within f.i. 30 minutes, it can savely be removed. - type: string - leg: - $ref: '#/components/schemas/options-leg' - type-of-asset: - $ref: '#/components/schemas/type-of-asset' - pricing: - $ref: '#/components/schemas/fare' - asset: - $ref: '#/components/schemas/asset' - conditions: - description: references to the 'conditions' array (start of this object). - type: array - items: - type: string + oneOf: + - $ref: '#/components/schemas/simple-leg' + - $ref: '#/components/schemas/composit-leg' + + simple-leg: + type: object + properties: + id: + description: unique ID (TO's perspective) for this option. This ID is used during the complete process booking of a specific asset or an asset of a specific type. If the availability-request is not fired within f.i. 30 minutes, it can savely be removed. + type: string + leg: + $ref: '#/components/schemas/options-leg' + type-of-asset: + $ref: '#/components/schemas/type-of-asset' + pricing: + $ref: '#/components/schemas/fare' + asset: + $ref: '#/components/schemas/asset' + conditions: + description: references to the 'conditions' array (start of this object). + type: array + items: + type: string + + composit-leg: + description: this leg type should be used when returning multiple legs to fullfil a single request from A to B. For instance handling overlegs or when acting as broker for multiple sub contractors. + type: object + properties: + pricing: + $ref: '#/components/schemas/fare' + legs: + type: array + items: + $ref: '#/components/schemas/operator-leg' + + operator-leg: + type: object + allOf: + - $ref: '#/components/schemas/simple-leg' + properties: + operator-name: + type: string + operator-maas-id: + type: string + description: the maas-id from the operator + operator-description: + type: string + description: short description of the operator + operator-contact: + type: string + description: contact information condition: type: object @@ -1105,6 +1188,8 @@ components: - $ref: '#/components/schemas/postponed-commit-condition' - $ref: '#/components/schemas/return-area-condition' - $ref: '#/components/schemas/deposit-condition' + - $ref: '#/components/schemas/upfront-payment-condition' + - $ref: '#/components/schemas/pay-when-finished-condition' discriminator: propertyName: conditionType properties: @@ -1124,6 +1209,7 @@ components: deposit-condition: type: object + description: in case the TO demands a deposit before usage. Requesting and refunding should be done using the /payment/claim-extra-costs endpoint. required: - conditionType properties: @@ -1133,8 +1219,29 @@ components: allOf: - $ref: '#/components/schemas/amount-of-money' + upfront-payment-condition: + type: object + description: in case the TO demands a upfront payment before usage. The payment should be made in the booking phase. + required: + - conditionType + properties: + conditionType: + type: string + example: 'UPFRONT-PAYMENT' + + pay-when-finished-condition: + type: object + description: in case the TO demands a direct payment after usage. + required: + - conditionType + properties: + conditionType: + type: string + example: 'PAY-WHEN-FINISHED' + return-area-condition: type: object + description: a return area. In the condition list there can be multiple return area's. In case the return area is a building, it's allowed to put a single point in the geometry. required: - conditionType properties: @@ -1373,6 +1480,8 @@ components: journal-sequence-id: description: sequence id of the entry, in combination with journal-id unique from TO perspective. type: string + bank-account: + $ref: '#/components/schemas/bank-account' invoice-date: $ref: '#/components/schemas/timestamp' external-url: @@ -1385,8 +1494,20 @@ components: $ref: '#/components/schemas/timestamp' comment: type: string + amount: + $ref: '#/components/schemas/amount-of-money' + distance: + description: the travelled distance. Only if applicable. + type: number + distance-type: + type: string + enum: [KM, MILE] + used-time: + description: the time in seconds that the assed is used. Only if applicable. + type: number details: type: object + description: the specification of the amount; how is it composed. oneOf: - $ref: '#/components/schemas/fare' - $ref: '#/components/schemas/extra-costs' @@ -1399,9 +1520,24 @@ components: type: string enum: [ALL, DAMAGE, LOSS, STOLEN, EXTRA_USAGE, REFUND, FINE, OTHER_ASSET_USED, CREDIT, VOUCHER, DEPOSIT, OTHER] + bank-account: + type: object + properties: + name: + description: account name + type: string + number: + description: account number + type: string + country: + $ref: '#/components/schemas/country' + bank-identification: + description: bank identification, like BIC code + type: string + extra-costs: type: object - description: Costs that the TO is charging the MSP; credits are negative + description: Costs that the TO is charging the MP; credits are negative required: - reason - description @@ -1409,13 +1545,13 @@ components: allOf: - $ref: '#/components/schemas/amount-of-money' properties: - reason: - description: the reason the TO is charging + category: + $ref: '#/components/schemas/journal-category' description: description: free text to describe the extra costs. Mandatory in case of 'OTHER' type: string - category: - $ref: '#/components/schemas/journal-category' + account: + $ref: '#/components/schemas/bank-account' meta: description: Arbitrary metadata that a TO can add, like voucher codes type: array @@ -1432,7 +1568,7 @@ components: fare-part: type: object - description: this describes a part of the fare (or discount). It contains a for instance the startup costs (fixed) or the flex part (e.g. 1.25 EUR per 2.0 MILES). The amount is tax included. In case of discounts, the values are negative. With 'MAX' you can specify e.g. a maximum of 15 euro per day. Percentage is mainly added for discounts. + description: this describes a part of the fare (or discount). It contains a for instance the startup costs (fixed) or the flex part (e.g. 1.25 EUR per 2.0 MILES). The amount is tax included. In case of discounts, the values are negative. With 'MAX' you can specify e.g. a maximum of 15 euro per day. Percentage is mainly added for discounts. The `scale` properties create the ability to communicate scales (e.g. the first 4 kilometers you've to pay EUR 0.35 per kilometer, the kilometers 4 until 8 EUR 0.50 and above it EUR 0.80 per kilometer). example: { "amount": 9.96, "currency-code": "EUR", "tax-rate": 21.0, "type": "FLEX", "unit-type": "HOUR", "units": 1 } allOf: - $ref: '#/components/schemas/amount-of-money' @@ -1447,6 +1583,14 @@ components: enum: [KM, SECOND, MINUTE, HOUR, MILE, PERCENTAGE] units: type: number + description: the number of km, seconds etc in the `per` part. In the first example of the description this should be 2.0 + scale-from: + type: number + scale-to: + type: number + scale-type: + type: string + enum: [KM, MILE, HOUR, MINUTE] amount-of-money: type: object @@ -1515,17 +1659,8 @@ components: agency-id: type: string leg-geometry: - $ref: '#/components/schemas/leg-geometry' - - leg-geometry: - type: object - additionalProperties: true - properties: - points: - type: array - items: - $ref: '#/components/schemas/coordinate' - minLength: 1 + type: string + description: format as in geojson linestring eg. [[6.169639, 52.253279], .. ] WGS84, [lng,lat] leg-progress: type: object @@ -1546,8 +1681,8 @@ components: properties: type: type: string - enum: [VEHICLE-NOT-AVAILABLE, USER-NO-SHOW, OTHER] - example: VEHICLE-NOT-AVAILABLE + enum: [VEHICLE_NOT_AVAILABLE, USER_NO_SHOW, OTHER] + example: VEHICLE_NOT_AVAILABLE comment: type: string description: free text @@ -1584,6 +1719,9 @@ components: type: array items: $ref: '#/components/schemas/stop-reference' + station-d: + description: reference to /operator/stations + type: string coordinate: $ref: '#/components/schemas/coordinate' extra-info: @@ -1650,7 +1788,7 @@ components: type: type: string description: type of external reference (GTFS, CHB). This should be extended - enum: [GTFS-STOP-ID, GTFS-STOP-CODE, GTFS-AREA-ID, CHB-STOP-PLACE-CODE, CHB-QUAY-CODE, NS-CODE] + enum: [GTFS_STOP_ID, GTFS_STOP_CODE, GTFS_AREA_ID, CHB_STOP_PLACE_CODE, CHB_QUAY_CODE, NS_CODE] id: type: string description: this field should contain the complete ID. E.g. NL:S:13121110 or BE:S:79640040 @@ -1663,7 +1801,7 @@ components: properties: status: type: string - enum: [PROCESSING, UPDATE-REQUESTED, RESOLVED, CANCELLED] + enum: [PROCESSING, UPDATE_REQUESTED, RESOLVED, CANCELLED] example: PROCESSING time-to-resolution: type: integer @@ -1783,7 +1921,7 @@ components: user-type: type: string description: This indicates that this set of rental hours applies to either members or non-members only. - enum: [MEMBER, NON-MEMBERS] + enum: [MEMBER, NON_MEMBERS] example: MEMBER start-time: $ref: '#/components/schemas/time' @@ -1863,8 +2001,8 @@ components: type-of-system: description: Describes the type of system type: string - enum: [FREE-FLOATING, STATION-BASED, VIRTUAL-STATION-BASED] - example: free-floating + enum: [FREE_FLOATING, STATION_BASED, VIRTUAL_STATION_BASED] + example: FREE_FLOATING conditions: description: Added to include possibility to communicatie general rental conditions like minimum age, max. reservation time etc. [amended] type: string @@ -1983,7 +2121,7 @@ components: description: a more precise classification of the asset, like 'cargo bike', 'public bus', 'coach bus', 'office bus', 'water taxi', 'segway'. This is mandatory when using 'OTHER' as class. fuel: type: string - enum: [NONE, GASOLINE, DIESEL, ELECTRIC, HYBRID-GASOLINE, HYBRID-DIESEL, HYBRID-GAS, HYBRID-GAS, HYDROGEN, GAS, BIO-MASS, KEROSINE, OTHER] + enum: [NONE, GASOLINE, DIESEL, ELECTRIC, HYBRID_GASOLINE, HYBRID_DIESEL, HYBRID_GAS, HYDROGEN, GAS, BIO_MASS, KEROSINE, OTHER] energy-label: type: string enum: [A,B,C,D,E] diff --git a/documents/proposals/authentication.pptx b/documents/proposals/authentication.pptx new file mode 100644 index 0000000000000000000000000000000000000000..f8ba794159a92b10f430bf978d764a0aef250d08 GIT binary patch literal 215811 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%0A(0Pehs9f?MqV+fiq3M?h%2{ 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 literal 0 HcmV?d00001 diff --git a/styleguide.md b/styleguide.md index c4de492..5d8be57 100644 --- a/styleguide.md +++ b/styleguide.md @@ -41,10 +41,12 @@ E.g. Every name consists of one or more words, seperated by dashes. E.g. support-status. NO CAMEL CASING, NO UNDERSCORES! ## Properties ## -The properties should always have a type and - if it's a flat type - a clear description. If it's an object, use ALWAYS a $ref, referencing to another object, DON'T nest objects. +The properties should always have a type and - if it's a flat type - a clear description. If it's an object, use ALWAYS a $ref, referencing to another object, **DON'T nest objects**. Other keywords for properties (example, format, etc) are not mandatory. But when it makes sence, please add them. For references to websites/uri's, DO use format: URL. +Property names are with lowercase, optionally use dashes. + E.g. (the proper way) @@ -71,10 +73,10 @@ E.g. type-of-system: description: Describes the type of system type: string - enum: [FREE-FLOATING, STATION-BASED, VIRTUAL-STATION-BASED] - example: FREE-FLOATING + enum: [FREE_FLOATING, STATION_BASED, VIRTUAL_STATION_BASED] + example: FREE_FLOATING -The enumeration values are ALWAYS in capitals. The meaning of the values should be in the description of the property. +The enumeration values are ALWAYS in capitals. The meaning of the values should be in the description of the property. Use underscores instead of dash. ## Arrays ## -The arrays should be handled the same way as properties, but in the 'items' there should be flat types OR $ref's. No embedded objects. +The arrays should be handled the same way as properties, but in the 'items' there should be flat types OR $ref's. **No embedded objects**.