Rail, it's in our DNA
WebTis API
Documentation
Introduction
The Assertis WebTIS (AWT) API is a RESTful JSON API that enables customers to plan rail journeys and buy rail tickets for travel on the British rail network.
Using the API, customers can plan a journey from any National Rail station to any other. The API also enables customers to buy any ticket - Advance, Off-Peak, Anytime as well as group tickets, carnets, packages and season tickets - to and from any station up to three months before travel. Travelcards, zonal tickets, other TfL and metro products and Plusbus are also supported, as are all railcard discounts, reservations and child fares. Fares and journey planning can be delivered separately, as well as together.
The API supports basket functionality and secure payment with Visa, MasterCard, Amex and other payment cards, PayPal and payment on account. Customers can have their tickets printed and posted; collect them from stations; or print them at home / send them to their phone for some routes.
The API also offers order management, comprehensive rail reference data and refunds through the customer administration service.
All the data that the API uses is from rail-industry approved sources, updated daily in the case of fares and train schedules, and fully in line with industry best practice. The API is accredited by the Rail Delivery Group (RDG), which represents all of the Train Operating Companies (TOCs) and Network Rail (the infrastructure provider) in Britain.
Getting started
Your account manager will provide you with a URL for your dedicated test environment. The test environment will be a fully functional system integrated with test versions of all rail systems except LENNON.
Test card numbers will be provided that can be used to complete purchases. After a successful payment fulfilment will be completed.
Support queries and service issues can be sent via your account manager or to techsupport@assertis.co.uk.
If you wish to perform load testing please provide 24 hours notice.
Protocols
The API itself is a collection of microservices grouped together under a single domain using HAProxy. It is built using REST principles which ensures predictable URLs that makes writing applications easy. This API follows HTTP rules, enabling a wide range of HTTP clients can be used to interact with the API.
Every resource is exposed as a URL. The URL of each resource can be obtained by accessing the API Root Endpoint.
All requests and responses are in JSON. The structure of each request and response is outlined with examples and a JSON-Schema. In general the responses are similar to the standard JSON API design but links are condensed.
For example:
GET /customer/1
Would return:
{
"status": "success",
"data": {
"title": "Mr",
"firstNames": "John",
"surname": "Smith",
"email": "john.smith@example.org",
"emailMarketing": false,
"smsMarketing": false,
"telephoneNumber": "+447754000000",
"created": "2015-05-06T09:54:06Z",
"login": "2015-05-06T09:54:06Z",
"updated": "2015-05-06T09:54:06Z",
"firstPurchase": "2015-05-06T09:54:06Z",
"addresses": [
"/address/2"
]
},
"links": {
"/address/2": {
"title": "Mr",
"firstNames": "John",
"surname": "Smith",
"address1": "123 Test Street",
"address2": "Another Street",
"address3": null,
"town": "Town",
"county": null,
"country": "United Kingdom",
"postCode": "TE57 1NG",
"telephoneNumber": "+447754000000"
}
}
}
Any properties that contain a link to another entity (in this case /address/2) are automatically populated in the links section of the response.
Callbacks
There are additional call backs from the AWT that are not documented here as they usually contain a bespoke payload.
The available callbacks are:
- Order sold
- Order fulfilled
- Ticket refunded
Security
The API is only available via HTTPS. Certificates are signed by Let's Encrypt.
Some parts of the API may be publically available and may be used by end clients (SPA applications / Mobile devices), other parts are restricted by IP. In addition to this some resources are restricted by access token.
Where an access token is required it must be provided by HTTP header. For example
X-Auth-Token: "a1b2c3d4e5f6g7h8i9j0"
Reference data
Reference data is provided inline in the API responses as part of the links section. If there is a need to cache it on the client it can be cached for 24 hours.
Reference data is updated nightly between 03:00am and 04:00am.
Expiry headers
You should pay attention to Expires headers returned when order is created or modified. Various rules are in place to ensure basket validity conforms to industry standards.
Auth
Auth Service API
Auth service generates tokens to be used in authorization / authentication in other services.
Health check endpoint – returns service name, environment and API version.
GET /healthcheck
200 application/json
Response schema (show)
{
"description": "Auth Service status",
"type": "object",
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"properties": {
"name": {
"type": "string"
},
"environment": {
"type": "string"
},
"apiVersion": {
"type": "number"
}
},
"required": [
"name",
"environment",
"apiVersion"
],
"additionalProperties": false
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"name": "auth-service",
"environment": "dev",
"apiVersion": 1
}
}
Exposes Prometheus metrics in text exposition format. POST resets all counters before returning the snapshot.
GET /metrics
Return current Prometheus metrics snapshot.
200 text/plain
Response example (show)
null
POST /metrics
Reset all metric counters, then return the current (zeroed) snapshot.
200 text/plain
Response example (show)
null
POST /auth
Request schema (show)
{
"description": "Auth service token generation request",
"type": "object",
"additionalProperties": false,
"required": [
"vendor",
"text",
"signature"
],
"properties": {
"vendor": {
"type": "string",
"description": "Vendor name that exchanged with us its public key"
},
"text": {
"type": "string",
"description": "Text to be verified against signature"
},
"signature": {
"type": "string",
"description": "Base64 of signature to verify"
},
"userId": {
"type": "string",
"description": "Optional user id that match some of our customers e.g. /users/{id}"
},
"username": {
"type": "string",
"description": "Optional username"
},
"password": {
"type": "string",
"description": "Optional password"
},
"twoFactorCode": {
"type": "string",
"description": "Optional 2factor code"
},
"expiry": {
"type": "number",
"description": "Optional expiry time in hours"
}
}
}
Request example (show)
{
"vendor": "vendor",
"text": "1561b543-ec80-461b-b55b-43b9ff2a03a8",
"signature": "rLMwGb6mEAEBimzg0+f7Mi//s6ypkLvAhJ2C99u6OS0+iQ6t==",
"userId": "/users/14"
}
200 application/json
Response schema (show)
{
"description": "Auth Serivce token response",
"type": "object",
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"properties": {
"token": {
"type": "string"
}
},
"required": [
"token"
],
"additionalProperties": false
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"token": "eyJhbGciOiJIUzI1NiI.eyJzZXNzaW9uSWQiOiIiwidGVuYW5.niCtFnxnL-Z5jUYafohiN7SSO2coL"
}
}
400 application/json
Response schema (show)
{
"description": "Response with failure",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
Response example (show)
{
"status": "fail",
"data": {
"vendor": "must not be empty"
}
}
401 application/json
Response schema (show)
{
"description": "Response with failure",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
Response example (show)
{
"status": "fail",
"data": {
"message": "Error occured during signature validation. Check your vendor and tenent header"
}
}
403 application/json
Response schema (show)
{
"description": "Response with failure",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
Response example (show)
{
"status": "fail",
"data": {
"message": "Passed vendor / user / token does not match with the token"
}
}
500 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"message"
]
}
]
}
POST /pre-auth
Request schema (show)
{
"description": "Auth service pre-token action request",
"type": "object",
"additionalProperties": false,
"required": [
"vendor",
"text",
"signature"
],
"properties": {
"vendor": {
"type": "string",
"description": "Vendor name that exchanged with us its public key"
},
"text": {
"type": "string",
"description": "Text to be verified against signature"
},
"signature": {
"type": "string",
"description": "Base64 of signature to verify"
},
"otpNonce": {
"type": "string",
"description": "Used for resending OTP. Value should be: OTP Nonce returned by service which requested the otp (one that emitted OTPRequested event)"
}
}
}
Request example (show)
{
"vendor": "vendor",
"text": "1561b543-ec80-461b-b55b-43b9ff2a03a8",
"signature": "rLMwGb6mEAEBimzg0+f7Mi//s6ypkLvAhJ2C99u6OS0+iQ6t==",
"otpNonce": "1561b543-ec80-461b-b55b-43b9ff2a03a8"
}
200 application/json
Response schema (show)
{
"description": "Auth Serivce pre-token response",
"type": "object",
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"description": "Response data",
"type": "object"
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"message": "OTP has been re-sent",
"validUntil": "2023-01-01T00:00:00.000Z"
}
}
400 application/json
Response schema (show)
{
"description": "Response with failure",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
Response example (show)
{
"status": "fail",
"data": {
"vendor": "must not be empty"
}
}
401 application/json
Response schema (show)
{
"description": "Response with failure",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
Response example (show)
{
"status": "fail",
"data": {
"message": "Error occured during signature validation. Check your vendor and tenent header"
}
}
500 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"message"
]
}
]
}
Reference Data
Introduction
Welcome to the Reference Data API Documentation. The API allows you to fetch information about entities common for all parts of TIS. This service agreggate data supplied by external providers.
GET /railcard
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"code": {
"$oneOf": [
{
"type": "string",
"pattern": "^[A-Z0-9]{3}$"
},
{
"type": "string",
"pattern": "^$"
}
]
},
"description": {
"type": "string"
},
"name": {
"type": "object",
"properties": {
"display": {
"type": "string"
},
"print": {
"type": "string"
}
}
},
"status": {
"type": "object",
"properties": {
"adult": {
"type": [
"string",
"null"
]
},
"child": {
"type": [
"string",
"null"
]
}
}
},
"minPassengers": {
"type": "integer"
},
"maxPassengers": {
"type": "integer"
},
"minHolders": {
"type": "integer"
},
"maxHolders": {
"type": "integer"
},
"minAdults": {
"type": "integer"
},
"maxAdults": {
"type": "integer"
},
"minChildren": {
"type": "integer"
},
"maxChildren": {
"type": "integer"
},
"minAccAdults": {
"type": "integer"
},
"maxAccAdults": {
"type": "integer"
},
"quoteDate": {
"type": "string"
},
"startDate": {
"type": "string"
},
"endDate": {
"type": "string"
},
"lastValidDate": {
"type": [
"string",
"null"
]
}
},
"required": [
"code",
"description",
"name",
"minPassengers",
"maxPassengers",
"minHolders",
"maxHolders",
"minAdults",
"maxAdults",
"minChildren",
"maxChildren",
"minAccAdults",
"maxAccAdults",
"quoteDate",
"startDate",
"endDate",
"lastValidDate"
]
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": [
{
"code": "",
"description": "PUBLIC",
"name": {
"display": "PUBLIC",
"print": "PUBLIC"
},
"status": {
"adult": "000",
"child": "001"
},
"minPassengers": 0,
"maxPassengers": 8,
"minHolders": 0,
"maxHolders": 8,
"minAdults": 0,
"maxAdults": 8,
"minChildren": 0,
"maxChildren": 8,
"minAccAdults": 0,
"maxAccAdults": 8,
"quoteDate": "2020-12-01",
"startDate": "2020-12-01",
"endDate": "2020-12-01",
"lastValidDate": null
},
{
"code": "AT1",
"description": "1YR DISABLED PERSONS",
"name": {
"display": "1YR DISABLED PERSONS.",
"print": "1YR DISABLED PERSONS."
},
"status": {
"adult": "003",
"child": null
},
"minPassengers": 1,
"maxPassengers": 2,
"minHolders": 1,
"maxHolders": 2,
"minAdults": 1,
"maxAdults": 2,
"minChildren": 0,
"maxChildren": 8,
"minAccAdults": 0,
"maxAccAdults": 0,
"quoteDate": "2020-12-01",
"startDate": "2020-12-01",
"endDate": "2020-12-01",
"lastValidDate": "2020-12-04"
}
]
}
URI parameters
string id (required)
Pattern: ^[A-Z0-9]{3}$
GET /railcard/{id}
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"additionalProperties": false,
"properties": {
"code": {
"$oneOf": [
{
"type": "string",
"pattern": "^[A-Z0-9]{3}$"
},
{
"type": "string",
"pattern": "^$"
}
]
},
"description": {
"type": "string"
},
"name": {
"type": "object",
"properties": {
"display": {
"type": "string"
},
"print": {
"type": "string"
}
}
},
"status": {
"type": "object",
"properties": {
"adult": {
"type": [
"string",
"null"
]
},
"child": {
"type": [
"string",
"null"
]
}
}
},
"minPassengers": {
"type": "integer"
},
"maxPassengers": {
"type": "integer"
},
"minHolders": {
"type": "integer"
},
"maxHolders": {
"type": "integer"
},
"minAdults": {
"type": "integer"
},
"maxAdults": {
"type": "integer"
},
"minChildren": {
"type": "integer"
},
"maxChildren": {
"type": "integer"
},
"minAccAdults": {
"type": "integer"
},
"maxAccAdults": {
"type": "integer"
},
"quoteDate": {
"type": "string"
},
"startDate": {
"type": "string"
},
"endDate": {
"type": "string"
},
"lastValidDate": {
"type": [
"string",
"null"
]
}
},
"required": [
"code",
"description",
"name",
"minPassengers",
"maxPassengers",
"minHolders",
"maxHolders",
"minAdults",
"maxAdults",
"minChildren",
"maxChildren",
"minAccAdults",
"maxAccAdults",
"quoteDate",
"startDate",
"endDate",
"lastValidDate"
]
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"code": "AT1",
"description": "1YR DISABLED PERSONS",
"name": {
"display": "1YR DISABLED PERSONS.",
"print": "1YR DISABLED PERSONS."
},
"status": {
"adult": "003",
"child": null
},
"minPassengers": 1,
"maxPassengers": 2,
"minHolders": 1,
"maxHolders": 2,
"minAdults": 1,
"maxAdults": 2,
"minChildren": 0,
"maxChildren": 8,
"minAccAdults": 0,
"maxAccAdults": 0,
"quoteDate": "2020-12-01",
"startDate": "2020-12-01",
"endDate": "2020-12-01",
"lastValidDate": "2020-12-04"
}
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Railcard ABC was not found"
}
URI parameters
string id (required)
Pattern: ^[0-9]{5}$
GET /route/{id}
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"required": [
"name",
"code",
"included",
"excluded",
"lul"
],
"additionalProperties": false,
"properties": {
"name": {
"type": "object",
"properties": {
"description": {
"type": "string"
},
"aaaDescription": {
"type": [
"string",
"null"
]
},
"print": {
"type": "string"
},
"display": {
"type": "string"
}
},
"required": [
"description",
"print",
"display"
]
},
"code": {
"type": "string",
"pattern": "^\\d{5}$"
},
"included": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/station/[0-9A-Z]{4}$"
}
},
"excluded": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/station/[0-9A-Z]{4}$"
}
},
"lul": {
"type": "string"
}
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"code": "00000",
"name": {
"description": "ANY PERMITTED",
"aaaDescription": null,
"print": "Valid via any permitted route",
"display": "Travel is allowed via any permitted route."
},
"included": [],
"excluded": [
"/station/0362"
],
"lul": "NNNNNN-000000000000-_"
},
"links": []
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Route 12345 was not found"
}
URI parameters
string code (required)
Pattern: ^[\d\w]{3}$
GET /rover-type/{code}
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"required": [
"code",
"names"
],
"additionalProperties": false,
"properties": {
"code": {
"type": "string",
"pattern": "^[\\d\\w]{3}$"
},
"names": {
"type": "object",
"required": [
"description",
"display"
],
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"display": {
"type": "string"
}
}
}
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"code": "14R",
"names": {
"description": "ALL LINE ROVER 14DAY",
"display": "All Line Rover 14 Days"
}
},
"links": []
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Rover XXX was not found"
}
GET /station
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"type": "object",
"additionalProperties": false,
"properties": {
"station": {
"type": "string"
},
"location": {
"type": "string"
},
"display": {
"type": "string"
},
"print": {
"type": "string"
}
},
"required": [
"station",
"location",
"display",
"print"
]
},
"code": {
"type": "object",
"additionalProperties": false,
"properties": {
"nlc": {
"oneOf": [
{
"type": "string",
"pattern": "^[0-9A-Z]{4}$",
"example": "5595"
},
{
"type": "null"
}
]
},
"uic": {
"type": [
"string",
"null"
]
},
"crs": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"example": "CLJ"
},
"tiploc": {
"oneOf": [
{
"type": "string",
"pattern": "^[0-9A-Z]+$",
"example": "CLPHMJW"
},
{
"type": "null"
}
]
},
"tiploc_alternatives": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[0-9A-Z]+$",
"example": "CLPHMJW"
}
},
"atco": {
"type": [
"string",
"null"
]
}
},
"required": [
"nlc",
"uic",
"crs",
"tiploc",
"atco"
]
},
"latitude": {
"type": [
"number",
"null"
]
},
"longitude": {
"type": [
"number",
"null"
]
},
"facilities": {
"type": "array",
"items": {
"type": "string"
}
},
"groups": {
"oneOf": [
{
"type": "string",
"pattern": "^/station/[0-9A-Z]{4}/groups$"
},
{
"type": "array"
}
]
},
"members": {
"oneOf": [
{
"type": "string",
"pattern": "^/station/[0-9A-Z]{4}$"
},
{
"type": "array"
}
]
},
"londonTerminals": {
"oneOf": [
{
"type": "string",
"pattern": "^/station/[0-9A-Z]{4}/london-terminals$"
},
{
"type": "array"
}
]
},
"isGoldCardLocation": {
"type": "boolean"
},
"lul": {
"type": "string"
},
"zoneNo": {
"type": [
"string",
"null"
]
},
"zoneInd": {
"type": [
"string",
"null"
]
},
"locIdTypes": {
"type": "array",
"items": {
"type": "string"
}
},
"fareGroup": {
"type": [
"string",
"null"
]
}
},
"required": [
"name",
"code",
"latitude",
"longitude",
"facilities",
"groups",
"members",
"londonTerminals",
"isGoldCardLocation",
"lul",
"locIdTypes",
"fareGroup"
]
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": [
{
"name": {
"station": "LONDON EUSTON",
"location": "LONDON EUSTON",
"display": "London Euston",
"print": "London Euston"
},
"code": {
"nlc": "1444",
"uic": "7014440",
"crs": "EUS",
"tiploc": "EUSTON",
"tiploc_alternatives": [
"EUSTON"
],
"atco": "9100EUSTON"
},
"latitude": 51.528136,
"longitude": -0.133924,
"facilities": [
"TVM"
],
"groups": "/station/1444/groups",
"members": [],
"londonTerminals": "/station/1444/london-terminals",
"isGoldCardLocation": false,
"lul": "NNNNNN-169000000000-_-0N006009S0",
"zoneNo": "0027",
"zoneInd": "1 ",
"locIdTypes": [],
"fareGroup": "1072"
},
{
"name": {
"station": "BESCOT STADIUM",
"location": "BESCOT STADIUM",
"display": "Bescot Stadium",
"print": "Bescot Stadium"
},
"code": {
"nlc": "1003",
"uic": "7010030",
"crs": "BSC",
"tiploc": "BSCTSTA",
"tiploc_alternatives": [
"BSCTSTA"
],
"atco": "9100BSCTSTA"
},
"latitude": 52.563093,
"longitude": -1.991105,
"facilities": [
"BO",
"TVM"
],
"groups": "/station/1003/groups",
"members": [
"/station/0011",
"/station/0012"
],
"londonTerminals": "/station/1003/london-terminals",
"isGoldCardLocation": true,
"lul": "NNNNNN-000000000000-_-0N009003S0",
"zoneNo": null,
"zoneInd": null,
"locIdTypes": [
"O"
],
"fareGroup": "1003"
}
]
}
URI parameters
string id (required)
NLC or CRS
Pattern: ^[0-9A-Z]{3,4}$
GET /station/{id}
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"type": "object",
"additionalProperties": false,
"properties": {
"station": {
"type": "string"
},
"location": {
"type": "string"
},
"display": {
"type": "string"
},
"print": {
"type": "string"
}
},
"required": [
"station",
"location",
"display",
"print"
]
},
"code": {
"type": "object",
"additionalProperties": false,
"properties": {
"nlc": {
"oneOf": [
{
"type": "string",
"pattern": "^[0-9A-Z]{4}$",
"example": "5595"
},
{
"type": "null"
}
]
},
"uic": {
"type": [
"string",
"null"
]
},
"crs": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"example": "CLJ"
},
"tiploc": {
"oneOf": [
{
"type": "string",
"pattern": "^[0-9A-Z]+$",
"example": "CLPHMJW"
},
{
"type": "null"
}
]
},
"tiploc_alternatives": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[0-9A-Z]+$",
"example": "CLPHMJW"
}
},
"atco": {
"type": [
"string",
"null"
]
}
},
"required": [
"nlc",
"uic",
"crs",
"tiploc",
"atco"
]
},
"latitude": {
"type": [
"number",
"null"
]
},
"longitude": {
"type": [
"number",
"null"
]
},
"facilities": {
"type": "array",
"items": {
"type": "string"
}
},
"groups": {
"oneOf": [
{
"type": "string",
"pattern": "^/station/[0-9A-Z]{4}/groups$"
},
{
"type": "array"
}
]
},
"members": {
"oneOf": [
{
"type": "string",
"pattern": "^/station/[0-9A-Z]{4}$"
},
{
"type": "array"
}
]
},
"londonTerminals": {
"oneOf": [
{
"type": "string",
"pattern": "^/station/[0-9A-Z]{4}/london-terminals$"
},
{
"type": "array"
}
]
},
"isGoldCardLocation": {
"type": "boolean"
},
"lul": {
"type": "string"
},
"zoneNo": {
"type": [
"string",
"null"
]
},
"zoneInd": {
"type": [
"string",
"null"
]
},
"locIdTypes": {
"type": "array",
"items": {
"type": "string"
}
},
"fareGroup": {
"type": [
"string",
"null"
]
}
},
"required": [
"name",
"code",
"latitude",
"longitude",
"facilities",
"groups",
"members",
"londonTerminals",
"isGoldCardLocation",
"lul",
"locIdTypes",
"fareGroup"
]
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"name": {
"station": "LONDON EUSTON",
"location": "LONDON EUSTON",
"display": "London Euston",
"print": "London Euston"
},
"code": {
"nlc": "1444",
"uic": "7014440",
"crs": "EUS",
"tiploc": "EUSTON",
"tiploc_alternatives": [
"EUSTON"
],
"atco": "9100EUSTON"
},
"latitude": 51.528136,
"longitude": -0.133924,
"facilities": [
"TVM"
],
"groups": "/station/1444/groups",
"members": [
"/station/0011",
"/station/0012"
],
"londonTerminals": "/station/1444/london-terminals",
"isGoldCardLocation": false,
"lul": "NNNNNN-169000000000-_-0N006009S0",
"zoneNo": "0027",
"zoneInd": "1 ",
"locIdTypes": [
"S",
"N"
],
"fareGroup": "1072"
}
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Station 1234 was not found"
}
URI parameters
string id (required)
NLC or CRS
Pattern: ^[0-9A-Z]{3,4}$
GET /station/{id}/london-terminals
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"londonTerminals": {
"type": [
"array",
"object"
]
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"londonTerminals": {
"00000": [
"/station/1444",
"/station/1475",
"/station/3087"
],
"00042": [
"/station/1444"
],
"00081": [
"/station/1444"
],
"00305": [
"/station/1475",
"/station/3087"
]
}
}
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Station 1234 was not found"
}
URI parameters
string id (required)
NLC or CRS or UIC
Pattern: ^[0-9A-Z]{3,7}$
GET /station/{id}/fulfilment-locations
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "array"
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": [
"633597013A05A4",
"633597600905A4",
"633597012205A4"
]
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Station 1234 was not found"
}
URI parameters
string id (required)
NLC or CRS
Pattern: ^[0-9A-Z]{3,4}$
GET /station/{id}/groups
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"groups": {
"type": [
"array"
]
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"groups": [
"/station/0032",
"/station/0033",
"/station/0034",
"/station/0035",
"/station/0051",
"/station/0060",
"/station/0064",
"/station/0065",
"/station/0785",
"/station/0786",
"/station/0790",
"/station/0791",
"/station/0792",
"/station/1072",
"/station/H107",
"/station/K269"
]
}
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Station 1234 was not found"
}
URI parameters
string id (required)
NLC or CRS
Pattern: ^[0-9A-Z]{3,4}$
string secondId (required)
NLC or CRS
Pattern: ^[0-9A-Z]{3,4}$
string route (required)
Pattern: ^[0-9]{5}$
GET /station/{id}/permitted-stations/{secondId}/{route}
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"members": {
"type": [
"array"
]
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"members": [
"/station/0032",
"/station/0033",
"/station/0034"
]
}
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Station 1234 was not found"
}
URI parameters
string id (required)
Pattern: ^[0-9A-Z]{3}$
GET /supplement-type/{id}
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"required": [
"code",
"type",
"capriCode",
"description",
"shortDescription",
"price",
"minGroup",
"maxGroup",
"class",
"isSeparateTicket",
"sundryCode",
"packageDirections"
],
"additionalProperties": false,
"properties": {
"code": {
"type": "string",
"pattern": "^[A-Z0-9]{3}$"
},
"type": [],
"capriCode": {
"type": [
"string",
"null"
]
},
"description": {
"type": "string"
},
"shortDescription": {
"type": "string"
},
"price": {
"type": "integer"
},
"minGroup": {
"type": "integer"
},
"maxGroup": {
"type": "integer"
},
"class": {
"type": [
"integer",
"null"
]
},
"isSeparateTicket": {
"type": "boolean"
},
"sundryCode": {
"type": [
"integer",
"null"
]
},
"packageDirections": {
"type": [
"object",
"array"
]
}
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"code": "BIK",
"type": "EXA",
"capriCode": "ZAX",
"description": "BICYCLE RESERVATION",
"shortDescription": "CYCLE RES",
"price": 500,
"minGroup": 1,
"maxGroup": 1,
"class": 1,
"isSeparateTicket": true,
"sundryCode": 96094,
"packageDirections": {
"1SA": "E",
"1SB": "O"
}
}
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"message"
]
}
]
}
URI parameters
string code (required)
Pattern: ^[A-Z0-9]{3}$
GET /ticket-type/{id}
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"properties": {
"name": {
"type": "object",
"properties": {
"display": {
"type": "string"
},
"print": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"ccstFormat": {
"type": "string"
},
"code": {
"type": "string",
"pattern": "^[A-Z0-9]{3}$"
},
"isReturn": {
"type": "boolean"
},
"isSeason": {
"type": "boolean"
},
"isAdvance": {
"type": "boolean"
},
"isPackage": {
"type": "boolean"
},
"isCarnet": {
"type": "boolean"
},
"isFirstClass": {
"type": "boolean"
},
"reservationType": {
"type": "string",
"enum": [
"N",
"B",
"O",
"R",
"E"
],
"description": "N = 'no' ; O = 'reservation required on outward journey' ; R = 'reservation required on inward journey ; B = 'reservation required on both outward and return journey' ; E = 'reservation required either outward or return journey'"
},
"validity": {
"type": "string",
"pattern": "^/validity\\-type/[0-9A-Z]{2}$"
},
"minPassengers": {
"type": "integer"
},
"maxPassengers": {
"type": "integer"
},
"minAdults": {
"type": "integer"
},
"maxAdults": {
"type": "integer"
},
"minChildren": {
"type": "integer"
},
"maxChildren": {
"type": "integer"
},
"utsCode": {
"type": "integer"
},
"timeRestriction": {
"type": "integer",
"minimum": 0,
"maximum": 3
},
"capriCode": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"canBeRetailed": {
"type": "boolean"
},
"ticketCategory": {
"type": [
"string",
"null"
]
},
"reservationSupplement": {
"type": [
"string",
"null"
]
}
},
"required": [
"name",
"code",
"utsCode",
"timeRestriction",
"capriCode",
"canBeRetailed",
"ticketCategory"
],
"additionalProperties": false
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"name": {
"display": "Standard Open Single",
"print": "standard open single",
"description": "ANYTIME S"
},
"ccstFormat": "X01",
"code": "SOS",
"isReturn": false,
"isSeason": true,
"isAdvance": false,
"isPackage": true,
"isCarnet": false,
"isFirstClass": false,
"reservationType": "B",
"validity": "/validity-type/AA",
"minPassengers": 1,
"maxPassengers": 1,
"minAdults": 1,
"maxAdults": 1,
"minChildren": 0,
"maxChildren": 0,
"utsCode": 99,
"timeRestriction": 0,
"capriCode": "UAB",
"canBeRetailed": true,
"ticketCategory": "advance",
"reservationSupplement": "CAX"
}
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Ticket ABC was not found"
}
URI parameters
string id (required)
Pattern: ^[A-Z0-9]{2}$
GET /validity-type/{id}
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"additionalProperties": false,
"required": [
"code",
"outward",
"return",
"returnMustBeAfter"
],
"properties": {
"code": {
"type": "string",
"pattern": "^[A-Z0-9]{2}$"
},
"outward": {
"type": "object",
"additionalProperties": false,
"required": [
"days",
"months",
"break",
"description"
],
"properties": {
"days": {
"type": "integer"
},
"months": {
"type": "integer"
},
"break": {
"type": "boolean"
},
"description": {
"type": "string"
}
}
},
"return": {
"type": "object",
"additionalProperties": false,
"required": [
"days",
"months",
"break",
"description"
],
"properties": {
"days": {
"type": "integer"
},
"months": {
"type": "integer"
},
"break": {
"type": "boolean"
},
"description": {
"type": "string"
}
}
},
"returnMustBeAfter": {
"type": "object",
"additionalProperties": false,
"required": [
"days",
"months",
"dayOfWeek"
],
"properties": {
"days": {
"type": "integer"
},
"months": {
"type": "integer"
},
"dayOfWeek": {
"type": [
"string",
"null"
]
}
}
}
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"code": "3E",
"outward": {
"days": 5,
"months": 0,
"break": true,
"description": "FIVE DAYS"
},
"return": {
"days": 0,
"months": 1,
"break": false,
"description": "ONE MONTH"
},
"returnMustBeAfter": {
"days": 1,
"months": 0,
"dayOfWeek": "Tuesday"
}
}
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Ticket Validity AA was not found"
}
URI parameters
string code (required)
Pattern: ^[A-Z\\*]{2}$
GET /toc/{id}
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"required": [
"code",
"name",
"description",
"active"
],
"additionalProperties": false,
"properties": {
"code": {
"type": "string",
"pattern": "^[A-Z\\*]{2}$"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"active": {
"type": "boolean"
}
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"code": "AW",
"name": "Transport For Wales Rail",
"description": "Transport for Wales",
"active": true
}
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Toc AA was not found"
}
Accepts two formats, late/123 and late/123/at/TIPLOC.
GET /darwin-reason/{data}
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"additionalProperties": false,
"required": [
"code",
"text"
],
"properties": {
"type": {
"type": "string",
"enum": [
"cancel",
"late"
]
},
"code": {
"type": "string"
},
"range": {
"oneOf": [
{
"type": "null"
},
{
"type": "string",
"enum": [
"at",
"near"
]
}
]
},
"station": {
"oneOf": [
{
"type": "null"
},
{
"type": "string",
"pattern": "^/station/[0-9A-Z]{4}$"
}
]
},
"text": {
"type": "string"
}
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"type": "late",
"code": "100",
"range": "at",
"station": "/station/3813",
"text": "This train has been delayed by a broken down train"
},
"links": {
"/station/3813": []
}
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"message"
]
}
]
}
URI parameters
string code (required)
Pattern: ^[0-9A-Za-z]{3}$
GET /restriction/{code}
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"required": [
"restrictionHeader",
"restrictionRailcard",
"restrictionTime",
"restrictionTimeDate",
"restrictionTimeToc",
"restrictionTrain",
"restrictionTrainDate",
"restrictionTrainQuota"
],
"additionalProperties": false,
"properties": {
"restrictionHeader": {
"type": "array",
"items": {
"allOf": [
{
"required": [
"timeMarker",
"restrictionCode",
"description",
"descOut",
"descRtn",
"typeOut",
"typeRtn",
"changeInd"
],
"additionalProperties": false,
"properties": {
"timeMarker": {
"type": "string"
},
"restrictionCode": {
"type": "string"
},
"description": {
"type": "string"
},
"descOut": {
"type": "string"
},
"descRtn": {
"type": "string"
},
"typeOut": {
"type": "string"
},
"typeRtn": {
"type": "string"
},
"changeInd": {
"type": "string"
}
}
}
]
}
},
"restrictionRailcard": {
"type": "array",
"items": {
"allOf": [
{
"required": [
"timeMarker",
"restrictionCode",
"railcardCode",
"restrictionSequence",
"ticketCode",
"routeCode",
"locationCrs",
"totalBan",
"startDate",
"endDate"
],
"additionalProperties": false,
"properties": {
"timeMarker": {
"type": "string"
},
"restrictionCode": {
"type": "string"
},
"railcardCode": {
"type": "string"
},
"restrictionSequence": {
"type": "string"
},
"ticketCode": {
"type": "string"
},
"routeCode": {
"type": "string"
},
"locationCrs": {
"type": "string"
},
"totalBan": {
"type": "integer"
},
"startDate": {
"type": "string"
},
"endDate": {
"type": "string"
}
}
}
]
}
},
"restrictionTime": {
"type": "array",
"items": {
"allOf": [
{
"required": [
"timeMarker",
"restrictionCode",
"sequenceNo",
"outRet",
"timeFrom",
"timeTo",
"arrDepVia",
"location",
"rstrType",
"trainType",
"minFareFlag",
"startDate",
"endDate"
],
"additionalProperties": false,
"properties": {
"timeMarker": {
"type": "string"
},
"restrictionCode": {
"type": "string"
},
"sequenceNo": {
"type": "string"
},
"outRet": {
"type": "string"
},
"timeFrom": {
"type": "string"
},
"timeTo": {
"type": "string"
},
"arrDepVia": {
"type": "string"
},
"location": {
"type": "string"
},
"rstrType": {
"type": "string"
},
"trainType": {
"type": "string"
},
"minFareFlag": {
"type": "string"
},
"startDate": {
"type": "string"
},
"endDate": {
"type": "string"
}
}
}
]
}
},
"restrictionTimeDate": {
"type": "array",
"items": {
"allOf": [
{
"required": [
"timeMarker",
"restrictionCode",
"sequenceNo",
"outRet",
"monday",
"tuesday",
"wednesday",
"thursday",
"friday",
"saturday",
"sunday",
"startDate",
"endDate"
],
"additionalProperties": false,
"properties": {
"timeMarker": {
"type": "string"
},
"restrictionCode": {
"type": "string"
},
"sequenceNo": {
"type": "string"
},
"outRet": {
"type": "string"
},
"monday": {
"type": "integer"
},
"tuesday": {
"type": "integer"
},
"wednesday": {
"type": "integer"
},
"thursday": {
"type": "integer"
},
"friday": {
"type": "integer"
},
"saturday": {
"type": "integer"
},
"sunday": {
"type": "integer"
},
"startDate": {
"type": "string"
},
"endDate": {
"type": "string"
}
}
}
]
}
},
"restrictionTimeToc": {
"type": "array",
"items": {
"allOf": [
{
"required": [
"timeMarker",
"restrictionCode",
"sequenceNo",
"outRet",
"tocCode"
],
"additionalProperties": false,
"properties": {
"timeMarker": {
"type": "string"
},
"restrictionCode": {
"type": "string"
},
"sequenceNo": {
"type": "string"
},
"outRet": {
"type": "string"
},
"tocCode": {
"type": "string"
}
}
}
]
}
},
"restrictionTrain": {
"type": "array",
"items": {
"allOf": [
{
"required": [
"timeMarker",
"restrictionCode",
"trainNo",
"outRet",
"location",
"quotaInd",
"arrDep",
"sleeperInd",
"startDate",
"endDate"
],
"additionalProperties": false,
"properties": {
"timeMarker": {
"type": "string"
},
"restrictionCode": {
"type": "string"
},
"trainNo": {
"type": "string"
},
"outRet": {
"type": "string"
},
"location": {
"type": [
"string",
"null"
]
},
"quotaInd": {
"type": "string"
},
"arrDep": {
"type": [
"string",
"null"
]
},
"sleeperInd": {
"type": "string"
},
"startDate": {
"type": "string"
},
"endDate": {
"type": "string"
}
}
}
]
}
},
"restrictionTrainDate": {
"type": "array",
"items": {
"allOf": [
{
"required": [
"timeMarker",
"restrictionCode",
"trainNo",
"outRet",
"monday",
"tuesday",
"wednesday",
"thursday",
"friday",
"saturday",
"sunday",
"startDate",
"endDate"
],
"additionalProperties": false,
"properties": {
"timeMarker": {
"type": "string"
},
"restrictionCode": {
"type": "string"
},
"trainNo": {
"type": "string"
},
"outRet": {
"type": "string"
},
"monday": {
"type": "integer"
},
"tuesday": {
"type": "integer"
},
"wednesday": {
"type": "integer"
},
"thursday": {
"type": "integer"
},
"friday": {
"type": "integer"
},
"saturday": {
"type": "integer"
},
"sunday": {
"type": "integer"
},
"startDate": {
"type": "string"
},
"endDate": {
"type": "string"
}
}
}
]
}
},
"restrictionTrainQuota": {
"type": "array",
"items": {
"allOf": [
{
"required": [
"timeMarker",
"restrictionCode",
"trainNo",
"outRet",
"location",
"quotaInd",
"arrDep",
"sleeperInd",
"startDate",
"endDate"
],
"additionalProperties": false,
"properties": {
"timeMarker": {
"type": "string"
},
"restrictionCode": {
"type": "string"
},
"trainNo": {
"type": "string"
},
"outRet": {
"type": "string"
},
"location": {
"type": "string"
},
"quotaInd": {
"type": "string"
},
"arrDep": {
"type": "string"
},
"sleeperInd": {
"type": [
"string",
"null"
]
},
"startDate": {
"type": "string"
},
"endDate": {
"type": "string"
}
}
}
]
}
}
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"restrictionHeader": [
{
"timeMarker": "C",
"restrictionCode": "1D",
"description": "IEC OFF-PEAK",
"descOut": "NOT VALID ARRIVING INTO LONDON BEFORE 1008 M-F",
"descRtn": "NOT VALID FROM LONDON 0645-0759 M-F&1559-1745 M-TH",
"typeOut": "P",
"typeRtn": "N",
"changeInd": "1"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"description": "IEC OFF-PEAK",
"descOut": "NOT VALID ARRIVING INTO LONDON BEFORE 1008 M-F",
"descRtn": "NOT VALID FROM LONDON 0645-0759 M-F&1559-1745 M-TH",
"typeOut": "P",
"typeRtn": "N",
"changeInd": "1"
}
],
"restrictionRailcard": [
{
"timeMarker": "C",
"restrictionCode": "BU",
"railcardCode": "BUD",
"restrictionSequence": "0001",
"ticketCode": "",
"routeCode": "",
"locationCrs": " ",
"totalBan": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "F",
"restrictionCode": "BU",
"railcardCode": "BUD",
"restrictionSequence": "0001",
"ticketCode": "",
"routeCode": "",
"locationCrs": " ",
"totalBan": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
}
],
"restrictionTime": [
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0001",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:09:29",
"arrDepVia": "D",
"location": "",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0001",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:09:29",
"arrDepVia": "D",
"location": "",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0002",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:07",
"arrDepVia": "A",
"location": "ZFD",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0002",
"outRet": "R",
"timeFrom": "00:06:45",
"timeTo": "00:07:58",
"arrDepVia": "D",
"location": "ZFD",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0003",
"outRet": "O",
"timeFrom": "00:06:39",
"timeTo": "00:10:47",
"arrDepVia": "A",
"location": "MKC",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0003",
"outRet": "R",
"timeFrom": "00:15:58",
"timeTo": "00:17:45",
"arrDepVia": "D",
"location": "ZFD",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0004",
"outRet": "O",
"timeFrom": "00:06:44",
"timeTo": "00:10:44",
"arrDepVia": "A",
"location": "WFJ",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0004",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:09:50",
"arrDepVia": "D",
"location": "MKC",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0005",
"outRet": "O",
"timeFrom": "00:07:20",
"timeTo": "00:11:29",
"arrDepVia": "A",
"location": "EUS",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0005",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:09:37",
"arrDepVia": "D",
"location": "WFJ",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0006",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:09:29",
"arrDepVia": "A",
"location": "BDM",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0006",
"outRet": "R",
"timeFrom": "00:14:39",
"timeTo": "00:18:37",
"arrDepVia": "D",
"location": "WFJ",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0007",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:03",
"arrDepVia": "A",
"location": "LUT",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0007",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:09:25",
"arrDepVia": "D",
"location": "EUS",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0008",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:02",
"arrDepVia": "A",
"location": "STP",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0008",
"outRet": "R",
"timeFrom": "00:15:01",
"timeTo": "00:18:44",
"arrDepVia": "D",
"location": "EUS",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0009",
"outRet": "O",
"timeFrom": "00:01:00",
"timeTo": "00:10:04",
"arrDepVia": "A",
"location": "PAD",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0009",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:09:00",
"arrDepVia": "D",
"location": "BDM",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0010",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:08:56",
"arrDepVia": "D",
"location": "BTH",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0010",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:09:00",
"arrDepVia": "D",
"location": "LUT",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0011",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:03",
"arrDepVia": "A",
"location": "LTN",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0011",
"outRet": "R",
"timeFrom": "00:16:30",
"timeTo": "00:18:58",
"arrDepVia": "D",
"location": "LUT",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0012",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:07",
"arrDepVia": "A",
"location": "BFR",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0012",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:08:46",
"arrDepVia": "D",
"location": "STP",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0013",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:07",
"arrDepVia": "A",
"location": "CTK",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0013",
"outRet": "R",
"timeFrom": "00:16:35",
"timeTo": "00:18:46",
"arrDepVia": "D",
"location": "STP",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0014",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:07",
"arrDepVia": "A",
"location": "LBG",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0014",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:08:56",
"arrDepVia": "D",
"location": "BTH",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0015",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:07",
"arrDepVia": "A",
"location": "EPH",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0015",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:09:00",
"arrDepVia": "D",
"location": "LTN",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0016",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:02",
"arrDepVia": "A",
"location": "ECR",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0016",
"outRet": "R",
"timeFrom": "00:16:30",
"timeTo": "00:18:58",
"arrDepVia": "D",
"location": "LTN",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0017",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:02",
"arrDepVia": "A",
"location": "NWD",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0017",
"outRet": "R",
"timeFrom": "00:06:45",
"timeTo": "00:07:58",
"arrDepVia": "D",
"location": "BFR",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0018",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:07",
"arrDepVia": "A",
"location": "HHY",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0018",
"outRet": "R",
"timeFrom": "00:15:58",
"timeTo": "00:17:45",
"arrDepVia": "D",
"location": "BFR",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0019",
"outRet": "O",
"timeFrom": "00:04:00",
"timeTo": "00:09:56",
"arrDepVia": "A",
"location": "SVG",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0019",
"outRet": "R",
"timeFrom": "00:06:45",
"timeTo": "00:07:58",
"arrDepVia": "D",
"location": "CTK",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0020",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:07",
"arrDepVia": "A",
"location": "FPK",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0020",
"outRet": "R",
"timeFrom": "00:15:58",
"timeTo": "00:17:45",
"arrDepVia": "D",
"location": "CTK",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0021",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:07",
"arrDepVia": "A",
"location": "KGX",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0021",
"outRet": "R",
"timeFrom": "00:06:45",
"timeTo": "00:07:58",
"arrDepVia": "D",
"location": "LBG",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0022",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:09:59",
"arrDepVia": "A",
"location": "LST",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0022",
"outRet": "R",
"timeFrom": "00:15:58",
"timeTo": "00:17:45",
"arrDepVia": "D",
"location": "LBG",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0023",
"outRet": "O",
"timeFrom": "00:04:00",
"timeTo": "00:07:20",
"arrDepVia": "D",
"location": "TTF",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0023",
"outRet": "R",
"timeFrom": "00:06:45",
"timeTo": "00:07:58",
"arrDepVia": "D",
"location": "EPH",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0024",
"outRet": "R",
"timeFrom": "00:15:58",
"timeTo": "00:17:45",
"arrDepVia": "D",
"location": "EPH",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0025",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:08:46",
"arrDepVia": "D",
"location": "ECR",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0026",
"outRet": "R",
"timeFrom": "00:16:35",
"timeTo": "00:18:46",
"arrDepVia": "D",
"location": "ECR",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0027",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:08:46",
"arrDepVia": "D",
"location": "NWD",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0028",
"outRet": "R",
"timeFrom": "00:16:35",
"timeTo": "00:18:46",
"arrDepVia": "D",
"location": "NWD",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0029",
"outRet": "R",
"timeFrom": "00:06:45",
"timeTo": "00:07:58",
"arrDepVia": "D",
"location": "HHY",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0030",
"outRet": "R",
"timeFrom": "00:15:58",
"timeTo": "00:17:45",
"arrDepVia": "D",
"location": "HHY",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0031",
"outRet": "R",
"timeFrom": "00:06:25",
"timeTo": "00:08:16",
"arrDepVia": "D",
"location": "HIT",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0032",
"outRet": "R",
"timeFrom": "00:15:52",
"timeTo": "00:17:32",
"arrDepVia": "D",
"location": "HIT",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0033",
"outRet": "R",
"timeFrom": "00:07:15",
"timeTo": "00:08:14",
"arrDepVia": "D",
"location": "SVG",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0034",
"outRet": "R",
"timeFrom": "00:16:18",
"timeTo": "00:17:57",
"arrDepVia": "D",
"location": "SVG",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0035",
"outRet": "R",
"timeFrom": "00:06:45",
"timeTo": "00:07:58",
"arrDepVia": "D",
"location": "FPK",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0036",
"outRet": "R",
"timeFrom": "00:15:58",
"timeTo": "00:17:45",
"arrDepVia": "D",
"location": "FPK",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0037",
"outRet": "R",
"timeFrom": "00:06:45",
"timeTo": "00:07:58",
"arrDepVia": "D",
"location": "KGX",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0038",
"outRet": "R",
"timeFrom": "00:15:58",
"timeTo": "00:17:45",
"arrDepVia": "D",
"location": "KGX",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0039",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:09:29",
"arrDepVia": "D",
"location": "LST",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0040",
"outRet": "R",
"timeFrom": "00:16:30",
"timeTo": "00:18:58",
"arrDepVia": "D",
"location": "LST",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0001",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:09:29",
"arrDepVia": "D",
"location": "",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0001",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:09:29",
"arrDepVia": "D",
"location": "",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0002",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:07",
"arrDepVia": "A",
"location": "ZFD",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0002",
"outRet": "R",
"timeFrom": "00:06:45",
"timeTo": "00:07:58",
"arrDepVia": "D",
"location": "ZFD",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0003",
"outRet": "O",
"timeFrom": "00:06:39",
"timeTo": "00:10:47",
"arrDepVia": "A",
"location": "MKC",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0003",
"outRet": "R",
"timeFrom": "00:15:58",
"timeTo": "00:17:45",
"arrDepVia": "D",
"location": "ZFD",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0004",
"outRet": "O",
"timeFrom": "00:06:44",
"timeTo": "00:10:44",
"arrDepVia": "A",
"location": "WFJ",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0004",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:09:50",
"arrDepVia": "D",
"location": "MKC",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0005",
"outRet": "O",
"timeFrom": "00:07:20",
"timeTo": "00:11:29",
"arrDepVia": "A",
"location": "EUS",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0005",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:09:37",
"arrDepVia": "D",
"location": "WFJ",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0006",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:09:29",
"arrDepVia": "A",
"location": "BDM",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0006",
"outRet": "R",
"timeFrom": "00:14:39",
"timeTo": "00:18:37",
"arrDepVia": "D",
"location": "WFJ",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0007",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:03",
"arrDepVia": "A",
"location": "LUT",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0007",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:09:25",
"arrDepVia": "D",
"location": "EUS",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0008",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:02",
"arrDepVia": "A",
"location": "STP",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0008",
"outRet": "R",
"timeFrom": "00:15:01",
"timeTo": "00:18:44",
"arrDepVia": "D",
"location": "EUS",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0009",
"outRet": "O",
"timeFrom": "00:01:00",
"timeTo": "00:10:04",
"arrDepVia": "A",
"location": "PAD",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0009",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:09:00",
"arrDepVia": "D",
"location": "BDM",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0010",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:08:56",
"arrDepVia": "D",
"location": "BTH",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0010",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:09:00",
"arrDepVia": "D",
"location": "LUT",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0011",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:03",
"arrDepVia": "A",
"location": "LTN",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0011",
"outRet": "R",
"timeFrom": "00:16:30",
"timeTo": "00:18:58",
"arrDepVia": "D",
"location": "LUT",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0012",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:07",
"arrDepVia": "A",
"location": "BFR",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0012",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:08:46",
"arrDepVia": "D",
"location": "STP",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0013",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:07",
"arrDepVia": "A",
"location": "CTK",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0013",
"outRet": "R",
"timeFrom": "00:16:35",
"timeTo": "00:18:46",
"arrDepVia": "D",
"location": "STP",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0014",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:07",
"arrDepVia": "A",
"location": "LBG",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0014",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:08:56",
"arrDepVia": "D",
"location": "BTH",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0015",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:07",
"arrDepVia": "A",
"location": "EPH",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0015",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:09:00",
"arrDepVia": "D",
"location": "LTN",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0016",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:02",
"arrDepVia": "A",
"location": "ECR",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0016",
"outRet": "R",
"timeFrom": "00:16:30",
"timeTo": "00:18:58",
"arrDepVia": "D",
"location": "LTN",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0017",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:02",
"arrDepVia": "A",
"location": "NWD",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0017",
"outRet": "R",
"timeFrom": "00:06:45",
"timeTo": "00:07:58",
"arrDepVia": "D",
"location": "BFR",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0018",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:07",
"arrDepVia": "A",
"location": "HHY",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0018",
"outRet": "R",
"timeFrom": "00:15:58",
"timeTo": "00:17:45",
"arrDepVia": "D",
"location": "BFR",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0019",
"outRet": "O",
"timeFrom": "00:04:00",
"timeTo": "00:09:56",
"arrDepVia": "A",
"location": "SVG",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0019",
"outRet": "R",
"timeFrom": "00:06:45",
"timeTo": "00:07:58",
"arrDepVia": "D",
"location": "CTK",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0020",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:07",
"arrDepVia": "A",
"location": "FPK",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0020",
"outRet": "R",
"timeFrom": "00:15:58",
"timeTo": "00:17:45",
"arrDepVia": "D",
"location": "CTK",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0021",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:10:07",
"arrDepVia": "A",
"location": "KGX",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0021",
"outRet": "R",
"timeFrom": "00:06:45",
"timeTo": "00:07:58",
"arrDepVia": "D",
"location": "LBG",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0022",
"outRet": "O",
"timeFrom": "00:04:30",
"timeTo": "00:09:59",
"arrDepVia": "A",
"location": "LST",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0022",
"outRet": "R",
"timeFrom": "00:15:58",
"timeTo": "00:17:45",
"arrDepVia": "D",
"location": "LBG",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0023",
"outRet": "O",
"timeFrom": "00:04:00",
"timeTo": "00:07:20",
"arrDepVia": "D",
"location": "TTF",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0023",
"outRet": "R",
"timeFrom": "00:06:45",
"timeTo": "00:07:58",
"arrDepVia": "D",
"location": "EPH",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0024",
"outRet": "R",
"timeFrom": "00:15:58",
"timeTo": "00:17:45",
"arrDepVia": "D",
"location": "EPH",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0025",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:08:46",
"arrDepVia": "D",
"location": "ECR",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0026",
"outRet": "R",
"timeFrom": "00:16:35",
"timeTo": "00:18:46",
"arrDepVia": "D",
"location": "ECR",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0027",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:08:46",
"arrDepVia": "D",
"location": "NWD",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0028",
"outRet": "R",
"timeFrom": "00:16:35",
"timeTo": "00:18:46",
"arrDepVia": "D",
"location": "NWD",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0029",
"outRet": "R",
"timeFrom": "00:06:45",
"timeTo": "00:07:58",
"arrDepVia": "D",
"location": "HHY",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0030",
"outRet": "R",
"timeFrom": "00:15:58",
"timeTo": "00:17:45",
"arrDepVia": "D",
"location": "HHY",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0031",
"outRet": "R",
"timeFrom": "00:06:25",
"timeTo": "00:08:16",
"arrDepVia": "D",
"location": "HIT",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0032",
"outRet": "R",
"timeFrom": "00:15:52",
"timeTo": "00:17:32",
"arrDepVia": "D",
"location": "HIT",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0033",
"outRet": "R",
"timeFrom": "00:07:15",
"timeTo": "00:08:14",
"arrDepVia": "D",
"location": "SVG",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0034",
"outRet": "R",
"timeFrom": "00:16:18",
"timeTo": "00:17:57",
"arrDepVia": "D",
"location": "SVG",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0035",
"outRet": "R",
"timeFrom": "00:06:45",
"timeTo": "00:07:58",
"arrDepVia": "D",
"location": "FPK",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0036",
"outRet": "R",
"timeFrom": "00:15:58",
"timeTo": "00:17:45",
"arrDepVia": "D",
"location": "FPK",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0037",
"outRet": "R",
"timeFrom": "00:06:45",
"timeTo": "00:07:58",
"arrDepVia": "D",
"location": "KGX",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0038",
"outRet": "R",
"timeFrom": "00:15:58",
"timeTo": "00:17:45",
"arrDepVia": "D",
"location": "KGX",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0039",
"outRet": "R",
"timeFrom": "00:04:30",
"timeTo": "00:09:29",
"arrDepVia": "D",
"location": "LST",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0040",
"outRet": "R",
"timeFrom": "00:16:30",
"timeTo": "00:18:58",
"arrDepVia": "D",
"location": "LST",
"rstrType": "T",
"trainType": "A",
"minFareFlag": "0",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
}
],
"restrictionTimeDate": [
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0003",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0003",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0003",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0003",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0003",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0018",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0018",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0018",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0018",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0018",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0019",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0019",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0019",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0019",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0019",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0019",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0020",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0020",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0020",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0020",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0020",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0021",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0021",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0021",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0021",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0021",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0021",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0022",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0022",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0022",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0022",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0022",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0024",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0024",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0024",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0024",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0024",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0030",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0030",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0030",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0030",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0030",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0033",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0033",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0033",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0033",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0033",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0033",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0034",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0034",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0034",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0034",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0034",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0034",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0036",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0036",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0036",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0036",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0036",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0037",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0037",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0037",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0037",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0037",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0037",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0038",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0038",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0038",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0038",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0038",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0038",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0019",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0019",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0019",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0019",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0019",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0021",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0021",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0021",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0021",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0021",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0033",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0033",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0033",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0033",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0033",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0034",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0034",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0034",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0034",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0034",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0037",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0037",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0037",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0037",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0037",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0038",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0038",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0038",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0038",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0038",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 0,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
}
],
"restrictionTimeToc": [
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0001",
"outRet": "O",
"tocCode": "XC"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0001",
"outRet": "R",
"tocCode": "XC"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0005",
"outRet": "O",
"tocCode": "CS"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0005",
"outRet": "O",
"tocCode": "LM"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0005",
"outRet": "O",
"tocCode": "LO"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0005",
"outRet": "O",
"tocCode": "SR"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"sequenceNo": "0005",
"outRet": "O",
"tocCode": "VT"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0001",
"outRet": "O",
"tocCode": "XC"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0001",
"outRet": "R",
"tocCode": "XC"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0005",
"outRet": "O",
"tocCode": "CS"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0005",
"outRet": "O",
"tocCode": "LM"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0005",
"outRet": "O",
"tocCode": "LO"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0005",
"outRet": "O",
"tocCode": "SR"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"sequenceNo": "0005",
"outRet": "O",
"tocCode": "VT"
}
],
"restrictionTrain": [
{
"timeMarker": "C",
"restrictionCode": "1D",
"trainNo": "C76152",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"trainNo": "C77350",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"trainNo": "C77559",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"trainNo": "C78532",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"trainNo": "C78534",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"trainNo": "C78535",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"trainNo": "C78536",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"trainNo": "C78538",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"trainNo": "C78539",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"trainNo": "C78543",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"trainNo": "C78544",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"trainNo": "C78545",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"trainNo": "C78546",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"trainNo": "C78548",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"trainNo": "C78549",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"trainNo": "C78550",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"trainNo": "C78552",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "1D",
"trainNo": "C78553",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"trainNo": "C11125",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"trainNo": "C11147",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"trainNo": "C11369",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"trainNo": "G61049",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"trainNo": "G61050",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"trainNo": "G61051",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"trainNo": "G61054",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"trainNo": "G61055",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"trainNo": "G61056",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"trainNo": "G61062",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"trainNo": "G61063",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"trainNo": "G61064",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"trainNo": "G61067",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"trainNo": "G61068",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"trainNo": "G61069",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"trainNo": "G61072",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"trainNo": "G61073",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "1D",
"trainNo": "G61074",
"outRet": "O",
"location": null,
"quotaInd": "N",
"arrDep": null,
"sleeperInd": "N",
"startDate": "2019-01-02",
"endDate": "2999-12-31"
}
],
"restrictionTrainDate": [
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y71881",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y71881",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y71881",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y71881",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y71881",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y71881",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y71881",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y71881",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y71881",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y71881",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y71900",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y71900",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y71900",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y71900",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y71900",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y71900",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y71900",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y71900",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y71900",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y71900",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y81201",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y81201",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y81201",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y81201",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y81201",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y81201",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y81201",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y81201",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y81201",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y81201",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y81206",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y81206",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y81206",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y81206",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y81206",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y81206",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y81206",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y81206",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y81206",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "C",
"restrictionCode": "GZ",
"trainNo": "Y81206",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
},
{
"timeMarker": "F",
"restrictionCode": "GZ",
"trainNo": "Y71881",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "GZ",
"trainNo": "Y71881",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "GZ",
"trainNo": "Y71881",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "GZ",
"trainNo": "Y71881",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "GZ",
"trainNo": "Y71881",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "GZ",
"trainNo": "Y71881",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "GZ",
"trainNo": "Y71881",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "GZ",
"trainNo": "Y71881",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "GZ",
"trainNo": "Y71881",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "GZ",
"trainNo": "Y71881",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "GZ",
"trainNo": "Y71900",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "GZ",
"trainNo": "Y71900",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "GZ",
"trainNo": "Y71900",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "GZ",
"trainNo": "Y71900",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "GZ",
"trainNo": "Y71900",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "GZ",
"trainNo": "Y71900",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "GZ",
"trainNo": "Y71900",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "GZ",
"trainNo": "Y71900",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "GZ",
"trainNo": "Y71900",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "GZ",
"trainNo": "Y71900",
"outRet": "R",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "GZ",
"trainNo": "Y81201",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "GZ",
"trainNo": "Y81201",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
},
{
"timeMarker": "F",
"restrictionCode": "GZ",
"trainNo": "Y81201",
"outRet": "O",
"monday": 1,
"tuesday": 1,
"wednesday": 1,
"thursday": 1,
"friday": 1,
"saturday": 0,
"sunday": 0,
"startDate": "2019-01-02",
"endDate": "2999-12-31"
}
],
"restrictionTrainQuota": [
{
"timeMarker": "C",
"restrictionCode": "1A",
"trainNo": "L80549",
"outRet": "R",
"location": "BTP",
"quotaInd": "",
"arrDep": "A",
"sleeperInd": null,
"startDate": "2018-09-02",
"endDate": "2019-01-01"
}
]
},
"links": []
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Restriction 123 was not found"
}
GET /ticket-categories
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"properties": {
"anytime": {
"type": "array"
},
"off-peak": {
"type": "array"
},
"advance": {
"type": "array"
}
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"anytime": [
"MCA"
],
"off-peak": [
"TKR",
"YFR"
],
"advance": [
"WC1",
"WCC",
"XS8"
]
},
"links": []
}
GET /sleeper-tickets
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"additionalProperties": true
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"1D0": {
"min": 1,
"max": 5
},
"2D0": {
"min": 1,
"max": 1
},
"SSR": {
"min": 2,
"max": 2
}
},
"links": []
}
URI parameters
string originNlc (required)
Pattern: ^[[:alnum:]]{3,4}$
string destinationNlc (required)
Pattern: ^[[:alnum:]]{3,4}$
string routeCode (required)
Pattern: ^\d{5}$
string ticketCode (required)
Pattern: ^[A-Z0-9]{3}$
string date (required)
Pattern: ^\d{4}-\d{2}-\d{2}$
GET /product-type/search/{originNlc}/{destinationNlc}/{routeCode}/{ticketCode}/{date}
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "string"
},
"iin": {
"type": "string"
},
"oid": {
"type": "string"
},
"typ": {
"type": "integer"
},
"ptyp": {
"type": "integer"
}
},
"required": [
"id",
"iin",
"oid",
"typ",
"ptyp"
]
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"id": "05EO",
"iin": "633597",
"oid": "0246",
"typ": 23,
"ptyp": 1
}
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Did not find any products with given criteria"
}
GET /reservation-supplement-finder
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"data"
]
}
]
}
]
}
Response example (show)
{
"status": "success",
"data": "/supplement-type/CAX",
"links": {
"/supplement-type/CAX": {
"code": "CAX",
"type": "SLE",
"capriCode": "ZMW",
"description": "CLSC RESERVATION",
"shortDescription": "CLSC RESVTN ",
"price": 0,
"minGroup": 2,
"maxGroup": 6,
"class": 2,
"isSeparateTicket": true,
"sundryCode": null,
"packageDirections": []
}
}
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array",
"string"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Resolved URIs from 'data' section ",
"type": [
"array",
"object"
]
}
}
},
{
"required": [
"message"
]
}
]
}
Journey Planning
GET /odyssey/fare-search
Plan a journey
Parameters
string origin (required)
NLC or CRS code
Example: TBW
string destination (required)
NLC or CRS code
Example: TBW
string outwardDate (required)
Example: 1540425600
string inwardDate
Example: 1540425600
number adults (required)
Example: 2
number children (required)
Example: 1
string railcards
Example: YNG,EDU
string routeCode
if specified, response will contain only fares with this route code
Example: 59
string ticketType
if specified, response will contain only tickets with this ticket type code
Example: SDS
string ticketCategory
if specified, only fares with ticket types with specified category will be return
Example: off-peak
200 application/json
Response schema (show)
{
"type": "object",
"properties": {
"data": {
"type": "object",
"additionalProperties": false,
"required": [
"outward",
"inward",
"return"
],
"properties": {
"outward": {
"type": "array",
"items": {
"type": "string",
"pattern": "/fare\\-option/fare/.+"
}
},
"inward": {
"type": "array",
"items": {
"type": "string",
"pattern": "/fare\\-option/fare/.+"
}
},
"return": {
"type": "array",
"items": {
"type": "string",
"pattern": "/fare\\-option/fare/.+"
}
}
}
},
"links": {
"type": "object",
"additionalProperties": false,
"patternProperties": {
"^/odyssey/fare/.+$": {
"type": "object",
"additionalProperties": false,
"properties": {
"origin": {
"type": "string"
},
"destination": {
"type": "string"
},
"price": {
"type": "number",
"examples": [
123.45
],
"description": "Price in pence",
"pattern": "[0-9]+.[0-9]{2}"
},
"originalPrice": {
"type": "number",
"examples": [
123.45
],
"description": "Price in pence",
"pattern": "[0-9]+.[0-9]{2}"
},
"availability": {
"type": "number"
},
"railcard": {
"type": [
"null",
"string"
]
},
"restrictionCode": {
"type": [
"string",
"null"
]
},
"route": {
"pattern": "^/route/\\d+$",
"type": "string"
},
"ticketType": {
"pattern": "^/ticket-type/\\w+$",
"type": "string"
},
"fareSetter": {
"pattern": "^[A-Z]{3}$",
"type": "string"
},
"statusCode": {
"type": "string"
},
"xLondon": {
"type": "number",
"description": "0 - not cross London; 1 - cross London; 2 - cross London by underground"
},
"permittedOriginStations": {
"type": "string"
},
"permittedDestinationStations": {
"type": "string"
},
"discount": {
"type": [
"null",
"object"
],
"additionalProperties": false,
"properties": {
"type": {
"type": "string"
},
"lennonCode": {
"type": "string"
},
"promoCode": {
"type": [
"null",
"string"
]
},
"percent": {
"type": "integer"
},
"shortDescription": {
"type": [
"null",
"string"
]
},
"longDescription": {
"type": [
"null",
"string"
]
},
"travelStartDate": {
"type": [
"null",
"string"
]
},
"travelEndDate": {
"type": [
"null",
"string"
]
},
"purchaseStartDate": {
"type": [
"null",
"string"
]
},
"purchaseEndDate": {
"type": [
"null",
"string"
]
}
}
},
"season": {
"type": "object",
"additionalProperties": false,
"properties": {
"stockColour": {
"type": "string"
},
"comparisonPrice": {
"type": "string"
},
"duration": {
"type": "object",
"additionalProperties": false,
"properties": {
"days": {
"type": "number"
},
"months": {
"type": "number"
}
}
}
}
},
"groups": {
"type": "array",
"items": {
"type": "string"
}
},
"labels": {
"description": "Labels describing the fare",
"type": "array",
"items": {
"type": "string",
"examples": [
"advance",
"first-class",
"split"
],
"description": "Short, computer-readable string that describes a parameter of a fare or fare option"
}
}
},
"required": [
"origin",
"destination",
"route",
"price",
"ticketType",
"fareSetter",
"statusCode",
"xLondon",
"permittedOriginStations",
"permittedDestinationStations",
"groups"
]
},
"^/odyssey/fare-option/.+$": {
"type": "object",
"additionalProperties": false,
"required": [
"fares",
"labels",
"totalPrice"
],
"properties": {
"totalPrice": {
"type": "number",
"examples": [
123.45
],
"description": "Price in pence",
"pattern": "[0-9]+.[0-9]{2}"
},
"originalPrice": {
"type": "number",
"examples": [
123.45
],
"description": "Price in pence",
"pattern": "[0-9]+.[0-9]{2}"
},
"labels": {
"description": "Labels for the fare option, shared between all fares in the option plus extra fare option-specific labels",
"type": "array",
"items": {
"type": "string",
"examples": [
"advance",
"first-class",
"split"
],
"description": "Short, computer-readable string that describes a parameter of a fare or fare option"
}
},
"supplements": {
"type": "array",
"items": []
},
"hasETicket": {
"type": "string"
},
"validUntil": {
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"createdAt": {
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"requestId": {
"type": "string",
"pattern": ".{5,63}"
},
"sessionId": {
"type": "string",
"pattern": ".{5,63}"
},
"fares": {
"type": "array",
"items": {
"type": "object",
"properties": {
"adults": {
"type": "number"
},
"children": {
"type": "number"
},
"fare": {
"type": "string",
"pattern": "/odyssey/fare/.+"
},
"splitInfo": {
"type": "object",
"description": "Details of a fare split. If not present, this fare is not part of a split ticket.",
"required": [
"sectionIds"
],
"sectionIds": {
"type": "array",
"items": {
"type": "number"
},
"description": "Indicates which sections of a split ticket this fare belongs to."
},
"outwardOrigin": {
"description": "Station where the split ticket starts for the outward journey. If not present, this fare is only for the inward part of a split ticket.",
"type": "string",
"pattern": "/station/[A-Z0-9]+",
"example": "/station/CRD"
},
"outwardDestination": {
"description": "The CRS code of the station where the split ticket ends for the outward journey. If not present, this fare is only for the inward part of a split ticket.",
"type": "string",
"pattern": "/station/[A-Z0-9]+",
"example": "/station/CRD"
},
"inwardOrigin": {
"description": "The CRS code of the station where the split ticket starts for the inward journey. If not present, this fare is only for the outward part of a split ticket.",
"type": "string",
"pattern": "/station/[A-Z0-9]+",
"example": "/station/CRD"
},
"inwardDestination": {
"description": "The CRS code of the station where the split ticket ends for the inward journey. If not present, this fare is only for the outward part of a split ticket.",
"type": "string",
"pattern": "/station/[A-Z0-9]+",
"example": "/station/CRD"
}
},
"validFrom": {
"description": "Start of fare validity period",
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"validUntil": {
"description": "End of fare validity period",
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
}
},
"required": [
"adults",
"children",
"fare"
]
}
}
}
}
}
}
}
}
Response example (show)
{
"data": {
"outward": [],
"inward": [],
"return": [
"/odyssey/fare-option/fare/5268-I444-00777-SD4-000-1-DS-262-283-0/fare/5268-I444-00777-SD1-001-1-DS-262-283-0"
]
},
"links": []
}
GET /odyssey/season-search
Query season ticket fares. Response format can be manipulate, depends on API client needs. Default response format is like: response": { "fares": { "0100": [ "/odyssey/fare/1234", "/odyssey/fare/2345", ], "1200": [ "/odyssey/fare/9876", ] } } Fares are indexed by season duration. However, you can request for flat structure, using flatten parameter. To get fares only for particular duration, use duration. For instance, with flatten=1&duration=0100 above response would look like: response": { "fares": [ "/odyssey/fare/1234", "/odyssey/fare/2345", ] } Flatten and duration can be use separately.
Parameters
string origin (required)
NLC or CRS code
Example: TBW
string destination (required)
NLC or CRS code
Example: TBW
string startDate (required)
Start date of the season ticket (must be within 14 days)
Example: 1540425600
string passengerType (required)
Example: adult|child
string duration
Duration length (MMDD) of season ticket. Can be a single duration or comma separated list of durations.
If duration is defined, only fares with those particular durations will be return.
Default durations are 0007, 0100, 1200, and they will be return if duration is empty.
Example: 0100,0070,0600
string railcards
Example: YNG
string flatten
if set to true, fares won't be indexed by duration
Example: 1
200 application/json
Response schema (show)
{
"type": "object",
"properties": {
"response": {
"type": "object",
"additionalProperties": false,
"required": [
"fares"
],
"properties": {
"fares": {
"$oneOf": [
{
"type": "object",
"additionalProperties": true,
"properties": {
"0007": {
"type": "array",
"items": {
"type": "string",
"pattern": "/fare\\-option/fare/.+"
}
},
"0100": {
"type": "array",
"items": {
"type": "string",
"pattern": "/fare\\-option/fare/.+"
}
},
"1200": {
"type": "array",
"items": {
"type": "string",
"pattern": "/fare\\-option/fare/.+"
}
}
}
},
{
"type": "array",
"items": {
"type": "string",
"pattern": "/fare\\-option/fare/.+"
}
}
]
}
}
},
"links": {
"type": "object"
}
}
}
Response example (show)
{
"response": {
"fares": {
"1200": [
"/odyssey/fare/1072-0418-00000-PSS-000-1--331-344-0-12,0",
"/odyssey/fare/1072-0418-00000-PSF-000-1--331-344-0-12,0"
],
"0007": [
"/odyssey/fare/1072-0418-00000-7DS-000-1--331-344-0-0,7",
"/odyssey/fare/1072-0418-00000-7DF-000-1--331-344-0-0,7"
],
"0100": [
"/odyssey/fare/1072-0418-00000-PSS-000-1--331-344-0-1,0",
"/odyssey/fare/1072-0418-00000-PSF-000-1--331-344-0-1,0"
],
"0304": [
"/odyssey/fare/1072-0418-00000-PSS-000-1--331-344-0-3,4",
"/odyssey/fare/1072-0418-00000-PSF-000-1--331-344-0-3,4"
]
}
},
"links": []
}
GET /odyssey/jp
Plan a journey
Parameters
string origin (required)
Outward journey origin as an NLC, CRS or TIPLOC code.
Example: TBW
string destination (required)
Outward journey destination as an NLC, CRS or TIPLOC code.
Example: TBW
string via
NLC, CRS or TIPLOC codes of stations the journeys are required to pass.
Example: EUS,MAN
string avoid
NLC, CRS or TIPLOC codes of stations the journeys are required not to to pass.
Example: EUS,MAN
string tocs
Short codes of TOCs the journey is required to use for at least one of the legs each.
Example: CS,NT
number adults (required)
Number of adult passengers.
number children (required)
Number of non-adult human passengers.
Example: 1
number pets
Number of pet-friendly compartments, might affect fare option selection.
number bikes
Number of bike spaces.
string railcards
List of railcard codes that the passengers are allowed to use.
Example: YNG,YNG,EDU
string promoCode
A promo code that can be used to enable a specific discount.
Example: ANB523DS
string outwardDate (required)
OUTWARD journey start date.
Example: 1540425600
string outwardDepartAt
OUTWARD journeys DEPARTING at or AFTER that time will be shown.
Example: 14:00
string outwardDepartBy
OUTWARD journeys DEPARTING at or BEFORE that time will be shown.
Example: 9:00
string outwardArriveAt
OUTWARD journeys ARRIVING at or AFTER that time will be shown.
Example: 14:00
string outwardArriveBy
OUTWARD journeys ARRIVING at or BEFORE that time will be shown.
Example: 9:30
string inwardDate
INWARD journey start date.
Example: 1540425600
string inwardDepartAt
INWARD journeys DEPARTING at or AFTER that time will be shown.
Example: 14:00
string inwardDepartBy
INWARD journeys DEPARTING at or BEFORE that time will be shown.
Example: 9:00
string inwardArriveAt
INWARD journeys ARRIVING at or AFTER that time will be shown.
Example: 7:30
string inwardArriveBy
INWARD journeys ARRIVING at or BEFORE that time will be shown.
Example: 00:00
boolean firstClass
Set to 'false' to not show first class tickets.
boolean standardClass
Set to 'false' to not show standard class tickets.
boolean singles
Set to 'false' to not show single direction tickets.
boolean returns
Set to 'false' to not show return tickets; does not prevent inward single tickets.
boolean advance
Set to 'false' to not show advance tickets.
string ticketCategory
Only show tickets from a selected category, one of "anytime", "off-peak", "advance".
Example: off-peak
string fareSetters
Only show tickets from selected fare setters.
Example: CAL,SCS
string tenant
Use the specified tenant configuration; either this or an X-Tenant header is required.
Example: rsm
number limit
Maximum number of results returned.
number horizon
Number of hours of schedules to look up; defaults to automatic, 3-27.
number maxPrice
Maximum fare option price in pence.
Example: 10000
boolean useSplits
Set to 'true'/'false' to use/not use split tickets.
string splitPattern
Only show split tickets with the specified pattern.
boolean ignoreNrs
Set to 'true' to assume all fares are fully available.
string journey
Ignore all journeys other than the one specified.
Example: /journey/280:EUS_INV_C72728
string fare
Ignore all fares other than the one specified.
Example: /fare/1444-8649-00345-1T8-001-1-U6--329-280-0-
string ticketType
Only show fares with the specified ticket code.
Example: 1SA
string routeCode
Only show fares with the specified route code.
Example: 100
200 application/json
Response schema (show)
{
"type": "object",
"additionalProperties": false,
"required": [
"pagination",
"response"
],
"properties": {
"pagination": {
"type": "object",
"additionalProperties": false,
"properties": {
"outward": {
"type": "object",
"properties": {
"current": {
"type": "string",
"description": "Current effective query string, if present (might be different from requested)"
},
"earlier": {
"type": "string",
"description": "Earlier result query string, if present"
},
"later": {
"type": "string",
"description": "Later result query string, if present"
}
}
},
"inward": {
"type": "object",
"properties": {
"current": {
"type": "string",
"description": "Current effective query string, if present (might be different from requested)"
},
"earlier": {
"type": "string",
"description": "Earlier result query string, if present"
},
"later": {
"type": "string",
"description": "Later result query string, if present"
}
}
}
}
},
"response": {
"type": "object",
"additionalProperties": false,
"required": [
"outward",
"inward",
"fares",
"availability"
],
"properties": {
"outward": {
"type": "array",
"items": {
"type": "string",
"pattern": "/odyssey/journey/.+"
}
},
"inward": {
"type": "array",
"items": {
"type": "string",
"pattern": "/odyssey/journey/.+"
}
},
"fares": {
"type": "object",
"description": "Fares for journeys, keyed by journey uri in one-way search, two level journey uri in return search."
},
"faresNotForSale": {
"type": "object",
"description": "Fares for journeys, not for sale, keyed by journey uri in one-way search, two level journey uri in return search."
},
"addons": {
"type": "object",
"required": [
"outward"
],
"properties": {
"outward": {
"type": "object"
},
"inward": {
"type": "object"
}
}
},
"availability": {
"type": "object",
"description": "availabilities associated with journeys and ticket types"
},
"splitSavings": {
"examples": [
{
"/odyssey/journey/285:285:EUS_GLC_C21856": {
"/odyssey/fare-option/fare/1444-1243-00515-V2V-000-1-VR---269-1-0--2500-1-0/fare/1243-0433-00515-V2X-000-1-VR---269-1-0--1300-1-0-EUS:CRE_CRE:GLC": 10
}
},
{
"/odyssey/journey/285:285:EUS_GLC_C22071": {
"/odyssey/journey/285:285:GLC_EUS_P79235": {
"/odyssey/fare-option/fare/1444-1030-00516-V1R-000-1-VA---269-1-0--5550-1-0/fare/1030-0433-00516-V1G-000-1-VA---269-1-0--14850-1-0-EUS:COV_COV:GLC": {
"/odyssey/fare-option/fare/0433-0785-00430-BPS-000-1-GC---269-1-0--3580-1-0": 4780
}
}
}
}
],
"oneOf": [
{
"description": "One way journey savings - Map>",
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": {
"type": "number"
}
}
},
{
"description": "Return journey savings - Map>>>",
"type": "object",
"minProperties": 1,
"additionalProperties": {
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": {
"type": "number"
}
}
}
}
}
]
},
"canSelectSeatOnJourney": {
"type": "object",
"description": "Whether a specific seat can be selected on a particular journey and fare option combination",
"examples": [
{
"/odyssey/journey/285:285:EUS_GLC_C21856": {
"/odyssey/fare-option/37:/fare/1072-1871-00300-SSS-000-1-CJ---37-1-0--8940-1-0-bebd": true
}
}
]
},
"canSelectSeatOnLeg": {
"type": "object",
"description": "Whether a specific seat can be selected on a particular leg and fare option combination",
"examples": [
{
"/odyssey/leg/37:STP_NOT_Y12230": {
"/odyssey/fare-option/37:/fare/1072-1871-00300-SSS-000-1-CJ---37-1-0--8940-1-0-bebd": true
}
}
]
}
}
},
"messages": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"tag",
"level",
"title"
],
"properties": {
"tag": {
"type": "string"
},
"level": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"additionalProperties": false,
"properties": {
"outward": {
"type": "object",
"properties": {
"current": {
"type": "string",
"description": "Current effective query string, if present (might be different from requested)"
},
"earlier": {
"type": "string",
"description": "Earlier result query string, if present"
},
"later": {
"type": "string",
"description": "Later result query string, if present"
}
}
},
"inward": {
"type": "object",
"properties": {
"current": {
"type": "string",
"description": "Current effective query string, if present (might be different from requested)"
},
"earlier": {
"type": "string",
"description": "Earlier result query string, if present"
},
"later": {
"type": "string",
"description": "Later result query string, if present"
}
}
}
}
},
"links": {
"type": "object",
"additionalProperties": false,
"patternProperties": {
"^/odyssey/fare/.+$": {
"type": "object",
"additionalProperties": false,
"properties": {
"origin": {
"type": "string"
},
"destination": {
"type": "string"
},
"price": {
"type": "number",
"examples": [
123.45
],
"description": "Price in pence",
"pattern": "[0-9]+.[0-9]{2}"
},
"originalPrice": {
"type": "number",
"examples": [
123.45
],
"description": "Price in pence",
"pattern": "[0-9]+.[0-9]{2}"
},
"availability": {
"type": "number"
},
"railcard": {
"type": [
"null",
"string"
]
},
"restrictionCode": {
"type": [
"string",
"null"
]
},
"route": {
"pattern": "^/route/\\d+$",
"type": "string"
},
"ticketType": {
"pattern": "^/ticket-type/\\w+$",
"type": "string"
},
"fareSetter": {
"pattern": "^[A-Z]{3}$",
"type": "string"
},
"statusCode": {
"type": "string"
},
"xLondon": {
"type": "number",
"description": "0 - not cross London; 1 - cross London; 2 - cross London by underground"
},
"permittedOriginStations": {
"type": "string"
},
"permittedDestinationStations": {
"type": "string"
},
"discount": {
"type": [
"null",
"object"
],
"additionalProperties": false,
"properties": {
"type": {
"type": "string"
},
"lennonCode": {
"type": "string"
},
"promoCode": {
"type": [
"null",
"string"
]
},
"percent": {
"type": "integer"
},
"shortDescription": {
"type": [
"null",
"string"
]
},
"longDescription": {
"type": [
"null",
"string"
]
},
"travelStartDate": {
"type": [
"null",
"string"
]
},
"travelEndDate": {
"type": [
"null",
"string"
]
},
"purchaseStartDate": {
"type": [
"null",
"string"
]
},
"purchaseEndDate": {
"type": [
"null",
"string"
]
}
}
},
"season": {
"type": "object",
"additionalProperties": false,
"properties": {
"stockColour": {
"type": "string"
},
"comparisonPrice": {
"type": "string"
},
"duration": {
"type": "object",
"additionalProperties": false,
"properties": {
"days": {
"type": "number"
},
"months": {
"type": "number"
}
}
}
}
},
"groups": {
"type": "array",
"items": {
"type": "string"
}
},
"labels": {
"description": "Labels describing the fare",
"type": "array",
"items": {
"type": "string",
"examples": [
"advance",
"first-class",
"split"
],
"description": "Short, computer-readable string that describes a parameter of a fare or fare option"
}
}
},
"required": [
"origin",
"destination",
"route",
"price",
"ticketType",
"fareSetter",
"statusCode",
"xLondon",
"permittedOriginStations",
"permittedDestinationStations",
"groups"
]
},
"^/odyssey/fare-option/.+$": {
"type": "object",
"additionalProperties": false,
"required": [
"fares",
"labels",
"totalPrice"
],
"properties": {
"totalPrice": {
"type": "number",
"examples": [
123.45
],
"description": "Price in pence",
"pattern": "[0-9]+.[0-9]{2}"
},
"originalPrice": {
"type": "number",
"examples": [
123.45
],
"description": "Price in pence",
"pattern": "[0-9]+.[0-9]{2}"
},
"labels": {
"description": "Labels for the fare option, shared between all fares in the option plus extra fare option-specific labels",
"type": "array",
"items": {
"type": "string",
"examples": [
"advance",
"first-class",
"split"
],
"description": "Short, computer-readable string that describes a parameter of a fare or fare option"
}
},
"supplements": {
"type": "array",
"items": []
},
"hasETicket": {
"type": "string"
},
"validUntil": {
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"createdAt": {
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"requestId": {
"type": "string",
"pattern": ".{5,63}"
},
"sessionId": {
"type": "string",
"pattern": ".{5,63}"
},
"fares": {
"type": "array",
"items": {
"type": "object",
"properties": {
"adults": {
"type": "number"
},
"children": {
"type": "number"
},
"fare": {
"type": "string",
"pattern": "/odyssey/fare/.+"
},
"splitInfo": {
"type": "object",
"description": "Details of a fare split. If not present, this fare is not part of a split ticket.",
"required": [
"sectionIds"
],
"sectionIds": {
"type": "array",
"items": {
"type": "number"
},
"description": "Indicates which sections of a split ticket this fare belongs to."
},
"outwardOrigin": {
"description": "Station where the split ticket starts for the outward journey. If not present, this fare is only for the inward part of a split ticket.",
"type": "string",
"pattern": "/station/[A-Z0-9]+",
"example": "/station/CRD"
},
"outwardDestination": {
"description": "The CRS code of the station where the split ticket ends for the outward journey. If not present, this fare is only for the inward part of a split ticket.",
"type": "string",
"pattern": "/station/[A-Z0-9]+",
"example": "/station/CRD"
},
"inwardOrigin": {
"description": "The CRS code of the station where the split ticket starts for the inward journey. If not present, this fare is only for the outward part of a split ticket.",
"type": "string",
"pattern": "/station/[A-Z0-9]+",
"example": "/station/CRD"
},
"inwardDestination": {
"description": "The CRS code of the station where the split ticket ends for the inward journey. If not present, this fare is only for the outward part of a split ticket.",
"type": "string",
"pattern": "/station/[A-Z0-9]+",
"example": "/station/CRD"
}
},
"validFrom": {
"description": "Start of fare validity period",
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"validUntil": {
"description": "End of fare validity period",
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
}
},
"required": [
"adults",
"children",
"fare"
]
}
}
}
},
"^/odyssey/journey/.+$": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"origin",
"destination",
"departure",
"arrival",
"realTime",
"scheduledDeparture",
"scheduledArrival",
"legs",
"disruptions",
"status"
],
"properties": {
"id": {
"type": "string",
"pattern": "/odyssey/journey/.+"
},
"origin": {
"type": "string",
"pattern": "/station/[A-Z0-9]+",
"example": "/station/CRD",
"description": "A location URI containing a CRS, NLC or TIPLOC code"
},
"destination": {
"type": "string",
"pattern": "/station/[A-Z0-9]+",
"example": "/station/CRD",
"description": "A location URI containing a CRS, NLC or TIPLOC code"
},
"departure": {
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"arrival": {
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"realTime": {
"description": "Real time timing information",
"type": "object",
"properties": {
"arrival": {
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"arrivalType": {
"description": "Indicates whether the time is scheduled, estimated or actually measured",
"type": "string",
"pattern": "scheduled|estimated|actual"
},
"departure": {
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"departureType": {
"description": "Indicates whether the time is scheduled, estimated or actually measured",
"type": "string",
"pattern": "scheduled|estimated|actual"
}
}
},
"scheduledDeparture": {
"description": "[DEPRECATED] Unix timestamp, please use `departure` instead",
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"scheduledArrival": {
"description": "[DEPRECATED] Unix timestamp, please use `arrival` instead",
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"legs": {
"type": "array",
"items": {
"type": "string",
"pattern": "/odyssey/leg/.+"
}
},
"disruptions": {
"type": "string",
"pattern": "/disruption/[0-9\\-]+T[0-9\\:]+/.+"
},
"isReservationCompulsory": {
"type": "boolean",
"description": "Whether reservations on the service are compulsory"
},
"isReservationPossible": {
"type": "boolean",
"description": "Whether reservations on the service are possible"
},
"isOvertaken": {
"type": "boolean",
"description": "Whether the journey is overtaken by another journey within this page of results"
},
"overtakingJourneysCount": {
"type": "number",
"description": "Number of trains which overtakes given journey. Maximum number is 9 (so if there is more than 9 it will always be 9)"
},
"boardingTime": {
"$oneOf": [
{
"type": "null"
},
{
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
}
]
},
"alightingTime": {
"$oneOf": [
{
"type": "null"
},
{
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
}
]
},
"distance": {
"type": "number",
"description": "Distance traveled by the service, excluding fixed legs, in miles."
},
"co2": {
"type": "object",
"additionalProperties": false,
"required": [
"train",
"petrolCar",
"flight"
],
"properties": {
"train": {
"type": "number"
},
"petrolCar": {
"type": "number"
},
"flight": {
"type": "number"
}
},
"example": {
"train": 30,
"petrolCar": 50,
"flight": 70
}
},
"status": {
"type": "string",
"description": "Status of the journey (ready, too-soon, no-valid-fares, sold-out, cancelled)"
}
}
},
"^/odyssey/leg/.+$": {
"$oneOf": [
{
"type": "object",
"required": [
"type",
"source",
"origin",
"destination",
"mode",
"operator",
"service",
"departure",
"arrival",
"realTime",
"scheduledDeparture",
"scheduledArrival",
"disruptions",
"callingPoints",
"isDelayed"
],
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"pattern": "/odyssey/leg/.+"
},
"type": {
"enum": [
"timetabled"
]
},
"source": {
"enum": [
"darwin",
"dtd"
]
},
"origin": {
"type": "string",
"pattern": "/station/[A-Z0-9]+",
"example": "/station/CRD",
"description": "A location URI containing a CRS, NLC or TIPLOC code"
},
"destination": {
"type": "string",
"pattern": "/station/[A-Z0-9]+",
"example": "/station/CRD",
"description": "A location URI containing a CRS, NLC or TIPLOC code"
},
"mode": {
"enum": [
"train",
"bus",
"transfer"
]
},
"operator": {
"type": "string",
"pattern": "^/toc/[A-Z]{2}$"
},
"service": {
"type": "object",
"properties": {
"trainUid": {
"type": "string"
},
"retailServiceId": {
"type": "string"
},
"reservationFlag": {
"type": "string"
},
"reservable": {
"type": "array",
"items": [
{
"enum": [
"Possible",
"Compulsory",
"Recommended",
"EssentialForBikes",
"NotReservable"
]
}
]
},
"origin": {
"type": "string"
},
"destination": {
"type": "string"
},
"date": {
"type": "string"
},
"scheduledDeparture": {
"type": "string"
}
}
},
"departure": {
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"arrival": {
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"realTime": {
"description": "Real time timing information",
"type": "object",
"properties": {
"arrival": {
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"arrivalType": {
"description": "Indicates whether the time is scheduled, estimated or actually measured",
"type": "string",
"pattern": "scheduled|estimated|actual"
},
"departure": {
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"departureType": {
"description": "Indicates whether the time is scheduled, estimated or actually measured",
"type": "string",
"pattern": "scheduled|estimated|actual"
}
}
},
"scheduledDeparture": {
"description": "[DEPRECATED] Unix timestamp, please use `departure` instead",
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"scheduledArrival": {
"description": "[DEPRECATED] Unix timestamp, please use `arrival` instead",
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"disruptions": {
"$oneOf": [
{
"type": "string",
"pattern": "/disruption/[0-9\\-]+T[0-9\\:]+/.+"
},
{
"type": "string",
"pattern": "/disruption/[0-9\\-]+/[A-Za-z]{2}/[A-Za-z,]+"
}
]
},
"disruptionReason": {
"type": [
"string",
"null"
]
},
"callingPoints": {
"type": "array",
"items": {
"type": "object",
"required": [
"station",
"arrival",
"departure",
"scheduledArrival",
"scheduledDeparture",
"cancelled",
"pickup",
"dropoff"
],
"additionalProperties": false,
"properties": {
"station": {
"type": "string",
"pattern": "[A-Z]{3}"
},
"departure": {
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"arrival": {
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"realTime": {
"description": "Real time timing information",
"type": "object",
"properties": {
"arrival": {
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"arrivalType": {
"description": "Indicates whether the time is scheduled, estimated or actually measured",
"type": "string",
"pattern": "scheduled|estimated|actual"
},
"departure": {
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"departureType": {
"description": "Indicates whether the time is scheduled, estimated or actually measured",
"type": "string",
"pattern": "scheduled|estimated|actual"
}
}
},
"scheduledDeparture": {
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"scheduledArrival": {
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"cancelled": {
"type": "boolean"
},
"delayed": {
"type": "boolean"
},
"activities": {
"description": "[LEGACY] Generated from pickup/dropoff, please use those fields directly",
"type": "array"
},
"pickup": {
"type": "boolean"
},
"dropoff": {
"type": "boolean"
},
"platform": {
"type": [
"null",
"string"
]
}
}
}
},
"isDelayed": {
"type": "boolean"
}
}
},
{
"type": "object",
"required": [
"type",
"source",
"origin",
"destination",
"departure",
"arrival",
"realTime",
"scheduledDeparture",
"scheduledArrival",
"duration",
"mode",
"originInterchange",
"destinationInterchange"
],
"additionalProperties": false,
"properties": {
"type": {
"enum": [
"fixed"
]
},
"source": {
"enum": [
"darwin",
"dtd"
]
},
"origin": {
"type": "string",
"pattern": "/station/[A-Z0-9]+",
"example": "/station/CRD",
"description": "A location URI containing a CRS, NLC or TIPLOC code"
},
"destination": {
"type": "string",
"pattern": "/station/[A-Z0-9]+",
"example": "/station/CRD",
"description": "A location URI containing a CRS, NLC or TIPLOC code"
},
"departure": {
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"arrival": {
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"realTime": {
"description": "Real time timing information",
"type": "object",
"properties": {
"arrival": {
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"arrivalType": {
"description": "Indicates whether the time is scheduled, estimated or actually measured",
"type": "string",
"pattern": "scheduled|estimated|actual"
},
"departure": {
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"departureType": {
"description": "Indicates whether the time is scheduled, estimated or actually measured",
"type": "string",
"pattern": "scheduled|estimated|actual"
}
}
},
"scheduledDeparture": {
"description": "[DEPRECATED] Unix timestamp, please use `departure` instead",
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"scheduledArrival": {
"description": "[DEPRECATED] Unix timestamp, please use `arrival` instead",
"type": "string",
"examples": [
"2016-01-01T12:00:00"
]
},
"mode": {
"enum": [
"train",
"bus",
"transfer"
]
},
"duration": {
"description": "Time duration in seconds",
"type": "integer"
},
"originInterchange": {
"description": "Time duration in seconds",
"type": "integer"
},
"destinationInterchange": {
"description": "Time duration in seconds",
"type": "integer"
}
}
}
]
}
}
}
}
}
Response example (show)
{
"response": {
"outward": [
"/odyssey/journey/141:EUS_STP_transfer_900_1747799820,141:STP_SHF_Y07201,141:SHF_MAN_C27131",
"/odyssey/journey/141:141:EUS_CRE_W09860,141:CRE_MAN_Y02956"
],
"inward": [],
"fares": {
"/odyssey/journey/141:EUS_STP_transfer_900_1747799820,141:STP_SHF_Y07201,141:SHF_MAN_C27131": {
"outward": [
"/odyssey/fare-option/141:/fare/1072-0438-00129-SOS-001-1----140-1-0--7610-0-1/fare/1072-0438-00129-SOS-000-1----140-1-0--15220-1-0",
"/odyssey/fare-option/141:/fare/1072-0438-00000-SOS-001-1----140-1-0--9650-0-1/fare/1072-0438-00000-SOS-000-1----140-1-0--19300-1-0",
"/odyssey/fare-option/141:/fare/1072-0438-00129-FOS-001-1----140-1-0--10145-0-1/fare/1072-0438-00129-FOS-000-1----140-1-0--20290-1-0",
"/odyssey/fare-option/141:/fare/1072-0438-00000-FOS-001-1----140-1-0--14000-0-1/fare/1072-0438-00000-FOS-000-1----140-1-0--28000-1-0"
],
"inward": [],
"return": []
},
"/odyssey/journey/141:141:EUS_CRE_W09860,141:CRE_MAN_Y02956": {
"outward": [
"/odyssey/fare-option/141:/fare/1072-0438-00000-SOS-001-1----140-1-0--9650-0-1/fare/1072-0438-00000-SOS-000-1----140-1-0--19300-1-0",
"/odyssey/fare-option/141:/fare/1072-0438-00000-FOS-001-1----140-1-0--14000-0-1/fare/1072-0438-00000-FOS-000-1----140-1-0--28000-1-0",
"/odyssey/fare-option/141:/fare/1072-0438-00452-V2A-001-1-VR---140-1-0--9050-0-1/fare/1072-0438-00452-V2A-000-1-VR---140-1-0--18100-1-0"
],
"inward": [],
"return": []
}
},
"faresNotForSale": {
"/odyssey/journey/141:EUS_STP_transfer_900_1747799820,141:STP_SHF_Y07201,141:SHF_MAN_C27131": {
"outward": [
"/odyssey/fare-option/330:/fare/3149-1072-00000-POC-000-1-PG---330-1-0--1470-1-0-1c46",
"/odyssey/fare-option/330:/fare/3149-3174-00000-POC-000-1-PQ---330-1-0--850-1-0/fare/3174-3087-01000-POP-000-1-PQ---330-1-0--380-1-0-RDG:WDT_WDT:PAD-1c46"
],
"inward": [],
"return": []
},
"/odyssey/journey/141:141:EUS_CRE_W09860,141:CRE_MAN_Y02956": {
"outward": [
"/odyssey/fare-option/330:/fare/3149-1072-00000-POC-000-1-PG---330-1-0--1470-1-0-1c46"
],
"inward": [],
"return": []
}
},
"addons": {
"outward": {
"origin": [],
"destination": {
"plusbus": [
"/odyssey/fare-option/addon/fare/0438-J819-00009-PBD-000-1----140-1-0--490-1-1"
]
}
}
},
"availability": {
"/odyssey/journey/141:EUS_STP_transfer_900_1747799820,141:STP_SHF_Y07201,141:SHF_MAN_C27131": {
"/ticket-type/SOS": {
"/route/00129": 9,
"/route/00000": 9
},
"/ticket-type/FOS": {
"/route/00129": 9,
"/route/00000": 9
}
},
"/odyssey/journey/141:141:EUS_CRE_W09860,141:CRE_MAN_Y02956": {
"/ticket-type/SOS": {
"/route/00000": 9
},
"/ticket-type/FOS": {
"/route/00000": 9
},
"/ticket-type/V2A": {
"/route/00452": 9
}
}
},
"splitSavings": []
},
"pagination": {
"outward": {
"current": "origin=1444&destination=2968&outwardDate=2025-05-21&outwardDepartAt=00%3A37&adults=1&children=1&horizon=24&limit=2",
"earlier": "origin=1444&destination=2968&outwardDate=2025-05-21&outwardDepartBy=04%3A57&adults=1&children=1&horizon=24&limit=2",
"later": "origin=1444&destination=2968&outwardDate=2025-05-21&outwardDepartAt=05%3A31&adults=1&children=1&horizon=24&limit=2"
}
},
"links": {
"/odyssey/fare/1072-0438-00129-SOS-001-1----140-1-0--7610": {
"origin": "/station/1072",
"destination": "/station/0438",
"route": "/route/00129",
"price": 7610,
"originalPrice": 15220,
"ticketType": "/ticket-type/SOS",
"restrictionCode": null,
"fareSetter": "SMR",
"railcard": null,
"statusCode": "001",
"xLondon": 0,
"permittedDestinationStations": "/station/0438/permitted-stations/1072/00129",
"permittedOriginStations": "/station/1072/permitted-stations/0438/00129",
"discount": null,
"groups": [
"1072-0438-00129-SOS"
]
},
"/odyssey/fare/1072-0438-00129-SOS-000-1----140-1-0--15220": {
"origin": "/station/1072",
"destination": "/station/0438",
"route": "/route/00129",
"price": 15220,
"originalPrice": 15220,
"ticketType": "/ticket-type/SOS",
"restrictionCode": null,
"fareSetter": "SMR",
"railcard": null,
"statusCode": "000",
"xLondon": 0,
"permittedDestinationStations": "/station/0438/permitted-stations/1072/00129",
"permittedOriginStations": "/station/1072/permitted-stations/0438/00129",
"discount": null,
"groups": [
"1072-0438-00129-SOS"
]
},
"/odyssey/fare-option/141:/fare/1072-0438-00129-SOS-001-1----140-1-0--7610-0-1/fare/1072-0438-00129-SOS-000-1----140-1-0--15220-1-0": {
"totalPrice": 22830,
"labels": [],
"hasETicket": "/has-e-ticket/1072-0438-1555-2968-00129-SOS",
"supplements": [],
"fares": [
{
"adults": 0,
"children": 1,
"fare": "/odyssey/fare/1072-0438-00129-SOS-001-1----140-1-0--7610"
},
{
"adults": 1,
"children": 0,
"fare": "/odyssey/fare/1072-0438-00129-SOS-000-1----140-1-0--15220"
}
],
"validUntil": "2025-05-25T23:59:59"
},
"/odyssey/fare/1072-0438-00000-SOS-001-1----140-1-0--9650": {
"origin": "/station/1072",
"destination": "/station/0438",
"route": "/route/00000",
"price": 9650,
"originalPrice": 19300,
"ticketType": "/ticket-type/SOS",
"restrictionCode": null,
"fareSetter": "IWC",
"railcard": null,
"statusCode": "001",
"xLondon": 0,
"permittedDestinationStations": "/station/0438/permitted-stations/1072/00000",
"permittedOriginStations": "/station/1072/permitted-stations/0438/00000",
"discount": null,
"groups": [
"1072-0438-00000-SOS"
]
},
"/odyssey/fare/1072-0438-00000-SOS-000-1----140-1-0--19300": {
"origin": "/station/1072",
"destination": "/station/0438",
"route": "/route/00000",
"price": 19300,
"originalPrice": 19300,
"ticketType": "/ticket-type/SOS",
"restrictionCode": null,
"fareSetter": "IWC",
"railcard": null,
"statusCode": "000",
"xLondon": 0,
"permittedDestinationStations": "/station/0438/permitted-stations/1072/00000",
"permittedOriginStations": "/station/1072/permitted-stations/0438/00000",
"discount": null,
"groups": [
"1072-0438-00000-SOS"
]
},
"/odyssey/fare-option/141:/fare/1072-0438-00000-SOS-001-1----140-1-0--9650-0-1/fare/1072-0438-00000-SOS-000-1----140-1-0--19300-1-0": {
"totalPrice": 28950,
"labels": [],
"hasETicket": "/has-e-ticket/1072-0438-1444-2968-00000-SOS",
"supplements": [],
"fares": [
{
"adults": 0,
"children": 1,
"fare": "/odyssey/fare/1072-0438-00000-SOS-001-1----140-1-0--9650"
},
{
"adults": 1,
"children": 0,
"fare": "/odyssey/fare/1072-0438-00000-SOS-000-1----140-1-0--19300"
}
],
"validUntil": "2025-05-25T23:59:59"
},
"/odyssey/fare/1072-0438-00129-FOS-001-1----140-1-0--10145": {
"origin": "/station/1072",
"destination": "/station/0438",
"route": "/route/00129",
"price": 10145,
"originalPrice": 20290,
"ticketType": "/ticket-type/FOS",
"restrictionCode": null,
"fareSetter": "SMR",
"railcard": null,
"statusCode": "001",
"xLondon": 0,
"permittedDestinationStations": "/station/0438/permitted-stations/1072/00129",
"permittedOriginStations": "/station/1072/permitted-stations/0438/00129",
"discount": null,
"groups": [
"1072-0438-00129-FOS"
]
},
"/odyssey/fare/1072-0438-00129-FOS-000-1----140-1-0--20290": {
"origin": "/station/1072",
"destination": "/station/0438",
"route": "/route/00129",
"price": 20290,
"originalPrice": 20290,
"ticketType": "/ticket-type/FOS",
"restrictionCode": null,
"fareSetter": "SMR",
"railcard": null,
"statusCode": "000",
"xLondon": 0,
"permittedDestinationStations": "/station/0438/permitted-stations/1072/00129",
"permittedOriginStations": "/station/1072/permitted-stations/0438/00129",
"discount": null,
"groups": [
"1072-0438-00129-FOS"
]
},
"/odyssey/fare-option/141:/fare/1072-0438-00129-FOS-001-1----140-1-0--10145-0-1/fare/1072-0438-00129-FOS-000-1----140-1-0--20290-1-0": {
"totalPrice": 30435,
"labels": [
"first-class"
],
"hasETicket": "/has-e-ticket/1072-0438-1555-2968-00129-FOS",
"supplements": [],
"fares": [
{
"adults": 0,
"children": 1,
"fare": "/odyssey/fare/1072-0438-00129-FOS-001-1----140-1-0--10145"
},
{
"adults": 1,
"children": 0,
"fare": "/odyssey/fare/1072-0438-00129-FOS-000-1----140-1-0--20290"
}
],
"validUntil": "2025-05-25T23:59:59"
},
"/odyssey/fare/1072-0438-00000-FOS-001-1----140-1-0--14000": {
"origin": "/station/1072",
"destination": "/station/0438",
"route": "/route/00000",
"price": 14000,
"originalPrice": 28000,
"ticketType": "/ticket-type/FOS",
"restrictionCode": null,
"fareSetter": "IWC",
"railcard": null,
"statusCode": "001",
"xLondon": 0,
"permittedDestinationStations": "/station/0438/permitted-stations/1072/00000",
"permittedOriginStations": "/station/1072/permitted-stations/0438/00000",
"discount": null,
"groups": [
"1072-0438-00000-FOS"
]
},
"/odyssey/fare/1072-0438-00000-FOS-000-1----140-1-0--28000": {
"origin": "/station/1072",
"destination": "/station/0438",
"route": "/route/00000",
"price": 28000,
"originalPrice": 28000,
"ticketType": "/ticket-type/FOS",
"restrictionCode": null,
"fareSetter": "IWC",
"railcard": null,
"statusCode": "000",
"xLondon": 0,
"permittedDestinationStations": "/station/0438/permitted-stations/1072/00000",
"permittedOriginStations": "/station/1072/permitted-stations/0438/00000",
"discount": null,
"groups": [
"1072-0438-00000-FOS"
]
},
"/odyssey/fare-option/141:/fare/1072-0438-00000-FOS-001-1----140-1-0--14000-0-1/fare/1072-0438-00000-FOS-000-1----140-1-0--28000-1-0": {
"totalPrice": 42000,
"labels": [
"first-class"
],
"hasETicket": "/has-e-ticket/1072-0438-1444-2968-00000-FOS",
"supplements": [],
"fares": [
{
"adults": 0,
"children": 1,
"fare": "/odyssey/fare/1072-0438-00000-FOS-001-1----140-1-0--14000"
},
{
"adults": 1,
"children": 0,
"fare": "/odyssey/fare/1072-0438-00000-FOS-000-1----140-1-0--28000"
}
],
"validUntil": "2025-05-25T23:59:59"
},
"/odyssey/fare/1072-0438-00452-V2A-001-1-VR---140-1-0--9050": {
"origin": "/station/1072",
"destination": "/station/0438",
"route": "/route/00452",
"price": 9050,
"originalPrice": 18100,
"ticketType": "/ticket-type/V2A",
"restrictionCode": "VR",
"fareSetter": "IWC",
"railcard": null,
"statusCode": "001",
"xLondon": 0,
"permittedDestinationStations": "/station/0438/permitted-stations/1072/00452",
"permittedOriginStations": "/station/1072/permitted-stations/0438/00452",
"discount": null,
"groups": [
"1072-0438-00452-V2A"
]
},
"/odyssey/fare/1072-0438-00452-V2A-000-1-VR---140-1-0--18100": {
"origin": "/station/1072",
"destination": "/station/0438",
"route": "/route/00452",
"price": 18100,
"originalPrice": 18100,
"ticketType": "/ticket-type/V2A",
"restrictionCode": "VR",
"fareSetter": "IWC",
"railcard": null,
"statusCode": "000",
"xLondon": 0,
"permittedDestinationStations": "/station/0438/permitted-stations/1072/00452",
"permittedOriginStations": "/station/1072/permitted-stations/0438/00452",
"discount": null,
"groups": [
"1072-0438-00452-V2A"
]
},
"/odyssey/fare-option/141:/fare/1072-0438-00452-V2A-001-1-VR---140-1-0--9050-0-1/fare/1072-0438-00452-V2A-000-1-VR---140-1-0--18100-1-0": {
"totalPrice": 27150,
"labels": [
"advance"
],
"hasETicket": "/has-e-ticket/1072-0438-1444-2968-00452-V2A",
"supplements": [],
"fares": [
{
"adults": 0,
"children": 1,
"fare": "/odyssey/fare/1072-0438-00452-V2A-001-1-VR---140-1-0--9050"
},
{
"adults": 1,
"children": 0,
"fare": "/odyssey/fare/1072-0438-00452-V2A-000-1-VR---140-1-0--18100"
}
],
"validUntil": "2025-05-23T23:59:59"
},
"/odyssey/fare-option/addon/fare/0438-J819-00009-PBD-000-1----140-1-0--490-1-1": {
"totalPrice": 980,
"labels": [
"addon",
"plusbus"
],
"supplements": [],
"fares": [
{
"adults": 1,
"children": 0,
"fare": "/odyssey/fare/0438-J819-00009-PBD-000-1----140-1-0--490"
},
{
"adults": 0,
"children": 1,
"fare": "/odyssey/fare/0438-J819-00009-PBD-000-1----140-1-0--490"
}
]
},
"/odyssey/fare/0438-J819-00009-PBD-000-1----140-1-0--490": {
"origin": "/station/0438",
"destination": "/station/J819",
"route": "/route/00009",
"price": 490,
"originalPrice": 490,
"ticketType": "/ticket-type/PBD",
"restrictionCode": null,
"fareSetter": "PLB",
"railcard": null,
"statusCode": "000",
"xLondon": 0,
"permittedDestinationStations": "/station/J819/permitted-stations/0438/00009",
"permittedOriginStations": "/station/0438/permitted-stations/J819/00009",
"discount": null,
"groups": [
"plusbus-PBD"
]
},
"/odyssey/leg/EUS_STP_transfer_900_1747799820": {
"type": "fixed",
"source": "dtd",
"origin": "/station/EUS",
"destination": "/station/STP",
"departure": "2025-05-21T04:57:00",
"arrival": "2025-05-21T05:12:00",
"scheduledDeparture": "2025-05-21T04:57:00",
"scheduledArrival": "2025-05-21T05:12:00",
"realTime": {
"departure": "2025-05-21T04:57:00",
"departureType": "scheduled",
"arrival": "2025-05-21T05:12:00",
"arrivalType": "scheduled"
},
"duration": 900,
"mode": "transfer",
"originInterchange": 900,
"destinationInterchange": 900
},
"/odyssey/leg/141:STP_SHF_Y07201": {
"type": "timetabled",
"source": "dtd",
"origin": "/station/STP",
"destination": "/station/SHF",
"mode": "train",
"operator": "/toc/EM",
"service": {
"trainUid": "Y07201",
"retailServiceId": "EM110100",
"reservationFlag": "S",
"reservable": [
"Possible"
],
"origin": "/station/STP",
"destination": "/station/SHF",
"date": "2025-05-21",
"scheduledDeparture": "2025-05-21T05:27:00"
},
"departure": "2025-05-21T05:27:00",
"arrival": "2025-05-21T07:42:00",
"realTime": {
"departure": "2025-05-21T05:27:00",
"departureType": "scheduled",
"arrival": "2025-05-21T07:42:00",
"arrivalType": "scheduled"
},
"scheduledDeparture": "2025-05-21T05:27:00",
"scheduledArrival": "2025-05-21T07:42:00",
"disruptions": "/disruption/2025-05-21T05:27:00/EM_STP_SHF_Y07201",
"callingPoints": [
{
"station": "/station/STP",
"departure": "2025-05-21T05:27:00",
"arrival": "2025-05-21T05:27:00",
"scheduledDeparture": "2025-05-21T05:27:00",
"scheduledArrival": "2025-05-21T05:27:00",
"realTime": {
"departure": "2025-05-21T05:27:00",
"departureType": "scheduled",
"arrival": "2025-05-21T05:27:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": "4",
"pickup": true,
"dropoff": false,
"activities": [
"PickUpOnly"
]
},
{
"station": "/station/LEI",
"departure": "2025-05-21T06:37:00",
"arrival": "2025-05-21T06:36:00",
"scheduledDeparture": "2025-05-21T06:37:00",
"scheduledArrival": "2025-05-21T06:36:00",
"realTime": {
"departure": "2025-05-21T06:37:00",
"departureType": "scheduled",
"arrival": "2025-05-21T06:36:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": "2",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/LBO",
"departure": "2025-05-21T06:47:00",
"arrival": "2025-05-21T06:46:00",
"scheduledDeparture": "2025-05-21T06:47:00",
"scheduledArrival": "2025-05-21T06:46:00",
"realTime": {
"departure": "2025-05-21T06:47:00",
"departureType": "scheduled",
"arrival": "2025-05-21T06:46:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": "1",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/EMD",
"departure": "2025-05-21T06:55:00",
"arrival": "2025-05-21T06:54:00",
"scheduledDeparture": "2025-05-21T06:55:00",
"scheduledArrival": "2025-05-21T06:54:00",
"realTime": {
"departure": "2025-05-21T06:55:00",
"departureType": "scheduled",
"arrival": "2025-05-21T06:54:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": "1",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/LGE",
"departure": "2025-05-21T06:59:00",
"arrival": "2025-05-21T06:58:00",
"scheduledDeparture": "2025-05-21T06:59:00",
"scheduledArrival": "2025-05-21T06:58:00",
"realTime": {
"departure": "2025-05-21T06:59:00",
"departureType": "scheduled",
"arrival": "2025-05-21T06:58:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": null,
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/DBY",
"departure": "2025-05-21T07:10:00",
"arrival": "2025-05-21T07:08:00",
"scheduledDeparture": "2025-05-21T07:10:00",
"scheduledArrival": "2025-05-21T07:08:00",
"realTime": {
"departure": "2025-05-21T07:10:00",
"departureType": "scheduled",
"arrival": "2025-05-21T07:08:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": "5",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/CHD",
"departure": "2025-05-21T07:28:00",
"arrival": "2025-05-21T07:27:00",
"scheduledDeparture": "2025-05-21T07:28:00",
"scheduledArrival": "2025-05-21T07:27:00",
"realTime": {
"departure": "2025-05-21T07:28:00",
"departureType": "scheduled",
"arrival": "2025-05-21T07:27:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": "1",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/SHF",
"departure": "2025-05-21T07:42:00",
"arrival": "2025-05-21T07:42:00",
"scheduledDeparture": "2025-05-21T07:42:00",
"scheduledArrival": "2025-05-21T07:42:00",
"realTime": {
"departure": "2025-05-21T07:42:00",
"departureType": "scheduled",
"arrival": "2025-05-21T07:42:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": "5A",
"pickup": false,
"dropoff": true,
"activities": [
"SetDownOnly"
]
}
],
"isDelayed": false
},
"/odyssey/leg/141:SHF_MAN_C27131": {
"type": "timetabled",
"source": "darwin",
"origin": "/station/SHF",
"destination": "/station/MAN",
"mode": "train",
"operator": "/toc/TP",
"service": {
"trainUid": "C27131",
"retailServiceId": "TP601700",
"reservationFlag": "S",
"reservable": [
"Possible"
],
"origin": "/station/CLE",
"destination": "/station/LIV",
"date": "2025-05-21",
"scheduledDeparture": "2025-05-21T06:26:00"
},
"departure": "2025-05-21T08:08:00",
"arrival": "2025-05-21T09:05:00",
"realTime": {
"departure": "2025-05-21T08:08:00",
"departureType": "scheduled",
"arrival": "2025-05-21T09:05:00",
"arrivalType": "scheduled"
},
"scheduledDeparture": "2025-05-21T08:08:00",
"scheduledArrival": "2025-05-21T09:05:00",
"disruptions": "/disruption/2025-05-21T08:08:00/TP_SHF_MAN_C27131",
"callingPoints": [
{
"station": "/station/SHF",
"departure": "2025-05-21T08:08:00",
"arrival": "2025-05-21T08:06:00",
"scheduledDeparture": "2025-05-21T08:08:00",
"scheduledArrival": "2025-05-21T08:06:00",
"realTime": {
"departure": "2025-05-21T08:08:00",
"departureType": "scheduled",
"arrival": "2025-05-21T08:06:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": true,
"platform": null,
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/DOR",
"departure": "2025-05-21T08:14:00",
"arrival": "2025-05-21T08:14:00",
"scheduledDeparture": "2025-05-21T08:14:00",
"scheduledArrival": "2025-05-21T08:14:00",
"realTime": {
"departure": "2025-05-21T08:14:00",
"departureType": "scheduled",
"arrival": "2025-05-21T08:14:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": true,
"platform": null,
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/SPT",
"departure": "2025-05-21T08:55:00",
"arrival": "2025-05-21T08:53:00",
"scheduledDeparture": "2025-05-21T08:55:00",
"scheduledArrival": "2025-05-21T08:53:00",
"realTime": {
"departure": "2025-05-21T08:55:00",
"departureType": "scheduled",
"arrival": "2025-05-21T08:53:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": true,
"platform": null,
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/MAN",
"departure": "2025-05-21T09:07:00",
"arrival": "2025-05-21T09:05:00",
"scheduledDeparture": "2025-05-21T09:07:00",
"scheduledArrival": "2025-05-21T09:05:00",
"realTime": {
"departure": "2025-05-21T09:07:00",
"departureType": "scheduled",
"arrival": "2025-05-21T09:05:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": true,
"platform": null,
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
}
],
"isDelayed": false
},
"/odyssey/journey/141:EUS_STP_transfer_900_1747799820,141:STP_SHF_Y07201,141:SHF_MAN_C27131": {
"id": "/odyssey/journey/141:EUS_STP_transfer_900_1747799820,141:STP_SHF_Y07201,141:SHF_MAN_C27131",
"origin": "/station/EUS",
"destination": "/station/MAN",
"departure": "2025-05-21T05:27:00",
"arrival": "2025-05-21T09:05:00",
"realTime": {
"departure": "2025-05-21T05:27:00",
"departureType": "scheduled",
"arrival": "2025-05-21T09:05:00",
"arrivalType": "scheduled"
},
"scheduledDeparture": "2025-05-21T05:27:00",
"scheduledArrival": "2025-05-21T09:05:00",
"legs": [
"/odyssey/leg/EUS_STP_transfer_900_1747799820",
"/odyssey/leg/141:STP_SHF_Y07201",
"/odyssey/leg/141:SHF_MAN_C27131"
],
"disruptions": "/disruption/2025-05-21T04:57:00/EUS_STP_transfer,EM_STP_SHF_Y07201,TP_SHF_MAN_C27131",
"isReservationCompulsory": false,
"isReservationPossible": true,
"isOvertaken": true,
"overtakingJourneysCount": 4,
"status": "ready",
"boardingTime": null,
"alightingTime": null,
"distance": 207
},
"/odyssey/leg/141:EUS_CRE_W09860": {
"type": "timetabled",
"source": "dtd",
"origin": "/station/EUS",
"destination": "/station/CRE",
"mode": "train",
"operator": "/toc/VT",
"service": {
"trainUid": "W09860",
"retailServiceId": "VT600000",
"reservationFlag": "A",
"reservable": [
"Compulsory"
],
"origin": "/station/EUS",
"destination": "/station/GLC",
"date": "2025-05-21",
"scheduledDeparture": "2025-05-21T05:31:00"
},
"departure": "2025-05-21T05:31:00",
"arrival": "2025-05-21T07:23:00",
"realTime": {
"departure": "2025-05-21T05:31:00",
"departureType": "scheduled",
"arrival": "2025-05-21T07:23:00",
"arrivalType": "scheduled"
},
"scheduledDeparture": "2025-05-21T05:31:00",
"scheduledArrival": "2025-05-21T07:23:00",
"disruptions": "/disruption/2025-05-21T05:31:00/VT_EUS_CRE_W09860",
"callingPoints": [
{
"station": "/station/EUS",
"departure": "2025-05-21T05:31:00",
"arrival": "2025-05-21T05:31:00",
"scheduledDeparture": "2025-05-21T05:31:00",
"scheduledArrival": "2025-05-21T05:31:00",
"realTime": {
"departure": "2025-05-21T05:31:00",
"departureType": "scheduled",
"arrival": "2025-05-21T05:31:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": "5",
"pickup": true,
"dropoff": false,
"activities": [
"PickUpOnly"
]
},
{
"station": "/station/WFJ",
"departure": "2025-05-21T05:48:00",
"arrival": "2025-05-21T05:48:00",
"scheduledDeparture": "2025-05-21T05:48:00",
"scheduledArrival": "2025-05-21T05:48:00",
"realTime": {
"departure": "2025-05-21T05:48:00",
"departureType": "scheduled",
"arrival": "2025-05-21T05:48:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": "8",
"pickup": true,
"dropoff": false,
"activities": [
"PickUpOnly"
]
},
{
"station": "/station/MKC",
"departure": "2025-05-21T06:17:00",
"arrival": "2025-05-21T06:16:00",
"scheduledDeparture": "2025-05-21T06:17:00",
"scheduledArrival": "2025-05-21T06:16:00",
"realTime": {
"departure": "2025-05-21T06:17:00",
"departureType": "scheduled",
"arrival": "2025-05-21T06:16:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": "2",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/RUG",
"departure": "2025-05-21T06:39:00",
"arrival": "2025-05-21T06:37:00",
"scheduledDeparture": "2025-05-21T06:39:00",
"scheduledArrival": "2025-05-21T06:37:00",
"realTime": {
"departure": "2025-05-21T06:39:00",
"departureType": "scheduled",
"arrival": "2025-05-21T06:37:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": "1",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/CRE",
"departure": "2025-05-21T07:27:00",
"arrival": "2025-05-21T07:23:00",
"scheduledDeparture": "2025-05-21T07:27:00",
"scheduledArrival": "2025-05-21T07:23:00",
"realTime": {
"departure": "2025-05-21T07:27:00",
"departureType": "scheduled",
"arrival": "2025-05-21T07:23:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": "11",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
}
],
"isDelayed": false
},
"/odyssey/leg/141:CRE_MAN_Y02956": {
"type": "timetabled",
"source": "dtd",
"origin": "/station/CRE",
"destination": "/station/MAN",
"mode": "train",
"operator": "/toc/NT",
"service": {
"trainUid": "Y02956",
"retailServiceId": "NT718400",
"reservationFlag": "S",
"reservable": [
"Possible"
],
"origin": "/station/CRE",
"destination": "/station/MAN",
"date": "2025-05-21",
"scheduledDeparture": "2025-05-21T07:46:00"
},
"departure": "2025-05-21T07:46:00",
"arrival": "2025-05-21T08:42:00",
"realTime": {
"departure": "2025-05-21T07:46:00",
"departureType": "scheduled",
"arrival": "2025-05-21T08:42:00",
"arrivalType": "scheduled"
},
"scheduledDeparture": "2025-05-21T07:46:00",
"scheduledArrival": "2025-05-21T08:42:00",
"disruptions": "/disruption/2025-05-21T07:46:00/NT_CRE_MAN_Y02956",
"callingPoints": [
{
"station": "/station/CRE",
"departure": "2025-05-21T07:46:00",
"arrival": "2025-05-21T07:46:00",
"scheduledDeparture": "2025-05-21T07:46:00",
"scheduledArrival": "2025-05-21T07:46:00",
"realTime": {
"departure": "2025-05-21T07:46:00",
"departureType": "scheduled",
"arrival": "2025-05-21T07:46:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": "1",
"pickup": true,
"dropoff": false,
"activities": [
"PickUpOnly"
]
},
{
"station": "/station/SDB",
"departure": "2025-05-21T07:53:00",
"arrival": "2025-05-21T07:53:00",
"scheduledDeparture": "2025-05-21T07:53:00",
"scheduledArrival": "2025-05-21T07:53:00",
"realTime": {
"departure": "2025-05-21T07:53:00",
"departureType": "scheduled",
"arrival": "2025-05-21T07:53:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": "2",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/HCH",
"departure": "2025-05-21T07:58:00",
"arrival": "2025-05-21T07:57:00",
"scheduledDeparture": "2025-05-21T07:58:00",
"scheduledArrival": "2025-05-21T07:57:00",
"realTime": {
"departure": "2025-05-21T07:58:00",
"departureType": "scheduled",
"arrival": "2025-05-21T07:57:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": null,
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/GTR",
"departure": "2025-05-21T08:01:00",
"arrival": "2025-05-21T08:01:00",
"scheduledDeparture": "2025-05-21T08:01:00",
"scheduledArrival": "2025-05-21T08:01:00",
"realTime": {
"departure": "2025-05-21T08:01:00",
"departureType": "scheduled",
"arrival": "2025-05-21T08:01:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": null,
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/CEL",
"departure": "2025-05-21T08:05:00",
"arrival": "2025-05-21T08:05:00",
"scheduledDeparture": "2025-05-21T08:05:00",
"scheduledArrival": "2025-05-21T08:05:00",
"realTime": {
"departure": "2025-05-21T08:05:00",
"departureType": "scheduled",
"arrival": "2025-05-21T08:05:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": null,
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/ALD",
"departure": "2025-05-21T08:10:00",
"arrival": "2025-05-21T08:09:00",
"scheduledDeparture": "2025-05-21T08:10:00",
"scheduledArrival": "2025-05-21T08:09:00",
"realTime": {
"departure": "2025-05-21T08:10:00",
"departureType": "scheduled",
"arrival": "2025-05-21T08:09:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": "1",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/WML",
"departure": "2025-05-21T08:13:00",
"arrival": "2025-05-21T08:13:00",
"scheduledDeparture": "2025-05-21T08:13:00",
"scheduledArrival": "2025-05-21T08:13:00",
"realTime": {
"departure": "2025-05-21T08:13:00",
"departureType": "scheduled",
"arrival": "2025-05-21T08:13:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": "3",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/HTH",
"departure": "2025-05-21T08:16:00",
"arrival": "2025-05-21T08:16:00",
"scheduledDeparture": "2025-05-21T08:16:00",
"scheduledArrival": "2025-05-21T08:16:00",
"realTime": {
"departure": "2025-05-21T08:16:00",
"departureType": "scheduled",
"arrival": "2025-05-21T08:16:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": "2",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/CHU",
"departure": "2025-05-21T08:21:00",
"arrival": "2025-05-21T08:21:00",
"scheduledDeparture": "2025-05-21T08:21:00",
"scheduledArrival": "2025-05-21T08:21:00",
"realTime": {
"departure": "2025-05-21T08:21:00",
"departureType": "scheduled",
"arrival": "2025-05-21T08:21:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": "1",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/SPT",
"departure": "2025-05-21T08:26:00",
"arrival": "2025-05-21T08:26:00",
"scheduledDeparture": "2025-05-21T08:26:00",
"scheduledArrival": "2025-05-21T08:26:00",
"realTime": {
"departure": "2025-05-21T08:26:00",
"departureType": "scheduled",
"arrival": "2025-05-21T08:26:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": "4",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/HTC",
"departure": "2025-05-21T08:30:00",
"arrival": "2025-05-21T08:30:00",
"scheduledDeparture": "2025-05-21T08:30:00",
"scheduledArrival": "2025-05-21T08:30:00",
"realTime": {
"departure": "2025-05-21T08:30:00",
"departureType": "scheduled",
"arrival": "2025-05-21T08:30:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": "2",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/LVM",
"departure": "2025-05-21T08:33:00",
"arrival": "2025-05-21T08:33:00",
"scheduledDeparture": "2025-05-21T08:33:00",
"scheduledArrival": "2025-05-21T08:33:00",
"realTime": {
"departure": "2025-05-21T08:33:00",
"departureType": "scheduled",
"arrival": "2025-05-21T08:33:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": "2",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/MAN",
"departure": "2025-05-21T08:42:00",
"arrival": "2025-05-21T08:42:00",
"scheduledDeparture": "2025-05-21T08:42:00",
"scheduledArrival": "2025-05-21T08:42:00",
"realTime": {
"departure": "2025-05-21T08:42:00",
"departureType": "scheduled",
"arrival": "2025-05-21T08:42:00",
"arrivalType": "scheduled"
},
"cancelled": false,
"delayed": false,
"platform": "3",
"pickup": false,
"dropoff": true,
"activities": [
"SetDownOnly"
]
}
],
"isDelayed": false
},
"/odyssey/journey/141:141:EUS_CRE_W09860,141:CRE_MAN_Y02956": {
"id": "/odyssey/journey/141:141:EUS_CRE_W09860,141:CRE_MAN_Y02956",
"origin": "/station/EUS",
"destination": "/station/MAN",
"departure": "2025-05-21T05:31:00",
"arrival": "2025-05-21T08:42:00",
"realTime": {
"departure": "2025-05-21T05:31:00",
"departureType": "scheduled",
"arrival": "2025-05-21T08:42:00",
"arrivalType": "scheduled"
},
"scheduledDeparture": "2025-05-21T05:31:00",
"scheduledArrival": "2025-05-21T08:42:00",
"legs": [
"/odyssey/leg/141:EUS_CRE_W09860",
"/odyssey/leg/141:CRE_MAN_Y02956"
],
"disruptions": "/disruption/2025-05-21T05:31:00/VT_EUS_CRE_W09860,NT_CRE_MAN_Y02956",
"isReservationCompulsory": true,
"isReservationPossible": true,
"isOvertaken": false,
"overtakingJourneysCount": 0,
"status": "ready",
"boardingTime": null,
"alightingTime": null,
"distance": 185
}
},
"messages": []
}
GET /odyssey/rover-search
Find Rangers & Rovers
Parameters
number adults (required)
Example: 2
number children (required)
Example: 1
string railcards
Example: YNG,EDU
string startDate (required)
Example: 1539475200
string roverCode (required)
code of Rover you are looking for
Example: 14R
200 application/json
Response schema (show)
{
"type": "object",
"properties": {
"response": {
"type": "object",
"required": [
"fares"
],
"additionalProperties": false,
"properties": {
"fares": {
"type": "array",
"description": "array of RoverOption links, which were selected as a best possible option for passenger set",
"items": {
"type": "string"
}
}
}
},
"links": {
"type": "object"
}
}
}
Response example (show)
{
"response": {
"fares": [
"/odyssey/rover-option/1234-I662-14R-1-0-77815-DIS-2018164-1234-I662-14R-1-0-77815-DIS-2018164",
"/odyssey/rover-option/1234-I662-14R-1-0-50950-DIS-2018164-1234-I662-14R-1-0-50950-DIS-2018164"
]
},
"links": {
"1234-I662-14R-1-0-77815-DIS-2018164": {
"origin": "/station/1234",
"destination": "/station/I662",
"restrictionCode": "/restriction/AL",
"isFirstClass": true,
"price": 77815,
"railcard": "/railcard/DIS",
"type": "/rover-type/14R",
"validityPeriod": {
"from": "2018-06-13 00:00:00",
"until": "2018-06-26 23:59:59"
}
},
"1234-I662-14R-1-0-50950-DIS-2018164": {
"origin": "/station/1234",
"destination": "/station/I662",
"restrictionCode": "/restriction/AL",
"isFirstClass": false,
"price": 50950,
"railcard": "/railcard/DIS",
"type": "/rover-type/14R",
"validityPeriod": {
"from": "2018-06-13 00:00:00",
"until": "2018-06-26 23:59:59"
}
},
"/odyssey/rover-option/1234-I662-14R-1-0-77815-DIS-2018164-1234-I662-14R-1-0-77815-DIS-2018164": {
"fares": [
{
"adults": 1,
"children": 0,
"fare": "/odyssey/rover/1234-I662-14R-1-0-77815-DIS-2018164"
},
{
"adults": 1,
"children": 0,
"fare": "/odyssey/rover/1234-I662-14R-1-0-77815-DIS-2018164"
}
]
},
"/odyssey/rover-option/1234-I662-14R-1-0-50950-DIS-2018164-1234-I662-14R-1-0-50950-DIS-2018164": {
"fares": [
{
"adults": 1,
"children": 0,
"rover": "/odyssey/rover/1234-I662-14R-1-0-50950-DIS-2018164"
},
{
"adults": 1,
"children": 0,
"rover": "/odyssey/rover/1234-I662-14R-1-0-50950-DIS-2018164"
}
]
},
"/station/7648": [],
"/station/I662": [],
"/restriction/AL": [],
"/rover-type/14R": [],
"/railcard/DIS": []
}
}
GET /odyssey/rover-option/:id
Return rover option.
200 application/json
Response schema (show)
{
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"fares": {
"type": "array",
"description": "List of rover uses.",
"items": {
"type": "object",
"properties": {
"adults": {
"type": "number"
},
"children": {
"type": "number"
},
"rover": {
"type": "string",
"description": "URI of rover-type"
}
}
}
}
},
"required": [
"fares"
]
}
}
}
Response example (show)
{
"data": {
"fares": [
{
"adults": 1,
"children": 0,
"fare": "/odyssey/rover/1234-I662-14R-1-0-77815-DIS-2018164"
},
{
"adults": 0,
"children": 1,
"fare": "/odyssey/rover/1234-I662-14R-0-1-58950--2018164"
}
]
},
"links": {
"1234-I662-14R-1-0-77815-DIS-2018164": {
"origin": "/station/1234",
"destination": "/station/I662",
"restrictionCode": "/restriction/AL",
"isFirstClass": true,
"price": 77815,
"railcard": "/railcard/DIS",
"type": "/rover-type/14R",
"validityPeriod": {
"from": "2018-06-13 00:00:00",
"until": "2018-06-26 23:59:59"
}
},
"1234-I662-14R-0-1-58950--2018164": {
"origin": "/station/1234",
"destination": "/station/I662",
"restrictionCode": "/restriction/AL",
"isFirstClass": true,
"price": 58950,
"railcard": "/railcard/null",
"type": "/rover-type/14R",
"validityPeriod": {
"from": "2018-06-13 00:00:00",
"until": "2018-06-26 23:59:59"
}
},
"/station/7648": [],
"/station/I662": [],
"/restriction/AL": [],
"/rover-type/14R": [],
"/railcard/DIS": []
}
}
GET /odyssey/rover/:id
Return rover.
200 application/json
Response schema (show)
{
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"origin": {
"type": "string",
"description": "origin station URI. It will be always retailer NLC uri."
},
"destination": {
"type": "string",
"description": "origin station URI. It will be always rover accounting code uri."
},
"price": {
"type": "number",
"description": "Sum of 'rovers' prices"
},
"railcard": {
"type": [
"string",
"null"
]
},
"restrictionCode": {
"type": "string",
"description": "Restriction code"
},
"isFirstClass": {
"type": "boolean"
},
"validityPeriod": {
"type": "object",
"properties": {
"from": {
"type": "string"
},
"until": {
"type": "string"
}
}
}
},
"required": [
"origin",
"destination",
"price",
"railcard",
"restrictionCode",
"isFirstClass",
"validityPeriod"
]
}
}
}
Response example (show)
{
"data": {
"origin": "/station/1234",
"destination": "/station/I662",
"restrictionCode": "AL",
"isFirstClass": true,
"price": 77815,
"railcard": "/railcard/DIS",
"type": "/rover-type/14R",
"validityPeriod": {
"from": "2018-06-13 00:00:00",
"until": "2018-06-26 23:59:59"
}
},
"links": {
"/station/7648": [],
"/station/I662": [],
"/restriction/AL": [],
"/rover-type/14R": [],
"/railcard/DIS": []
}
}
GET /odyssey/loading
Service loading information
Parameters
string tenant
Tenant name
Headers
string X-Tenant
Tenant name
200 application/json
Response schema (show)
{
"type": "object",
"required": [
"data"
],
"additionalProperties": false,
"properties": {
"data": {
"type": "array",
"items": {
"required": [
"rid",
"uid",
"toc",
"departure",
"arrival",
"stops"
],
"additionalProperties": false,
"properties": {
"rid": {
"type": "string",
"pattern": "[0-9]+"
},
"uid": {
"type": "string",
"pattern": "[A-Z]+[0-9]+"
},
"toc": {
"type": "string",
"pattern": "[A-Z]{2}"
},
"departure": {
"type": "string",
"pattern": "\\d{4}\\-\\d{2}\\-\\d{2}T\\d{2}:\\d{2}"
},
"arrival": {
"type": "string",
"pattern": "\\d{4}\\-\\d{2}\\-\\d{2}T\\d{2}:\\d{2}"
},
"stops": {
"type": "array",
"items": {
"type": "object",
"required": [
"crs",
"departure"
],
"additionalProperties": false,
"properties": {
"crs": {
"type": "string",
"pattern": "[A-Z]{3}"
},
"departure": {
"type": "string",
"pattern": "\\d{4}\\-\\d{2}\\-\\d{2}T\\d{2}:\\d{2}"
},
"averageLoading": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"observedLoading": {
"type": "object"
}
}
}
},
"coaches": {
"type": "object"
}
}
}
},
"links": {
"type": "object"
}
}
}
Response example (show)
{
"data": [
{
"rid": "201901317119776",
"uid": "G19776",
"toc": "GX",
"departure": "2019-01-31T06:14",
"arrival": "2019-01-31T07:14",
"stops": [
{
"crs": "BTN",
"departure": "2019-01-31T06:14",
"averageLoading": 25,
"observedLoading": {
"1": 10,
"2": 20
}
},
{
"crs": "HSK",
"departure": "2019-01-31T06:23",
"averageLoading": 30,
"observedLoading": {
"1": 15,
"2": 25
}
}
],
"coaches": {
"1": {
"class": "Standard",
"toiletType": "Accessible",
"toiletStatus": "Unknown"
},
"2": {
"class": "Standard",
"toiletType": "Standard",
"toiletStatus": "Unknown"
}
}
},
{
"rid": "201901317119837",
"uid": "G19837",
"toc": "GX",
"departure": "2019-01-31T06:29",
"arrival": "2019-01-31T07:28",
"stops": [
{
"crs": "BTN",
"departure": "2019-01-31T06:29"
},
{
"crs": "HSK",
"departure": "2019-01-31T06:38"
}
]
}
],
"links": []
}
GET /odyssey/travelcard
Query standalone Travelcard fares. Travelcards are only available in the London area.
Parameters
string date (required)
Date of travel on the travelcard.
Example: 1540425600
integer adults (required)
Number of adult fares.
Example: 1
integer children
Number of child fares.
Example: 2
string railcards
Comma separated list of railcards. To indicate multiples of a railcard type either repeat it, or use the 'x' format (YNGx3).
Example: YNGx2,DIS
string promoCode
Promo code to apply to the fares, if possible.
Example: SUMMER23
string include
Lets you specify which parts of the response you want to include.
Example: *.station
string ticketType
For debugging purposes, allows you to specify a ticket type to return.
Example: 1SA
200 application/json
Response schema (show)
{
"type": "object",
"properties": {
"response": {
"type": "object",
"additionalProperties": false,
"required": [
"fares"
],
"properties": {
"fares": {
"type": "array",
"items": {
"type": "string",
"pattern": "/fare\\-option/fare/.+"
}
}
}
},
"links": {
"type": "object"
}
}
}
Response example (show)
{
"response": {
"fares": [
"/odyssey/fare-option/fare/1072-0034-01000-ADT-000-1----58-1-0--1-0",
"/odyssey/fare-option/fare/1072-0035-01000-ADT-000-1----58-1-0--1-0",
"/odyssey/fare-option/fare/1072-0035-01000-ODT-000-1-B1---58-1-0--1-0"
]
},
"links": []
}
Journey Planning Reference Data
GET /current-schedule/{origin}/{destination}/{departure}/{arrival}/{rsid}
Fetch latest state of a scheduled leg.
Parameters
string origin (required)
NLC, TIPLOC or CRS code of journey origin
Example: TBW
string destination (required)
NLC, TIPLOC or CRS code of journey destination
Example: TBW
string departure (required)
Original departure date and time
Example: 2018-10-25T12:34
string arrival (required)
Original arrival date and time
Example: 2018-10-25T12:34
string rsid (required)
Original RSID of the service
Example: GW646000
200 application/json
Response schema (show)
{
"type": "object",
"additionalProperties": false,
"required": [
"status",
"data",
"links"
],
"properties": {
"status": {
"type": "string"
},
"data": {
"type": "object",
"additionalProperties": false,
"required": [
"type",
"source",
"mode",
"origin",
"destination",
"departure",
"arrival",
"service",
"stops"
],
"properties": {
"type": {
"type": "string",
"pattern": "timetabled|fixed"
},
"source": {
"type": "string",
"pattern": "dtd|darwin"
},
"mode": {
"type": "string"
},
"origin": {
"type": "string",
"pattern": "[A-Z]{3}",
"example": "EUS"
},
"originNlc": {
"type": "string",
"pattern": "[a-z0-9]{4}",
"example": "1072"
},
"destination": {
"type": "string",
"pattern": "[A-Z]{3}",
"example": "EUS"
},
"destinationNlc": {
"type": "string",
"pattern": "[a-z0-9]{4}",
"example": "1072"
},
"departure": {
"description": "Unix timestamp",
"type": "integer"
},
"arrival": {
"description": "Unix timestamp",
"type": "integer"
},
"realTime": {
"description": "Real time timing information",
"type": "object",
"properties": {
"arrival": {
"description": "Unix timestamp",
"type": "integer"
},
"arrivalType": {
"description": "Indicates whether the time is scheduled, estimated or actually measured",
"type": "string",
"pattern": "scheduled|estimated|actual"
},
"departure": {
"description": "Unix timestamp",
"type": "integer"
},
"departureType": {
"description": "Indicates whether the time is scheduled, estimated or actually measured",
"type": "string",
"pattern": "scheduled|estimated|actual"
}
}
},
"scheduledDeparture": {
"description": "[DEPRECATED] Unix timestamp, please use `departure` instead",
"type": "integer"
},
"scheduledArrival": {
"description": "[DEPRECATED] Unix timestamp, please use `arrival` instead",
"type": "integer"
},
"service": {
"type": "string",
"pattern": "/service/.+"
},
"disruptionReason": {
"type": "string"
},
"stops": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"station",
"departure",
"arrival",
"cancelled",
"platform",
"pickup",
"dropoff"
],
"properties": {
"station": {
"type": "string",
"pattern": "[A-Z]{3}",
"example": "EUS"
},
"stationNlc": {
"type": "string",
"pattern": "[a-z0-9]{4}",
"example": "1072"
},
"departure": {
"description": "Unix timestamp",
"type": "integer"
},
"arrival": {
"description": "Unix timestamp",
"type": "integer"
},
"realTime": {
"description": "Real time timing information",
"type": "object",
"properties": {
"arrival": {
"description": "Unix timestamp",
"type": "integer"
},
"arrivalType": {
"description": "Indicates whether the time is scheduled, estimated or actually measured",
"type": "string",
"pattern": "scheduled|estimated|actual"
},
"departure": {
"description": "Unix timestamp",
"type": "integer"
},
"departureType": {
"description": "Indicates whether the time is scheduled, estimated or actually measured",
"type": "string",
"pattern": "scheduled|estimated|actual"
}
}
},
"scheduledDeparture": {
"description": "[DEPRECATED] Unix timestamp, please use `departure` instead",
"type": "integer"
},
"scheduledArrival": {
"description": "[DEPRECATED] Unix timestamp, please use `arrival` instead",
"type": "integer"
},
"cancelled": {
"type": "boolean"
},
"platform": {
"type": [
"string",
"null"
]
},
"pickup": {
"type": "boolean"
},
"dropoff": {
"type": "boolean"
}
}
}
}
}
},
"links": {
"type": "object"
}
}
}
Response example (show)
{
"status": "success",
"data": {
"type": "timetabled",
"source": "dtd",
"mode": "train",
"origin": "LST",
"originNlc": "6965",
"destination": "CLT",
"destinationNlc": "6850",
"departure": 1642977420,
"arrival": 1642982880,
"scheduledArrival": 1637879800,
"service": "/service/23:C56364",
"stops": [
{
"station": "LST",
"stationNlc": "6965",
"departure": 1642977420,
"arrival": 1642977420,
"cancelled": false,
"platform": "12",
"pickup": true,
"dropoff": false
},
{
"station": "GDP",
"stationNlc": "6877",
"departure": 1642978350,
"arrival": 1642978350,
"cancelled": false,
"platform": "2",
"pickup": false,
"dropoff": false
}
],
"disruptionReason": "This train has been delayed by a passenger having been taken ill earlier near London Euston"
},
"links": []
}
GET /service-info/{tuid}/{date}
Fetch service information
Parameters
string tuid (required)
Service TUID
Example: C49393
string date (required)
Service date
Example: 1745971200
200 application/json
Response schema (show)
{
"type": "object",
"additionalProperties": false,
"required": [
"status",
"data"
],
"properties": {
"status": {
"type": "string"
},
"data": {
"type": "object",
"additionalProperties": false,
"required": [
"operator",
"tuid",
"reservationCode",
"reservation",
"isSleeper",
"facilitiesCode",
"facilities"
],
"properties": {
"operator": {
"description": "A two-letter service operator code",
"pattern": "[A-Z]{2}",
"type": "string",
"example": "CS"
},
"tuid": {
"description": "Train Unique ID code",
"pattern": "[A-Z]{1}[0-9]{5}",
"type": "string",
"example": "C12345"
},
"rsid": {
"description": "Retail Service ID code",
"pattern": "[A-Z]{2}[0-9]{4,6}",
"type": "string",
"example": "CS1234"
},
"reservationCode": {
"description": "Service reservation indicator (A: Compulsory, R: Recommended, S: Possible, E: Essential for bikes, empty string means non-reservable)",
"pattern": "A|R|S|B|",
"type": "string"
},
"reservation": {
"description": "Service reservation indicator text",
"pattern": "compulsory|essential-for-bikes|recommended|possible|non-reservable",
"type": "string"
},
"isSleeper": {
"type": "boolean"
},
"facilitiesCode": {
"description": "Facilities indicator",
"pattern": "[C|F|H|M|P|R|T]{0,4}",
"type": "string"
},
"facilities": {
"type": "object",
"properties": {
"standardClass": {
"type": "boolean"
},
"firstClass": {
"type": "boolean"
},
"firstClassMeal": {
"type": "boolean"
},
"firstClassRestaurant": {
"type": "boolean"
},
"hotFood": {
"type": "boolean"
},
"buffet": {
"type": "boolean"
},
"restaurant": {
"type": "boolean"
},
"trolley": {
"type": "boolean"
},
"wheelchair": {
"type": "boolean"
}
}
}
}
}
}
}
Response example (show)
{
"status": "success",
"data": {
"operator": "VT",
"tuid": "C49393",
"rsid": "VT713500",
"reservationCode": "A",
"reservation": "compulsory",
"isSleeper": false,
"facilitiesCode": "F",
"facilities": {
"standardClass": true,
"firstClass": true,
"firstClassMeal": false,
"firstClassRestaurant": true,
"hotFood": false,
"buffet": false,
"restaurant": false,
"trolley": false,
"wheelchair": false
}
}
}
Orders
Orders in the AWT are a heavily nested data structure with many sub-elements. Until an order has sufficient payment records it is considered an incomplete basket with an expiry date set by the server. When enough payment records have been added to cover the cost of the items the order sold callback will be triggered and the order will be sent for fulfilment. At present only one fulfilment method is allowed per order.
The items in an order can either be a trip or a sundry. A trip is analogous to a basket item whereas a sundry is an additional item, such as a delivery fee or card fee.
Application health check. Returns plain JSON (no JSend wrapper) with app name, environment, and git SHA.
GET /healthcheck
200 application/json
Response schema (show)
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Application name"
},
"env": {
"type": "string",
"description": "Environment name (e.g. prod, staging, dev)"
},
"sha": {
"type": "string",
"description": "Git commit SHA of the deployed build"
}
},
"required": [
"name",
"env",
"sha"
],
"additionalProperties": false
}
Response example (show)
{
"name": "order-service",
"env": "prod",
"sha": "abc1234def5678"
}
Prometheus metrics endpoint. Returns metrics in Prometheus exposition format (text/plain).
GET /metrics
200 text/plain
Response example (show)
null
POST /order
Create an order. This endpoint will return an API token that will be needed for future modification of the order. It can create also change of journey order.
Request schema (show)
{
"type": "object",
"properties": {
"items": {
"oneOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"outward": {
"description": "for outward fare option",
"type": "object",
"required": [
"journey",
"reservationPreferences"
],
"additionalProperties": false,
"properties": {
"journey": {
"type": "string",
"pattern": "^/odyssey/journey/.+$"
},
"reservationRequested": {
"type": "boolean"
},
"reservationPreferences": {
"type": "array",
"items": {
"enum": [
"AISL",
"WIND",
"AIRL",
"TABL",
"FACE",
"BACK",
"QUIE"
]
}
}
}
},
"inward": {
"description": "for inward (in case of 2 singles or return ticket) ticket",
"type": "object",
"required": [
"journey",
"reservationPreferences"
],
"additionalProperties": false,
"properties": {
"journey": {
"type": "string",
"pattern": "^/odyssey/journey/.+$"
},
"reservationRequested": {
"type": "boolean"
},
"reservationPreferences": {
"type": "array",
"items": {
"enum": [
"AISL",
"WIND",
"AIRL",
"TABL",
"FACE",
"BACK",
"QUIE"
]
}
}
}
},
"fares": {
"type": "object",
"properties": {
"outwardSingle": {
"type": "string",
"pattern": "^/odyssey/fare-option/.+$"
},
"inwardSingle": {
"type": "string",
"pattern": "^/odyssey/fare-option/.+$"
},
"return": {
"type": "string",
"pattern": "^/odyssey/fare-option/.+$"
},
"carnet": {
"fareOption": {
"type": "string",
"pattern": "^/odyssey/fare-option/.+$"
},
"validFrom": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"travelcard": {
"type": "string",
"pattern": "^/odyssey/fare-option/.+$"
}
},
"additionalProperties": false
},
"addons": {
"type": "object",
"properties": {
"outward": {
"origin": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/odyssey/fare-option/addon/.+$"
}
},
"destination": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/odyssey/fare-option/addon/.+$"
}
}
},
"inward": {
"origin": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/odyssey/fare-option/addon/.+$"
}
},
"destination": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/odyssey/fare-option/addon/.+$"
}
}
}
}
}
},
"additionalProperties": false
}
},
{
"type": "object",
"properties": {
"outward": {
"description": "for outward fare option",
"type": "object",
"required": [
"journey",
"reservationPreferences"
],
"additionalProperties": false,
"properties": {
"journey": {
"type": "string",
"pattern": "^/odyssey/journey/.+$"
},
"reservationRequested": {
"type": "boolean"
},
"reservationPreferences": {
"type": "array",
"items": {
"enum": [
"AISL",
"WIND",
"AIRL",
"TABL",
"FACE",
"BACK",
"QUIE"
]
}
}
}
},
"inward": {
"description": "for inward (in case of 2 singles or return ticket) ticket",
"type": "object",
"required": [
"journey",
"reservationPreferences"
],
"additionalProperties": false,
"properties": {
"journey": {
"type": "string",
"pattern": "^/odyssey/journey/.+$"
},
"reservationRequested": {
"type": "boolean"
},
"reservationPreferences": {
"type": "array",
"items": {
"enum": [
"AISL",
"WIND",
"AIRL",
"TABL",
"FACE",
"BACK",
"QUIE"
]
}
}
}
},
"fares": {
"type": "object",
"properties": {
"outwardSingle": {
"type": "string",
"pattern": "^/odyssey/fare-option/.+$"
},
"inwardSingle": {
"type": "string",
"pattern": "^/odyssey/fare-option/.+$"
},
"return": {
"type": "string",
"pattern": "^/odyssey/fare-option/.+$"
},
"carnet": {
"fareOption": {
"type": "string",
"pattern": "^/odyssey/fare-option/.+$"
},
"validFrom": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"travelcard": {
"type": "string",
"pattern": "^/odyssey/fare-option/.+$"
}
},
"additionalProperties": false
},
"addons": {
"type": "object",
"properties": {
"outward": {
"origin": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/odyssey/fare-option/addon/.+$"
}
},
"destination": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/odyssey/fare-option/addon/.+$"
}
}
},
"inward": {
"origin": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/odyssey/fare-option/addon/.+$"
}
},
"destination": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/odyssey/fare-option/addon/.+$"
}
}
}
}
}
},
"additionalProperties": false
}
]
},
"referrer": {
"type": "string"
},
"campaign": {
"type": "string"
},
"links": {
"type": [
"array",
"object"
]
},
"originalTickets": {
"type": "string"
}
},
"required": [
"items"
],
"additionalProperties": false
}
Request example (show)
{
"items": {
"fares": {
"outwardSingle": "/odyssey/fare-option/161:/fare/8649-1444-00345-2S8-000-1-U6--161-1-0--2-0"
},
"outward": {
"reservationPreferences": [],
"journey": "/odyssey/journey/161:161:INV_EUS_C83856"
}
}
}
201 application/json
Response headers
string Location (required)
Response schema (show)
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
}
Response example (show)
{
"$schema": "http://json-schema.org/schema",
"allOf": [
{
"$ref": "../Shared/ResponseWithData.jschema"
},
{
"properties": {
"data": {
"properties": {
"uri": {
"$ref": "../Shared/Types.jschema#/definitions/PassengerAssistURI"
}
},
"required": [
"uri"
],
"additionalProperties": false
}
}
}
]
}
422 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
424 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
400 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
URI parameters
string id (required)
Pattern: ^\d+$
GET /order/{id}
Return an order and the products and payments inside the order.
Parameters
string include
Headers
string X-Token-Data (required)
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"properties": {
"tenant": {
"type": "string",
"pattern": "^[a-z]+$"
},
"state": {
"description": "Order state",
"type": "string",
"enum": [
"Held",
"Sold",
"Fulfilled",
"Cancelled",
"Non Issued"
]
},
"owner": {
"type": [
"string",
"null"
]
},
"retailer": {
"type": "string",
"pattern": "^[0-9]{4}$"
},
"purchased": {
"oneOf": [
{
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
{
"type": "null"
}
]
},
"created": {
"oneOf": [
{
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
{
"type": "null"
}
]
},
"updated": {
"oneOf": [
{
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
{
"type": "null"
}
]
},
"channel": {
"type": "string"
},
"referrer": {
"type": [
"string",
"null"
]
},
"campaign": {
"type": [
"string",
"null"
]
},
"originalOrder": {
"type": [
"string",
"null"
]
},
"travelReason": {
"type": [
"string",
"null"
]
},
"items": {
"type": "array",
"items": {
"oneOf": [
{
"type": "string",
"pattern": "^/trip/[0-9]+$"
},
{
"type": "string",
"pattern": "^/sundry/[0-9]+$"
}
]
}
},
"payments": {
"description": "URLs for direct payment entities",
"type": "array",
"items": {
"type": "string",
"pattern": "^/(st-card|warrant|card)-payment|paypal|account-warrant/[0-9]+$"
}
},
"orderPayments": {
"description": "URLs for internal OrderService payment entities",
"type": "array",
"items": {
"type": "string",
"pattern": "^/(st-card|warrant|card)-payment|paypal|account-warrant/[0-9]+$"
}
},
"customer": {
"type": "string",
"pattern": "^/customer/[0-9]+$"
},
"delivery": {
"type": [
"object",
"null"
],
"properties": {
"type": {
"type": "string",
"pattern": "^/delivery/.+$"
},
"sundry": {
"oneOf": [
{
"type": "string",
"pattern": "^/sundry/[0-9]+$"
},
{
"type": "null"
}
]
},
"fulfilmentMethod": {
"type": "number"
},
"collectionReference": {
"oneOf": [
{
"type": "string",
"pattern": "^[0-9A-Z]{8}$"
},
{
"type": "null"
}
]
},
"smartcardUri": {
"oneOf": [
{
"type": "string",
"pattern": "^/(smartcards|external-smartcards|temporary-smartcards)/[A-Z0-9]+$"
},
{
"type": "null"
}
]
},
"address": {
"oneOf": [
{
"type": "string",
"pattern": "^/address/[0-9]+$"
},
{
"type": "null"
}
]
}
}
},
"fulfilment": {
"type": "string",
"pattern": "^/order/[0-9]+/fulfilment$"
},
"totalPrice": {
"description": "An amount of GBP pence",
"type": "integer"
},
"totalLeftToPay": {
"oneOf": [
{
"description": "An amount of GBP pence",
"type": "integer"
},
{
"type": "null"
}
]
},
"priceIncrease": {
"oneOf": [
{
"description": "An amount of GBP pence",
"type": "integer"
},
{
"type": "null"
}
]
},
"priceCoveredByOriginalTickets": {
"oneOf": [
{
"description": "An amount of GBP pence",
"type": "integer"
},
{
"type": "null"
}
]
},
"priceOfOriginalTickets": {
"oneOf": [
{
"description": "An amount of GBP pence",
"type": "integer"
},
{
"type": "null"
}
]
},
"cojEvents": {
"type": "array",
"items": {
"type": "string"
},
"description": "An amount of GBP pence"
},
"hash": {
"type": "string"
}
},
"required": [
"tenant",
"retailer",
"purchased"
],
"additionalProperties": false
},
"links": {
"type": [
"object",
"array"
]
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"tenant": "company",
"state": "Fulfilled",
"owner": "/user/123",
"retailer": "1234",
"purchased": "2023-10-30T07:43:38+00:00",
"created": "2023-10-30T07:43:30+00:00",
"updated": "2023-10-30T07:43:38+00:00",
"channel": "WEB",
"referrer": "",
"campaign": "",
"travelReason": null,
"originalOrder": null,
"fulfilment": "/order/12/fulfilment",
"items": [
"/trip/123",
"/trip/124",
"/sundry/123",
"/sundry/124"
],
"payments": [
"/st-card-payment/123",
"/warrant/123456"
],
"orderPayments": [
"/card-payment/234",
"/warrant-payment/456"
],
"hash": "0046511fa7c78f066a01250e5c44794fc9d6d000",
"totalPrice": 5432,
"totalLeftToPay": 0,
"delivery": {
"type": "/delivery/e-ticket",
"sundry": null,
"fulfilmentMethod": 6,
"collectionReference": null,
"collectionPoint": null,
"smartcardUri": null,
"address": "/address/12345"
}
}
}
403 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
PUT /order/{id}
Reclaim order as logged in user.
Headers
string X-Token-Data (required)
Request schema (show)
{
"type": "any"
}
200 application/json
Response schema (show)
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
}
Response example (show)
{
"$schema": "http://json-schema.org/schema",
"allOf": [
{
"$ref": "../Shared/ResponseWithData.jschema"
},
{
"properties": {
"data": {
"properties": {
"uri": {
"$ref": "../Shared/Types.jschema#/definitions/PassengerAssistURI"
}
},
"required": [
"uri"
],
"additionalProperties": false
}
}
}
]
}
403 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
DELETE /order/{id}
Deletes an order and all its trips. Uses distributed locking to prevent concurrent deletes.
Headers
string X-Token-Data (required)
200 application/json
Response schema (show)
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
}
202 application/json
Response headers
string Location (required)
Response schema (show)
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
}
403 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
422 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
},
{
"required": [
"invalidFields"
]
}
]
}
500 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
GET /order/{id}/fulfilment
Return the fulfilment status of the order. Note that individual items in the order may have different fulfilment statuses.
Headers
string X-Token-Data (required)
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"properties": {
"machine": {
"type": "string",
"pattern": "^/machine/[A-Z0-9]{3,}/\\d{2}/\\d{4}$"
}
},
"required": [],
"additionalProperties": false
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"machine": "/machine/H123/01/2222"
}
}
403 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
GET /order/{id}/state
Return the state of the order.
Headers
string X-Token-Data (required)
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"properties": {
"state": {
"description": "Order state",
"type": "string",
"enum": [
"Held",
"Sold",
"Fulfilled",
"Cancelled",
"Non Issued"
]
}
},
"required": [
"state"
],
"additionalProperties": false
},
"links": {
"type": [
"object",
"array"
]
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"state": "Fulfilled"
}
}
403 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
POST /order/{id}/confirmation
Re-send order confirmation email
Headers
string X-Token-Data (required)
Request schema (show)
{
"type": "array",
"additionalProperties": false
}
200 application/json
Response schema (show)
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
}
403 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
POST /order/{id}/delivery
Add delivery method to existing order without delivery
Request schema (show)
{
"type": "object",
"properties": {
"delivery": {
"type": "object",
"description": "Delivery property is allowed only if items are not blank. You can't specify delivery type when there is no items in order.",
"properties": {
"type": {
"type": "string",
"pattern": "^/delivery/.+$"
},
"collectionPoint": {
"type": "string",
"pattern": "^/station/[A-Z0-9]+$"
},
"address": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"firstNames": {
"type": "string"
},
"surname": {
"type": "string"
},
"address1": {
"type": "string"
},
"address2": {
"type": [
"string",
"null"
]
},
"address3": {
"type": [
"string",
"null"
]
},
"town": {
"type": "string"
},
"county": {
"type": [
"string",
"null"
]
},
"postCode": {
"type": "string"
},
"country": {
"type": "string"
},
"telephoneNumber": {
"type": "string"
}
}
},
"smartcardDetails": {
"schema": "http://json-schema.org/schema",
"type": "object",
"description": "Used only in case of /new-smartcard delivery type",
"properties": {
"displayName": {
"type": "string",
"pattern": ".{1,100}",
"description": "Human-readable name of card. To be used in GUI."
},
"name": {
"type": "string",
"pattern": "\\w{2,100}"
},
"surname": {
"type": "string",
"pattern": "\\w{2,100}"
},
"title": {
"type": "string",
"pattern": "\\w{2,10}"
},
"gender": {
"type": "number",
"enum": [
1,
2
],
"description": "1-Male, 2-Female"
},
"address1": {
"type": "string"
},
"address2": {
"type": "string"
},
"address3": {
"type": "string"
},
"address4": {
"type": "string"
},
"address5": {
"type": "string"
},
"address6": {
"type": "string"
},
"postcode": {
"type": "string"
}
},
"required": [
"displayName",
"name",
"surname",
"title",
"gender",
"address1",
"address2",
"postcode"
],
"additionalProperties": false
},
"smartcard": {
"schema": "http://json-schema.org/schema",
"type": "object",
"description": "Used for existing smartcards (both external and created by us).",
"properties": {
"uri": {
"type": "string"
},
"location": {
"type": "string"
}
},
"required": [
"uri",
"location"
],
"additionalProperties": false
},
"passenger": {
"schema": "http://json-schema.org/schema",
"type": "object",
"description": "Passenger data used for GoldStar fulfilment. At least one property is required.",
"properties": {
"address": {
"type": "../Address/Address.jschema"
},
"photocard": {
"schema": "http://json-schema.org/schema",
"type": "object",
"description": "Used for GoldStar fulfilment",
"properties": {
"photocardNumber": {
"type": "string"
},
"photocardPostcode": {
"type": "string"
}
},
"required": [
"photocardNumber",
"photocardPostcode"
],
"additionalProperties": false
},
"isChild": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"required": [
"type"
],
"additionalProperties": false
},
"links": {
"type": [
"array",
"object"
]
}
},
"required": [
"delivery"
],
"additionalProperties": true
}
Request example (show)
{
"delivery": {
"type": "/delivery/mobile",
"collectionPoint": "/station/H456",
"address": {
"title": "Mr",
"firstNames": "Tester",
"surname": "Person",
"address1": "456 Test Street",
"address2": "Another Street",
"address3": null,
"town": "Test Town",
"county": "Norfolk",
"country": "United Kingdom",
"postCode": "TE57 1NG",
"telephoneNumber": "+79123123123"
}
},
"links": {
"/delivery/mobile": {
"uri": "/delivery/mobile",
"displayOrder": 1,
"name": "mobile",
"time": "5 minutes",
"requirements": "Available to both UK and overseas customers. The card used to make payment will be required for collection. Tickets can be collected from the above stations.",
"fulfilmentType": 5,
"price": 0,
"isForCarnet": false,
"isForSeason": true,
"minSecondsBefore": 1200,
"minWorkingDaysBefore": null,
"maxValue": null
}
}
}
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"properties": {
"sTicketCustomerId": {
"type": "integer"
}
},
"additionalProperties": false
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"sTicketCustomerId": "1210"
},
"links": []
}
400 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
DELETE /order/{id}/delivery
200 application/json
Response schema (show)
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
}
403 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
POST /order/{id}/travel-reason
Add travel reason to existing order
Request schema (show)
{
"type": "object",
"properties": {
"reason": {
"type": "string",
"description": "A travel reason of the customer. Can be any string"
}
},
"required": [
"reason"
],
"additionalProperties": false
}
Request example (show)
{
"reason": "Ditching"
}
200 application/json
Response schema (show)
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
}
400 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
POST /order/{id}/cost-centres
Add cost centres to existing not yet sold order
Request schema (show)
{
"type": "object",
"properties": {
"costCentres": {
"type": "string"
}
},
"required": [
"costCentres"
],
"additionalProperties": false
}
Request example (show)
{
"costCentres": "Cost centre 1, Cost centre 2"
}
200 application/json
Response schema (show)
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
}
400 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
GET /order/{id}/payments
Returns payment URIs for the order and any associated CoJ original orders, keyed by order ID.
Headers
string X-Token-Data (required)
200 application/json
Response schema (show)
{
"type": "object",
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"type": "object",
"description": "Map of order ID to array of payment URIs. Includes the requested order and any CoJ original orders.",
"additionalProperties": {
"type": "array",
"items": {
"type": "string",
"description": "URI of a payment record (e.g. /card-payment/1)"
}
}
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
},
"required": [
"status"
],
"additionalProperties": false
}
Response example (show)
{
"status": "success",
"data": {
"123": [
"/card-payment/1",
"/warrant-payment/2"
]
}
}
403 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
DELETE /order/{id}/trip/{tripId}
Delete trip from existing order. Cancel all trip reservations. If order was already paid for or delivery type was set, trip won't be removed.
200 application/json
Response schema (show)
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
}
400 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
403 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
URI parameters
string customerId (required)
Pattern: ^\d+$
GET /order-by-customer/{customerId}
Return the list of orders by customer id
Headers
string X-Token-Data (required)
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"properties": {
"meta": {
"type": "object",
"properties": {
"page": {
"type": "integer"
},
"perPage": {
"type": "integer"
},
"lastPage": {
"type": "integer"
}
}
},
"data": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/order/[0-9]+$"
}
}
}
},
"links": {
"type": [
"object",
"array"
]
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"meta": {
"page": 1,
"perPage": 10,
"lastPage": 10
},
"data": [
"/order/0001018025",
"/order/0001018024"
]
}
}
403 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
Returns the count of fulfilled unassigned orders matching the authenticated customer's delivery email.
GET /order-number
Headers
string X-Token-Data (required)
200 application/json
Response schema (show)
{
"type": "object",
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"type": "object",
"properties": {
"number": {
"type": "integer",
"description": "Count of fulfilled unassigned orders matching the customer's delivery email"
}
},
"required": [
"number"
],
"additionalProperties": false
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
},
"required": [
"status"
],
"additionalProperties": false
}
Response example (show)
{
"status": "success",
"data": {
"number": 3
}
}
400 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
Checks whether the authenticated token is authorized to read the specified order.
URI parameters
string id (required)
Pattern: ^\d+$
GET /order-authorized/{id}
Headers
string X-Token-Data (required)
200 application/json
Response schema (show)
{
"type": "object",
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Empty array on success"
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
},
"required": [
"status"
],
"additionalProperties": false
}
Response example (show)
{
"status": "success",
"data": []
}
403 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
Returns an order looked up by one of its ticket IDs.
URI parameters
string id (required)
Pattern: ^\d+$
GET /order-by-ticket-id/{id}
Headers
string X-Token-Data (required)
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"properties": {
"tenant": {
"type": "string",
"pattern": "^[a-z]+$"
},
"state": {
"description": "Order state",
"type": "string",
"enum": [
"Held",
"Sold",
"Fulfilled",
"Cancelled",
"Non Issued"
]
},
"owner": {
"type": [
"string",
"null"
]
},
"retailer": {
"type": "string",
"pattern": "^[0-9]{4}$"
},
"purchased": {
"oneOf": [
{
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
{
"type": "null"
}
]
},
"created": {
"oneOf": [
{
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
{
"type": "null"
}
]
},
"updated": {
"oneOf": [
{
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
{
"type": "null"
}
]
},
"channel": {
"type": "string"
},
"referrer": {
"type": [
"string",
"null"
]
},
"campaign": {
"type": [
"string",
"null"
]
},
"originalOrder": {
"type": [
"string",
"null"
]
},
"travelReason": {
"type": [
"string",
"null"
]
},
"items": {
"type": "array",
"items": {
"oneOf": [
{
"type": "string",
"pattern": "^/trip/[0-9]+$"
},
{
"type": "string",
"pattern": "^/sundry/[0-9]+$"
}
]
}
},
"payments": {
"description": "URLs for direct payment entities",
"type": "array",
"items": {
"type": "string",
"pattern": "^/(st-card|warrant|card)-payment|paypal|account-warrant/[0-9]+$"
}
},
"orderPayments": {
"description": "URLs for internal OrderService payment entities",
"type": "array",
"items": {
"type": "string",
"pattern": "^/(st-card|warrant|card)-payment|paypal|account-warrant/[0-9]+$"
}
},
"customer": {
"type": "string",
"pattern": "^/customer/[0-9]+$"
},
"delivery": {
"type": [
"object",
"null"
],
"properties": {
"type": {
"type": "string",
"pattern": "^/delivery/.+$"
},
"sundry": {
"oneOf": [
{
"type": "string",
"pattern": "^/sundry/[0-9]+$"
},
{
"type": "null"
}
]
},
"fulfilmentMethod": {
"type": "number"
},
"collectionReference": {
"oneOf": [
{
"type": "string",
"pattern": "^[0-9A-Z]{8}$"
},
{
"type": "null"
}
]
},
"smartcardUri": {
"oneOf": [
{
"type": "string",
"pattern": "^/(smartcards|external-smartcards|temporary-smartcards)/[A-Z0-9]+$"
},
{
"type": "null"
}
]
},
"address": {
"oneOf": [
{
"type": "string",
"pattern": "^/address/[0-9]+$"
},
{
"type": "null"
}
]
}
}
},
"fulfilment": {
"type": "string",
"pattern": "^/order/[0-9]+/fulfilment$"
},
"totalPrice": {
"description": "An amount of GBP pence",
"type": "integer"
},
"totalLeftToPay": {
"oneOf": [
{
"description": "An amount of GBP pence",
"type": "integer"
},
{
"type": "null"
}
]
},
"priceIncrease": {
"oneOf": [
{
"description": "An amount of GBP pence",
"type": "integer"
},
{
"type": "null"
}
]
},
"priceCoveredByOriginalTickets": {
"oneOf": [
{
"description": "An amount of GBP pence",
"type": "integer"
},
{
"type": "null"
}
]
},
"priceOfOriginalTickets": {
"oneOf": [
{
"description": "An amount of GBP pence",
"type": "integer"
},
{
"type": "null"
}
]
},
"cojEvents": {
"type": "array",
"items": {
"type": "string"
},
"description": "An amount of GBP pence"
},
"hash": {
"type": "string"
}
},
"required": [
"tenant",
"retailer",
"purchased"
],
"additionalProperties": false
},
"links": {
"type": [
"object",
"array"
]
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"tenant": "company",
"state": "Fulfilled",
"owner": "/user/123",
"retailer": "1234",
"purchased": "2023-10-30T07:43:38+00:00",
"created": "2023-10-30T07:43:30+00:00",
"updated": "2023-10-30T07:43:38+00:00",
"channel": "WEB",
"referrer": "",
"campaign": "",
"travelReason": null,
"originalOrder": null,
"fulfilment": "/order/12/fulfilment",
"items": [
"/trip/123",
"/trip/124",
"/sundry/123",
"/sundry/124"
],
"payments": [
"/st-card-payment/123",
"/warrant/123456"
],
"orderPayments": [
"/card-payment/234",
"/warrant-payment/456"
],
"hash": "0046511fa7c78f066a01250e5c44794fc9d6d000",
"totalPrice": 5432,
"totalLeftToPay": 0,
"delivery": {
"type": "/delivery/e-ticket",
"sundry": null,
"fulfilmentMethod": 6,
"collectionReference": null,
"collectionPoint": null,
"smartcardUri": null,
"address": "/address/12345"
}
}
}
403 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
URI parameters
string id (required)
Pattern: ^\d+$
GET /trip/{id}
A trip is a equivilent to a single basket item. It may consist of one or two journeys and one to two fare options for those journeys. In addition to the fares for the journeys, fare options for plus bus, season tickets or travelcards may be added.
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"properties": {
"outwardJourney": {
"oneOf": [
{
"type": "string",
"pattern": "^/journey/[0-9]+$"
},
{
"type": "null"
}
]
},
"returnJourney": {
"oneOf": [
{
"type": "string",
"pattern": "^/journey/[0-9]+$"
},
{
"type": "null"
}
]
},
"items": {
"type": "object",
"properties": {
"outwardSingle": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/ticket/[0-9]+$"
}
},
"returnSingle": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/ticket/[0-9]+$"
}
},
"return": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/ticket/[0-9]+$"
}
},
"outwardPlusBus": {
"type": "object",
"properties": {
"origin": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/ticket/[0-9]+$"
}
},
"destination": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/ticket/[0-9]+$"
}
}
},
"additionalProperties": false
},
"returnPlusBus": {
"type": "object",
"properties": {
"origin": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/ticket/[0-9]+$"
}
},
"destination": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/ticket/[0-9]+$"
}
}
},
"additionalProperties": false
},
"travelcardAddon": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/ticket/[0-9]+$"
}
},
"petTickets": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/ticket/[0-9]+$"
}
}
},
"additionalProperties": false
}
},
"required": [
"outwardJourney",
"returnJourney",
"items"
],
"additionalProperties": false
},
"links": {
"type": [
"object",
"array"
]
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"outwardJourney": "/journey/123456789123",
"returnJourney": null,
"items": {
"outwardSingle": [
"/ticket/1111",
"/ticket/1112"
],
"returnSingle": [
"/ticket/1211",
"/ticket/1212"
],
"outwardPlusBus": {
"origin": [
"/ticket/1121",
"/ticket/1122"
]
},
"returnPlusBus": {
"destination": [
"/ticket/1221",
"/ticket/1222"
]
}
}
}
}
403 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Trip with id 9223372036854775807 not found."
}
PUT /trip/{id}/seating
Update trip seating
Request schema (show)
{
"type": "object",
"additionalProperties": true
}
Request example (show)
{
"/seat-reservation/1": "K13L",
"/seat-reservation/3": "L13L"
}
200 application/json
Response schema (show)
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
}
Response example (show)
{
"status": "success",
"data": {
"uri": "/trip/123"
}
}
403 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
POST /trip/{id}/nodes
Add trip nodes
Request schema (show)
{
"type": "object",
"additionalProperties": true
}
Request example (show)
{
"children5To11": 3,
"children12To15": 1
}
200 application/json
Response schema (show)
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
}
Response example (show)
{
"status": "success",
"data": {
"uri": "/trip/123"
}
}
403 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
GET /trip/{id}/pax
Returns the passenger count summary for a trip, including adults, children, pets, bikes, and seat reservation details.
Headers
string X-Token-Data (required)
200 application/json
Response schema (show)
{
"type": "object",
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"type": "object",
"properties": {
"adults": {
"type": "integer",
"description": "Number of adult passengers"
},
"children": {
"type": "integer",
"description": "Number of child passengers"
},
"pets": {
"type": "integer",
"description": "Number of pets"
},
"bikesOnRacks": {
"type": "integer",
"description": "Number of bikes on racks"
},
"bikesInBags": {
"type": "integer",
"description": "Number of bikes in bags"
},
"reservations": {
"type": "object",
"description": "Seat reservation breakdown by category",
"properties": {
"rooms": {
"type": "object",
"description": "Room/sleeper reservations keyed by ticket type and segment",
"additionalProperties": true
},
"bikesOnRacks": {
"type": "object",
"description": "Bike-on-rack reservations keyed by ticket type and segment",
"additionalProperties": true
},
"bikesInBags": {
"type": "object",
"description": "Bike-in-bag reservations keyed by ticket type and segment",
"additionalProperties": true
}
},
"required": [
"rooms",
"bikesOnRacks",
"bikesInBags"
],
"additionalProperties": false
}
},
"required": [
"adults",
"children",
"pets",
"bikesOnRacks",
"bikesInBags",
"reservations"
],
"additionalProperties": false
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
},
"required": [
"status"
],
"additionalProperties": false
}
Response example (show)
{
"status": "success",
"data": {
"adults": 2,
"children": 1,
"pets": 0,
"bikesOnRacks": 1,
"bikesInBags": 0,
"reservations": {
"rooms": [],
"bikesOnRacks": {
"single": {
"KGX_EDB": {
"A": [
"12",
"13"
]
}
}
},
"bikesInBags": []
}
}
}
403 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
URI parameters
string id (required)
Pattern: ^\d+$
GET /ticket/{id}
A ticket is the right to travel for one or more passengers on one or two journeys.
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"properties": {
"fare": {
"type": "string",
"pattern": "^/fare/[0-9]+$"
},
"adults": {
"type": "integer"
},
"children": {
"type": "integer"
},
"transactionNumber": {
"oneOf": [
{
"type": "string",
"pattern": "^\\d{5}$"
},
{
"type": "null"
}
]
},
"reservation": {
"oneOf": [
{
"type": "string",
"pattern": "^/reservation/[A-Z0-9]+$"
},
{
"type": "null"
}
]
},
"utn": {
"type": [
"string",
"null"
]
},
"outwardPortion": {
"type": "string",
"pattern": "^/journey/[0-9]+$"
},
"returnPortion": {
"oneOf": [
{
"type": "string",
"pattern": "^/journey/[0-9]+$"
},
{
"type": "null"
}
]
},
"outwardFareJourney": {
"type": "string",
"pattern": "^/journey/[0-9]+$"
},
"returnFareJourney": {
"oneOf": [
{
"type": "string",
"pattern": "^/journey/[0-9]+$"
},
{
"type": "null"
}
]
},
"outwardValidity": {
"properties": {
"validFrom": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"validTo": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
}
},
"returnValidity": {
"properties": {
"validFrom": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"validTo": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
}
},
"supplements": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/supplement/[0-9]+$"
}
},
"seats": {
"type": "array",
"items": {
"type": "object",
"properties": {
"seat": {
"type": "string",
"pattern": "^/seat-reservation/[0-9]+$"
},
"leg": {
"type": "string",
"pattern": "^/leg/[0-9]+$"
},
"supplement": {
"type": "string",
"pattern": "^/supplement/[0-9]+$"
}
},
"required": [
"seat",
"leg",
"supplement"
]
}
},
"splitInfo": {
"type": "object",
"required": [
"sectionIds",
"outwardOrigin",
"outwardDestination",
"inwardOrigin",
"inwardDestination"
],
"properties": {
"sectionIds": {
"type": "array",
"items": {
"type": "integer"
},
"examples": [
[
1
],
[
1,
3,
4
]
]
},
"outwardOrigin": {
"$oneOf": [
{
"type": "string",
"pattern": "^[A-Z]{3}$"
},
{
"type": "null"
}
],
"examples": [
"EUS",
null
]
},
"outwardDestination": {
"$oneOf": [
{
"type": "string",
"pattern": "^[A-Z]{3}$"
},
{
"type": "null"
}
],
"examples": [
"EUS",
null
]
},
"inwardOrigin": {
"$oneOf": [
{
"type": "string",
"pattern": "^[A-Z]{3}$"
},
{
"type": "null"
}
],
"examples": [
"EUS",
null
]
},
"inwardDestination": {
"$oneOf": [
{
"type": "string",
"pattern": "^[A-Z]{3}$"
},
{
"type": "null"
}
],
"examples": [
"EUS",
null
]
}
}
},
"passenger": {
"type": [
"string"
]
},
"originalTicket": {
"type": "string",
"pattern": "^/ticket/[0-9]+$"
},
"priceCoveredByOriginalTicket": {
"type": [
"integer",
"null"
]
},
"ticketPrice": {
"type": "integer"
},
"refundId": {
"type": [
"integer",
"null"
]
}
},
"required": [
"fare",
"adults",
"children",
"transactionNumber",
"reservation",
"utn",
"outwardPortion",
"outwardFareJourney",
"outwardValidity",
"returnValidity",
"supplements",
"seats",
"ticketPrice"
],
"additionalProperties": false
},
"links": {
"type": [
"object",
"array"
]
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"fare": "/fare/5",
"adults": 1,
"children": 0,
"transactionNumber": "00123",
"reservation": "/reservation/XXXYYY",
"utn": "AA123456789",
"outwardPortion": "/journey/1",
"returnPortion": null,
"outwardFareJourney": "/journey/1",
"returnFareJourney": null,
"outwardValidity": {
"validFrom": "2017-01-24",
"validUntil": "2018-01-23"
},
"returnValidity": null,
"supplements": [
"/supplement/123456"
],
"seats": [
{
"seat": "/seat-reservation/123",
"origin": "WVH",
"destination": "SGB",
"leg": "/leg/123",
"supplement": "/supplement/123456"
},
{
"seat": "/seat-reservation/124",
"origin": "SGB",
"destination": "CRA",
"leg": "/leg/124",
"supplement": "/supplement/123456"
}
],
"splitInfo": {
"sectionIds": [
1
],
"outwardOrigin": "KID",
"outwardDestination": "CRA",
"inwardOrigin": null,
"inwardDestination": null
},
"passenger": "/passenger/123",
"originalTicket": "/ticket/321998",
"priceCoveredByOriginalTicket": 520,
"ticketPrice": 1299,
"refundId": null
},
"links": {
"/fare/5": [],
"/reservation/XXXYYY": [],
"/supplement/123456": [],
"/ticket/321998": []
}
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Ticket with id 9223372036854775807 not found."
}
URI parameters
string id (required)
Pattern: ^\d+$
GET /fare/{id}
Abstract information for a ticket. The fare itself contains the origin, destination, route, ticket type and restriction of the fare but is not bound to a particular date range like the ticket. Instead the ticket type has a validity duration.
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"properties": {
"ticketType": {
"type": "string",
"pattern": "^/ticket-type/[A-Z0-9]{3}$"
},
"origin": {
"type": "string",
"pattern": "^/station/[A-Z0-9]+$"
},
"destination": {
"type": "string",
"pattern": "^/station/[A-Z0-9]+$"
},
"price": {
"type": "number"
},
"originalPrice": {
"type": [
"number",
"null"
]
},
"railcard": {
"type": [
"string",
"null"
]
},
"restrictionCode": {
"type": "string",
"pattern": "^[A-Z0-9]{2}$"
},
"route": {
"type": "string",
"pattern": "^/route/[0-9]{5}$"
},
"statusCode": {
"type": "string"
},
"fareSetter": {
"type": [
"null",
"string"
]
},
"xLondon": {
"type": "number",
"description": "0 - not cross London; 1 - cross London; 2 - cross London by underground"
},
"isPlusBus": {
"type": "boolean"
},
"discount": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"pattern": "^/discount/[0-9]+$"
},
"lennonCode": {
"type": "string"
},
"promoCode": {
"type": "string"
},
"percent": {
"type": "number"
},
"shortDescription": {
"type": [
"string",
"null"
]
}
},
"required": [],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"childStatusDescription": {
"type": [
"string",
"null"
]
},
"adultStatusDescription": {
"type": [
"string",
"null"
]
}
},
"required": [
"ticketType",
"origin",
"destination",
"price",
"railcard",
"restrictionCode",
"route",
"statusCode",
"xLondon",
"isPlusBus",
"discount",
"childStatusDescription",
"adultStatusDescription"
],
"additionalProperties": false
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"ticketType": "/ticket-type/VDS",
"origin": "/station/1072",
"destination": "/station/2961",
"price": 2700,
"originalPrice": 5400,
"railcard": "/railcard/2TR",
"restrictionCode": "VR",
"route": "/route/00452",
"statusCode": "052",
"fareSetter": null,
"xLondon": 1,
"isPlusBus": false,
"discount": {
"type": "/discount/123",
"lennonCode": "0301",
"promoCode": "test",
"percent": 50,
"shortDescription": "Some description of the discount made up by a marketing genius"
},
"childStatusDescription": "CHILD",
"adultStatusDescription": null
},
"links": []
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
Response example (show)
{
"status": "error",
"message": "Fare with id 99999 not found."
}
Returns a fare leg (journey leg used for fare calculation) by ID.
URI parameters
string id (required)
Pattern: ^\d+$
GET /fare-leg/{id}
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"properties": {
"type": {
"enum": [
"timetabled",
"fixed"
]
},
"origin": {
"type": "string",
"pattern": "^/station/[A-Z0-9]+$"
},
"destination": {
"type": "string",
"pattern": "^/station/[A-Z0-9]+$"
},
"mode": {
"enum": [
"train",
"bus",
"walk"
]
},
"service": {
"oneOf": [
{
"type": "string",
"pattern": "^/service/[0-9A-Z_]+/\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
]
},
"operator": {
"oneOf": [
{
"type": "string",
"pattern": "^/toc/[A-Z]{2}$"
},
{
"type": "null"
}
]
},
"scheduledDeparture": {
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
"scheduledArrival": {
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
"boardingTime": {
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
"alightingTime": {
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
"duration": {
"type": "number"
},
"availableFrom": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
"availableTo": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
"callingPoints": {
"type": "array",
"items": {
"type": "object",
"properties": {
"crs": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"arrival": {
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
"departure": {
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
"platform": {
"type": "string",
"description": "The platform number or letter"
},
"pickup": {
"type": "boolean",
"description": "Does the train stop here for passengers to board"
},
"dropoff": {
"type": "boolean",
"description": "Does the train stop here for passengers to alight"
}
},
"required": [
"crs",
"arrival",
"departure",
"platform",
"pickup",
"dropoff"
]
}
}
},
"required": [
"type",
"origin",
"destination",
"operator",
"mode"
],
"additionalProperties": false
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"type": "timetabled",
"origin": "/station/1027",
"destination": "/station/5187",
"mode": "train",
"service": "/service/A12345/2015-12-07",
"scheduledDeparture": "2015-12-07T11:59:59+00:00",
"scheduledArrival": "2015-12-07T11:59:59+00:00",
"alightingTime": "2015-12-07T12:03:00+00:00",
"operator": "/toc/AB",
"callingPoints": [
{
"crs": "KID",
"arrival": "2023-11-27T11:54:00+00:00",
"departure": "2023-11-27T11:54:00+00:00",
"platform": "1",
"pickup": true,
"dropoff": false
},
{
"crs": "BKD",
"arrival": "2023-11-27T11:58:00+00:00",
"departure": "2023-11-27T11:58:00+00:00",
"platform": null,
"pickup": true,
"dropoff": true
}
]
},
"links": []
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Leg with id 20234234234234324 not found."
}
URI parameters
string id (required)
Pattern: ^\d+$
GET /journey/{id}
A complete passenger journey from an origin to a destination. It will involve journeys on one or more legs.
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"properties": {
"legs": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/leg/[0-9]+$"
}
},
"fareLegs": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/leg/[0-9]+$"
}
},
"distance": {
"type": [
"number",
"null"
]
},
"co2": {
"type": [
"object",
"null"
],
"required": [
"train"
],
"properties": {
"train": {
"type": "number"
}
},
"additionalProperties": true
}
},
"required": [
"legs",
"fareLegs",
"distance",
"co2"
],
"additionalProperties": false
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"legs": [
"/leg/123",
"/leg/456"
],
"fareLegs": [
"/fare-leg/214",
"/fare-leg/214"
]
},
"links": []
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Journey with id 9223372036854775807 not found."
}
URI parameters
string id (required)
Pattern: ^\d+$
GET /leg/{id}
A particular segment of an overall journey constrained to one service of method of travel. There are two types of legs; timetable legs that have a departure and arrival time and fixed legs that only have a duration (walk, tube, etc). Given a journey from Tunbridge Wells to Diss there may be a timetable leg from Tunbridge Wells to London Bridge (on a Hastings to Charing Cross service), a fixed leg walk to London Liverpool Street and then a final timetable leg from London Liverpool Street to Diss (on the London Liverpool Street to Norwich service).
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"properties": {
"type": {
"enum": [
"timetabled",
"fixed"
]
},
"origin": {
"type": "string",
"pattern": "^/station/[A-Z0-9]+$"
},
"destination": {
"type": "string",
"pattern": "^/station/[A-Z0-9]+$"
},
"mode": {
"enum": [
"train",
"bus",
"walk"
]
},
"service": {
"oneOf": [
{
"type": "string",
"pattern": "^/service/[0-9A-Z_]+/\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
]
},
"operator": {
"oneOf": [
{
"type": "string",
"pattern": "^/toc/[A-Z]{2}$"
},
{
"type": "null"
}
]
},
"scheduledDeparture": {
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
"scheduledArrival": {
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
"boardingTime": {
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
"alightingTime": {
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
"duration": {
"type": "number"
},
"availableFrom": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
"availableTo": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
"callingPoints": {
"type": "array",
"items": {
"type": "object",
"properties": {
"crs": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"arrival": {
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
"departure": {
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
"platform": {
"type": "string",
"description": "The platform number or letter"
},
"pickup": {
"type": "boolean",
"description": "Does the train stop here for passengers to board"
},
"dropoff": {
"type": "boolean",
"description": "Does the train stop here for passengers to alight"
}
},
"required": [
"crs",
"arrival",
"departure",
"platform",
"pickup",
"dropoff"
]
}
}
},
"required": [
"type",
"origin",
"destination",
"operator",
"mode"
],
"additionalProperties": false
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"type": "timetabled",
"origin": "/station/1027",
"destination": "/station/5187",
"mode": "train",
"service": "/service/A12345/2015-12-07",
"scheduledDeparture": "2015-12-07T11:59:59+00:00",
"scheduledArrival": "2015-12-07T11:59:59+00:00",
"alightingTime": "2015-12-07T12:03:00+00:00",
"operator": "/toc/AB",
"callingPoints": [
{
"crs": "KID",
"arrival": "2023-11-27T11:54:00+00:00",
"departure": "2023-11-27T11:54:00+00:00",
"platform": "1",
"pickup": true,
"dropoff": false
},
{
"crs": "BKD",
"arrival": "2023-11-27T11:58:00+00:00",
"departure": "2023-11-27T11:58:00+00:00",
"platform": null,
"pickup": true,
"dropoff": true
}
]
},
"links": []
}
201 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"properties": {
"type": {
"enum": [
"timetabled",
"fixed"
]
},
"origin": {
"type": "string",
"pattern": "^/station/[A-Z0-9]+$"
},
"destination": {
"type": "string",
"pattern": "^/station/[A-Z0-9]+$"
},
"mode": {
"enum": [
"train",
"bus",
"walk"
]
},
"service": {
"oneOf": [
{
"type": "string",
"pattern": "^/service/[0-9A-Z_]+/\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
]
},
"operator": {
"oneOf": [
{
"type": "string",
"pattern": "^/toc/[A-Z]{2}$"
},
{
"type": "null"
}
]
},
"scheduledDeparture": {
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
"scheduledArrival": {
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
"boardingTime": {
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
"alightingTime": {
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
"duration": {
"type": "number"
},
"availableFrom": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
"availableTo": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
"callingPoints": {
"type": "array",
"items": {
"type": "object",
"properties": {
"crs": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"arrival": {
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
"departure": {
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
"platform": {
"type": "string",
"description": "The platform number or letter"
},
"pickup": {
"type": "boolean",
"description": "Does the train stop here for passengers to board"
},
"dropoff": {
"type": "boolean",
"description": "Does the train stop here for passengers to alight"
}
},
"required": [
"crs",
"arrival",
"departure",
"platform",
"pickup",
"dropoff"
]
}
}
},
"required": [
"type",
"origin",
"destination",
"operator",
"mode"
],
"additionalProperties": false
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"type": "fixed",
"origin": "/station/5187",
"destination": "/station/5100",
"mode": "walk",
"operator": "/toc/AB",
"duration": 15,
"availableFrom": "05:30",
"availableTo": "22:45"
},
"links": []
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Leg with id 20234234234234324 not found."
}
URI parameters
string tuid (required)
Pattern: ^[0-9A-Z_]+$
string date (required)
Pattern: ^[0-9\-]+$
GET /service/{tuid}/{date}
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"properties": {
"type": {
"type": "string",
"pattern": "^fixed|timetable$"
},
"mode": {
"type": "string",
"pattern": "^train$"
},
"retailServiceId": {
"type": "string",
"pattern": "^[0-9A-Z]+$"
},
"trainUid": {
"type": "string",
"pattern": "^[0-9A-Z_]+$"
},
"iptisTripIdentifier": {
"type": "string"
},
"facilities": {
"type": "object",
"properties": {
"firstClass": {
"type": "boolean"
},
"firstClassMeal": {
"type": "boolean"
},
"firstClassRestaurant": {
"type": "boolean"
},
"hotFood": {
"type": "boolean"
},
"buffet": {
"type": "boolean"
},
"restaurant": {
"type": "boolean"
},
"trolley": {
"type": "boolean"
},
"wheelchair": {
"type": "boolean"
}
},
"additionalProperties": true
},
"isTemporaryTrain": {
"type": "boolean"
},
"isCountedPlace": {
"type": "boolean"
},
"callingPoints": {
"type": "string",
"pattern": "^/service/[0-9A-Z_]+/\\d{4}-\\d{2}-\\d{2}/calling-points$"
},
"transferAdvice": {
"type": "array",
"items": {
"type": "string"
}
},
"reservable": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"type",
"mode",
"retailServiceId",
"trainUid",
"callingPoints"
],
"additionalProperties": false
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"type": "fixed",
"mode": "train",
"retailServiceId": "AB12345",
"trainUid": "A1234",
"callingPoints": "/service/A12345/2017-02-09/calling-points",
"reservable": [
"Recommended"
]
}
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
URI parameters
string tuid (required)
Pattern: ^[0-9A-Z_]+$
string date (required)
Pattern: ^[0-9\-]+$
GET /service/{tuid}/{date}/calling-points
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"location": {
"type": "object",
"properties": {
"crs": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"nlc": {
"type": "string",
"pattern": "^[0-9]{4}$"
}
}
},
"order": {
"type": "integer"
},
"arriveTime": {
"type": [
"string",
"null"
]
},
"departTime": {
"type": [
"string",
"null"
]
},
"platform": {
"type": "string"
}
}
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": [
{
"location": {
"crs": "EDB",
"nlc": "9328"
},
"order": 1,
"arriveTime": "6:40",
"departTime": "4:40",
"platform": "11"
},
{
"location": {
"crs": "INK",
"nlc": "9136"
},
"order": 2,
"arriveTime": "4:58",
"departTime": "3:58",
"platform": "2"
}
]
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
URI parameters
string id (required)
Pattern: ^\d+$
GET /passenger/{id}
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"properties": {
"title": {
"type": [
"string",
"null"
]
},
"initials": {
"type": [
"string",
"null"
]
},
"surname": {
"type": [
"string",
"null"
]
},
"photocardNumber": {
"type": [
"string",
"null"
]
},
"isChild": {
"type": "boolean"
}
},
"additionalProperties": false,
"required": [
"title",
"initials",
"surname",
"photocardNumber",
"isChild"
]
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"title": "Mr",
"initials": "F",
"surname": "Bar",
"photocardNumber": "12345678",
"isChild": false
}
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Passenger with id 20234234234234324 not found."
}
URI parameters
string id (required)
Pattern: ^.+$
GET /reservation/{id}
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"properties": {
"created": {
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
"seats": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/seat-reservation/[0-9]+$"
}
}
},
"required": [
"created",
"seats"
],
"additionalProperties": false
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"created": "2015-03-31T13:50:58+01:00",
"seats": [
"/seat-reservation/1234",
"/seat-reservation/4567"
]
},
"links": []
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
URI parameters
string id (required)
Pattern: ^\d+$
GET /seat-reservation/{id}
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"properties": {
"coach": {
"type": "string",
"pattern": "^[A-Z]$"
},
"seat": {
"type": "string",
"pattern": "^[0-9]{1,3}[A-Z]$"
},
"leg": {
"type": "string",
"pattern": "^/leg/[0-9]+$"
},
"fareLeg": {
"type": "string",
"pattern": "^/leg/[0-9]+$"
},
"supplement": {
"type": "string",
"pattern": "^/supplement/[0-9]+$"
},
"reservation": {
"type": "string",
"pattern": "^/reservation/[A-Z0-9]+$"
},
"display": {
"type": "object",
"properties": {
"coach": {
"type": "string",
"pattern": "^[A-Z]$"
},
"seat": {
"type": "string",
"pattern": "^[0-9]{1,3}[A-Z]$"
}
}
}
},
"required": [
"coach",
"seat",
"leg",
"fareLeg",
"supplement",
"reservation",
"display"
],
"additionalProperties": false
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"coach": "A",
"seat": "12F",
"display": {
"coach": "A",
"seat": "12"
},
"leg": "/leg/123",
"fareLeg": "/leg/123",
"supplement": "/supplement/123456",
"reservation": "/reservation/ZY1233DB"
},
"links": []
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Passenger with id 20234234234234324 not found."
}
URI parameters
string id (required)
Pattern: ^\d+$
GET /supplement/{id}
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"type": {
"type": "string",
"pattern": "^/supplement-type/[A-Z0-9]+$"
},
"transactionNumber": {
"type": [
"string",
"null"
]
},
"price": {
"type": "number"
},
"hasReservation": {
"type": "boolean"
},
"isBerth": {
"type": "boolean"
},
"isMandatory": {
"type": "boolean"
}
},
"required": [
"id",
"type",
"transactionNumber",
"price",
"hasReservation",
"isBerth",
"isMandatory"
],
"additionalProperties": false
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"id": 1,
"type": "/supplement-type/XFS",
"transactionNumber": null,
"price": 0,
"hasReservation": true,
"isBerth": false,
"isMandatory": false
}
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Supplement with id 1123213213 not found."
}
URI parameters
string id (required)
Pattern: ^\d+$
GET /sundry/{id}
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"properties": {
"type": {
"type": "string",
"pattern": "^/sundry-type/[0-9]{5}$"
},
"price": {
"type": "integer"
},
"refundId": {
"type": [
"integer",
"null"
]
}
},
"required": [
"type",
"price",
"refundId"
],
"additionalProperties": false
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"type": "/sundry-type/09015",
"price": 100,
"refundId": null
}
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Sundry with id 1123213213 not found."
}
Returns a user by ID.
URI parameters
string id (required)
Pattern: ^\d+$
GET /user/{id}
200 application/json
Response schema (show)
{
"type": "object",
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "User ID"
},
"group": {
"type": "string",
"description": "User group"
},
"description": {
"type": "string",
"description": "Human-readable description of the user"
},
"business": {
"description": "Business ID, or null if not associated with a business",
"oneOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"in_credits": {
"type": "boolean",
"description": "Whether the user is in credits mode"
},
"shoutbox": {
"description": "Shoutbox content, or null",
"oneOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"icon": {
"type": "string",
"description": "User icon identifier"
}
},
"required": [
"id",
"group",
"description",
"in_credits",
"icon"
],
"additionalProperties": false
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
},
"required": [
"status"
],
"additionalProperties": false
}
Response example (show)
{
"status": "success",
"data": {
"id": "42",
"group": "customer",
"description": "Jane Smith",
"business": null,
"in_credits": false,
"shoutbox": null,
"icon": "user"
}
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
GET /search-coj
Search for change of journey for original tickets. Query parameters require only originalTickets, but it can be extended with any odyssey query parameter to change date & time of travel, adults, children and railcards. It returns augmented odyssey response. It additionally has "priceCoveredByOriginalTickets" property on fareOption, "priceCoveredByOriginalFare" property on fare, "originalTicket" on fareOption's fare and "sameAsOriginalJourney" on journey.
200 application/json
Response schema (show)
{
"type": "object",
"additionalProperties": false,
"required": [
"pagination",
"response"
],
"properties": {
"pagination": {
"type": "object",
"additionalProperties": false,
"properties": {
"outward": {
"$ref": "./PaginationResult.jschema"
},
"inward": {
"$ref": "./PaginationResult.jschema"
}
}
},
"response": {
"type": "object",
"additionalProperties": false,
"required": [
"outward",
"inward",
"fares",
"availability"
],
"properties": {
"outward": {
"type": "array",
"items": {
"$ref": "Types.jschema#/journeyUri"
}
},
"inward": {
"type": "array",
"items": {
"$ref": "Types.jschema#/journeyUri"
}
},
"fares": {
"type": "object",
"description": "array associate journeys with fares."
},
"addons": {
"type": "object",
"required": [
"outward"
],
"properties": {
"outward": {
"type": "object"
},
"inward": {
"type": "object"
}
}
},
"availability": {
"type": "object",
"description": "availabilities associated with journeys and ticket types"
}
}
},
"messages": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"tag",
"level",
"title"
],
"properties": {
"tag": {
"type": "string"
},
"level": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"additionalProperties": false,
"properties": {
"outward": {
"$ref": "./PaginationResult.jschema"
},
"inward": {
"$ref": "./PaginationResult.jschema"
}
}
},
"links": {
"type": "object",
"additionalProperties": false,
"patternProperties": {
"^/odyssey/fare/.+$": {
"$ref": "Fare.jschema"
},
"^/odyssey/fare-option/.+$": {
"$ref": "FareOption.jschema"
},
"^/odyssey/journey/.+$": {
"$ref": "Journey.jschema"
},
"^/odyssey/leg/.+$": {
"$ref": "Leg.jschema"
}
}
}
}
}
Response example (show)
{
"response": {
"outward": [
"/odyssey/journey/270:270:MCV_HBD_G37312",
"/odyssey/journey/270:270:MCV_HBD_G30188",
"/odyssey/journey/270:270:MCV_HBD_G30155",
"/odyssey/journey/270:270:MCV_HBD_G37319",
"/odyssey/journey/270:270:MCV_HBD_G31967"
],
"inward": [],
"fares": {
"/odyssey/journey/270:270:MCV_HBD_G37312": {
"outward": [
"/odyssey/fare-option/270:/fare/2970-8524-00429-DG0-000-1-NT---268-1-0--370-1-0"
],
"inward": [],
"return": []
},
"/odyssey/journey/270:270:MCV_HBD_G30188": {
"outward": [
"/odyssey/fare-option/270:/fare/2970-8524-00429-DG3-000-1-NT---268-1-0--440-1-0"
],
"inward": [],
"return": []
},
"/odyssey/journey/270:270:MCV_HBD_G30155": {
"outward": [
"/odyssey/fare-option/270:/fare/2970-8524-00429-DG6-000-1-NT---268-1-0--520-1-0"
],
"inward": [],
"return": []
},
"/odyssey/journey/270:270:MCV_HBD_G37319": {
"outward": [
"/odyssey/fare-option/270:/fare/2970-8524-00429-DG6-000-1-NT---268-1-0--520-1-0"
],
"inward": [],
"return": []
},
"/odyssey/journey/270:270:MCV_HBD_G31967": {
"outward": [
"/odyssey/fare-option/270:/fare/2970-8524-00429-DG0-000-1-NT---268-1-0--370-1-0"
],
"inward": [],
"return": []
}
},
"addons": {
"outward": {
"origin": [],
"destination": []
}
},
"availability": {
"/odyssey/journey/270:270:MCV_HBD_G37312": {
"/ticket-type/DG0": {
"/route/00429": 8
}
},
"/odyssey/journey/270:270:MCV_HBD_G30188": {
"/ticket-type/DG3": {
"/route/00429": 8
}
},
"/odyssey/journey/270:270:MCV_HBD_G30155": {
"/ticket-type/DG6": {
"/route/00429": 8
}
},
"/odyssey/journey/270:270:MCV_HBD_G37319": {
"/ticket-type/DG6": {
"/route/00429": 8
}
},
"/odyssey/journey/270:270:MCV_HBD_G31967": {
"/ticket-type/DG0": {
"/route/00429": 8
}
}
}
},
"pagination": {
"outward": {
"current": "origin=2970&destination=8524&outwardDate=2024-09-26&outwardDepartAt=13%3A33&adults=1&children=0&limit=5&returns=false&ticketCategory=advance&originalTickets=140099",
"earlier": "origin=2970&destination=8524&outwardDate=2024-09-26&outwardDepartBy=13%3A36&adults=1&children=0&limit=5&returns=false&ticketCategory=advance&originalTickets=140099",
"later": "origin=2970&destination=8524&outwardDate=2024-09-26&outwardDepartAt=14%3A54&adults=1&children=0&limit=5&returns=false&ticketCategory=advance&originalTickets=140099"
}
},
"links": {
"/odyssey/fare/2970-8524-00429-DG0-000-1-NT---268-1-0--370": {
"origin": "/station/2970",
"destination": "/station/8524",
"route": "/route/00429",
"price": 370,
"originalPrice": 370,
"ticketType": "/ticket-type/DG0",
"restrictionCode": "NT",
"fareSetter": "NTH",
"railcard": null,
"statusCode": "000",
"xLondon": 0,
"permittedDestinationStations": "/station/8524/permitted-stations/2970/00429",
"permittedOriginStations": "/station/2970/permitted-stations/8524/00429",
"discount": null,
"groups": [
"2970-8524-00429-DG0"
],
"priceCoveredByOriginalTickets": 370
},
"/odyssey/fare-option/270:/fare/2970-8524-00429-DG0-000-1-NT---268-1-0--370-1-0": {
"totalPrice": 370,
"labels": [
"advance"
],
"hasETicket": "/has-e-ticket/2970-8524-2970-8524-00429-DG0",
"supplements": [],
"fares": [
{
"adults": 1,
"children": 0,
"fare": "/odyssey/fare/2970-8524-00429-DG0-000-1-NT---268-1-0--370",
"originalTicket": "/ticket/140099"
}
],
"validUntil": "2024-09-27T23:59:59",
"priceCoveredByOriginalTickets": 370
},
"/odyssey/fare/2970-8524-00429-DG3-000-1-NT---268-1-0--440": {
"origin": "/station/2970",
"destination": "/station/8524",
"route": "/route/00429",
"price": 440,
"originalPrice": 440,
"ticketType": "/ticket-type/DG3",
"restrictionCode": "NT",
"fareSetter": "NTH",
"railcard": null,
"statusCode": "000",
"xLondon": 0,
"permittedDestinationStations": "/station/8524/permitted-stations/2970/00429",
"permittedOriginStations": "/station/2970/permitted-stations/8524/00429",
"discount": null,
"groups": [
"2970-8524-00429-DG3"
],
"priceCoveredByOriginalTickets": 440
},
"/odyssey/fare-option/270:/fare/2970-8524-00429-DG3-000-1-NT---268-1-0--440-1-0": {
"totalPrice": 440,
"labels": [
"advance"
],
"hasETicket": "/has-e-ticket/2970-8524-2970-8524-00429-DG3",
"supplements": [],
"fares": [
{
"adults": 1,
"children": 0,
"fare": "/odyssey/fare/2970-8524-00429-DG3-000-1-NT---268-1-0--440",
"originalTicket": "/ticket/140099"
}
],
"validUntil": "2024-09-27T23:59:59",
"priceCoveredByOriginalTickets": 440
},
"/odyssey/fare/2970-8524-00429-DG6-000-1-NT---268-1-0--520": {
"origin": "/station/2970",
"destination": "/station/8524",
"route": "/route/00429",
"price": 520,
"originalPrice": 520,
"ticketType": "/ticket-type/DG6",
"restrictionCode": "NT",
"fareSetter": "NTH",
"railcard": null,
"statusCode": "000",
"xLondon": 0,
"permittedDestinationStations": "/station/8524/permitted-stations/2970/00429",
"permittedOriginStations": "/station/2970/permitted-stations/8524/00429",
"discount": null,
"groups": [
"2970-8524-00429-DG6"
],
"priceCoveredByOriginalTickets": 520
},
"/odyssey/fare-option/270:/fare/2970-8524-00429-DG6-000-1-NT---268-1-0--520-1-0": {
"totalPrice": 520,
"labels": [
"advance"
],
"hasETicket": "/has-e-ticket/2970-8524-2970-8524-00429-DG6",
"supplements": [],
"fares": [
{
"adults": 1,
"children": 0,
"fare": "/odyssey/fare/2970-8524-00429-DG6-000-1-NT---268-1-0--520",
"originalTicket": "/ticket/140099"
}
],
"validUntil": "2024-09-27T23:59:59",
"priceCoveredByOriginalTickets": 520
},
"/odyssey/leg/270:MCV_HBD_G37312": {
"type": "timetabled",
"source": "dtd",
"origin": "/station/MCV",
"destination": "/station/HBD",
"mode": "train",
"operator": "/toc/NT",
"service": {
"trainUid": "G37312",
"retailServiceId": "NT414700",
"reservationFlag": "S",
"reservable": [
"Possible"
],
"origin": "/station/WGW",
"destination": "/station/LDS",
"date": "2024-09-26",
"scheduledDeparture": "2024-09-26T12:49:00"
},
"departure": "2024-09-26T13:36:00",
"arrival": "2024-09-26T14:15:00",
"scheduledDeparture": "2024-09-26T13:36:00",
"scheduledArrival": "2024-09-26T14:15:00",
"disruptions": "/disruption/2024-09-26T13:36:00/NT_MCV_HBD_G37312",
"callingPoints": [
{
"station": "/station/MCV",
"departure": "2024-09-26T13:36:00",
"arrival": "2024-09-26T13:33:00",
"scheduledDeparture": "2024-09-26T13:36:00",
"scheduledArrival": "2024-09-26T13:33:00",
"cancelled": false,
"delayed": false,
"platform": "6",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/RCD",
"departure": "2024-09-26T13:51:00",
"arrival": "2024-09-26T13:51:00",
"scheduledDeparture": "2024-09-26T13:51:00",
"scheduledArrival": "2024-09-26T13:51:00",
"cancelled": false,
"delayed": false,
"platform": "1",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/SMB",
"departure": "2024-09-26T13:55:00",
"arrival": "2024-09-26T13:55:00",
"scheduledDeparture": "2024-09-26T13:55:00",
"scheduledArrival": "2024-09-26T13:55:00",
"cancelled": false,
"delayed": false,
"platform": "2",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/LTL",
"departure": "2024-09-26T13:59:00",
"arrival": "2024-09-26T13:58:00",
"scheduledDeparture": "2024-09-26T13:59:00",
"scheduledArrival": "2024-09-26T13:58:00",
"cancelled": false,
"delayed": false,
"platform": "2",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/WDN",
"departure": "2024-09-26T14:05:00",
"arrival": "2024-09-26T14:05:00",
"scheduledDeparture": "2024-09-26T14:05:00",
"scheduledArrival": "2024-09-26T14:05:00",
"cancelled": false,
"delayed": false,
"platform": "2",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/TOD",
"departure": "2024-09-26T14:08:00",
"arrival": "2024-09-26T14:08:00",
"scheduledDeparture": "2024-09-26T14:08:00",
"scheduledArrival": "2024-09-26T14:08:00",
"cancelled": false,
"delayed": false,
"platform": "2",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/HBD",
"departure": "2024-09-26T14:15:00",
"arrival": "2024-09-26T14:15:00",
"scheduledDeparture": "2024-09-26T14:15:00",
"scheduledArrival": "2024-09-26T14:15:00",
"cancelled": false,
"delayed": false,
"platform": "2",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
}
],
"isDelayed": false
},
"/odyssey/journey/270:270:MCV_HBD_G37312": {
"id": "/odyssey/journey/270:270:MCV_HBD_G37312",
"origin": "/station/MCV",
"destination": "/station/HBD",
"departure": "2024-09-26T13:36:00",
"arrival": "2024-09-26T14:15:00",
"scheduledDeparture": "2024-09-26T13:36:00",
"scheduledArrival": "2024-09-26T14:15:00",
"legs": [
"/odyssey/leg/270:MCV_HBD_G37312"
],
"disruptions": "/disruption/2024-09-26T13:36:00/NT_MCV_HBD_G37312",
"isReservationCompulsory": false,
"isReservationPossible": true,
"isOvertaken": false,
"overtakingJourneysCount": 0,
"status": "ready",
"boardingTime": null,
"alightingTime": null,
"distance": 23,
"sameAsOriginalJourney": false
},
"/odyssey/leg/270:MCV_HBD_G30188": {
"type": "timetabled",
"source": "dtd",
"origin": "/station/MCV",
"destination": "/station/HBD",
"mode": "train",
"operator": "/toc/NT",
"service": {
"trainUid": "G30188",
"retailServiceId": "NT414900",
"reservationFlag": "S",
"reservable": [
"Possible"
],
"origin": "/station/MCV",
"destination": "/station/LDS",
"date": "2024-09-26",
"scheduledDeparture": "2024-09-26T13:57:00"
},
"departure": "2024-09-26T13:57:00",
"arrival": "2024-09-26T14:25:00",
"scheduledDeparture": "2024-09-26T13:57:00",
"scheduledArrival": "2024-09-26T14:25:00",
"disruptions": "/disruption/2024-09-26T13:57:00/NT_MCV_HBD_G30188",
"callingPoints": [
{
"station": "/station/MCV",
"departure": "2024-09-26T13:57:00",
"arrival": "2024-09-26T13:57:00",
"scheduledDeparture": "2024-09-26T13:57:00",
"scheduledArrival": "2024-09-26T13:57:00",
"cancelled": false,
"delayed": false,
"platform": "1",
"pickup": true,
"dropoff": false,
"activities": [
"PickUpOnly"
]
},
{
"station": "/station/RCD",
"departure": "2024-09-26T14:10:00",
"arrival": "2024-09-26T14:09:00",
"scheduledDeparture": "2024-09-26T14:10:00",
"scheduledArrival": "2024-09-26T14:09:00",
"cancelled": false,
"delayed": false,
"platform": "1",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/TOD",
"departure": "2024-09-26T14:19:00",
"arrival": "2024-09-26T14:19:00",
"scheduledDeparture": "2024-09-26T14:19:00",
"scheduledArrival": "2024-09-26T14:19:00",
"cancelled": false,
"delayed": false,
"platform": "2",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/HBD",
"departure": "2024-09-26T14:26:00",
"arrival": "2024-09-26T14:25:00",
"scheduledDeparture": "2024-09-26T14:26:00",
"scheduledArrival": "2024-09-26T14:25:00",
"cancelled": false,
"delayed": false,
"platform": "2",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
}
],
"isDelayed": false
},
"/odyssey/journey/270:270:MCV_HBD_G30188": {
"id": "/odyssey/journey/270:270:MCV_HBD_G30188",
"origin": "/station/MCV",
"destination": "/station/HBD",
"departure": "2024-09-26T13:57:00",
"arrival": "2024-09-26T14:25:00",
"scheduledDeparture": "2024-09-26T13:57:00",
"scheduledArrival": "2024-09-26T14:25:00",
"legs": [
"/odyssey/leg/270:MCV_HBD_G30188"
],
"disruptions": "/disruption/2024-09-26T13:57:00/NT_MCV_HBD_G30188",
"isReservationCompulsory": false,
"isReservationPossible": true,
"isOvertaken": false,
"overtakingJourneysCount": 0,
"status": "ready",
"boardingTime": null,
"alightingTime": null,
"distance": 23,
"sameAsOriginalJourney": false
},
"/odyssey/leg/270:MCV_HBD_G30155": {
"type": "timetabled",
"source": "dtd",
"origin": "/station/MCV",
"destination": "/station/HBD",
"mode": "train",
"operator": "/toc/NT",
"service": {
"trainUid": "G30155",
"retailServiceId": "NT415100",
"reservationFlag": "S",
"reservable": [
"Possible"
],
"origin": "/station/CTR",
"destination": "/station/LDS",
"date": "2024-09-26",
"scheduledDeparture": "2024-09-26T13:28:00"
},
"departure": "2024-09-26T14:21:00",
"arrival": "2024-09-26T14:49:00",
"scheduledDeparture": "2024-09-26T14:21:00",
"scheduledArrival": "2024-09-26T14:49:00",
"disruptions": "/disruption/2024-09-26T14:21:00/NT_MCV_HBD_G30155",
"callingPoints": [
{
"station": "/station/MCV",
"departure": "2024-09-26T14:21:00",
"arrival": "2024-09-26T14:18:00",
"scheduledDeparture": "2024-09-26T14:21:00",
"scheduledArrival": "2024-09-26T14:18:00",
"cancelled": false,
"delayed": false,
"platform": "4",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/RCD",
"departure": "2024-09-26T14:34:00",
"arrival": "2024-09-26T14:33:00",
"scheduledDeparture": "2024-09-26T14:34:00",
"scheduledArrival": "2024-09-26T14:33:00",
"cancelled": false,
"delayed": false,
"platform": "1",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/TOD",
"departure": "2024-09-26T14:43:00",
"arrival": "2024-09-26T14:43:00",
"scheduledDeparture": "2024-09-26T14:43:00",
"scheduledArrival": "2024-09-26T14:43:00",
"cancelled": false,
"delayed": false,
"platform": "2",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/HBD",
"departure": "2024-09-26T14:50:00",
"arrival": "2024-09-26T14:49:00",
"scheduledDeparture": "2024-09-26T14:50:00",
"scheduledArrival": "2024-09-26T14:49:00",
"cancelled": false,
"delayed": false,
"platform": "2",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
}
],
"isDelayed": false
},
"/odyssey/journey/270:270:MCV_HBD_G30155": {
"id": "/odyssey/journey/270:270:MCV_HBD_G30155",
"origin": "/station/MCV",
"destination": "/station/HBD",
"departure": "2024-09-26T14:21:00",
"arrival": "2024-09-26T14:49:00",
"scheduledDeparture": "2024-09-26T14:21:00",
"scheduledArrival": "2024-09-26T14:49:00",
"legs": [
"/odyssey/leg/270:MCV_HBD_G30155"
],
"disruptions": "/disruption/2024-09-26T14:21:00/NT_MCV_HBD_G30155",
"isReservationCompulsory": false,
"isReservationPossible": true,
"isOvertaken": false,
"overtakingJourneysCount": 0,
"status": "ready",
"boardingTime": null,
"alightingTime": null,
"distance": 23,
"sameAsOriginalJourney": false
},
"/odyssey/leg/270:MCV_HBD_G37319": {
"type": "timetabled",
"source": "dtd",
"origin": "/station/MCV",
"destination": "/station/HBD",
"mode": "train",
"operator": "/toc/NT",
"service": {
"trainUid": "G37319",
"retailServiceId": "NT415300",
"reservationFlag": "S",
"reservable": [
"Possible"
],
"origin": "/station/WGW",
"destination": "/station/LDS",
"date": "2024-09-26",
"scheduledDeparture": "2024-09-26T13:49:00"
},
"departure": "2024-09-26T14:36:00",
"arrival": "2024-09-26T15:15:00",
"scheduledDeparture": "2024-09-26T14:36:00",
"scheduledArrival": "2024-09-26T15:15:00",
"disruptions": "/disruption/2024-09-26T14:36:00/NT_MCV_HBD_G37319",
"callingPoints": [
{
"station": "/station/MCV",
"departure": "2024-09-26T14:36:00",
"arrival": "2024-09-26T14:33:00",
"scheduledDeparture": "2024-09-26T14:36:00",
"scheduledArrival": "2024-09-26T14:33:00",
"cancelled": false,
"delayed": false,
"platform": "6",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/RCD",
"departure": "2024-09-26T14:51:00",
"arrival": "2024-09-26T14:50:00",
"scheduledDeparture": "2024-09-26T14:51:00",
"scheduledArrival": "2024-09-26T14:50:00",
"cancelled": false,
"delayed": false,
"platform": "1",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/SMB",
"departure": "2024-09-26T14:55:00",
"arrival": "2024-09-26T14:55:00",
"scheduledDeparture": "2024-09-26T14:55:00",
"scheduledArrival": "2024-09-26T14:55:00",
"cancelled": false,
"delayed": false,
"platform": "2",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/LTL",
"departure": "2024-09-26T14:59:00",
"arrival": "2024-09-26T14:58:00",
"scheduledDeparture": "2024-09-26T14:59:00",
"scheduledArrival": "2024-09-26T14:58:00",
"cancelled": false,
"delayed": false,
"platform": "2",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/WDN",
"departure": "2024-09-26T15:05:00",
"arrival": "2024-09-26T15:05:00",
"scheduledDeparture": "2024-09-26T15:05:00",
"scheduledArrival": "2024-09-26T15:05:00",
"cancelled": false,
"delayed": false,
"platform": "2",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/TOD",
"departure": "2024-09-26T15:08:00",
"arrival": "2024-09-26T15:08:00",
"scheduledDeparture": "2024-09-26T15:08:00",
"scheduledArrival": "2024-09-26T15:08:00",
"cancelled": false,
"delayed": false,
"platform": "2",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/HBD",
"departure": "2024-09-26T15:15:00",
"arrival": "2024-09-26T15:15:00",
"scheduledDeparture": "2024-09-26T15:15:00",
"scheduledArrival": "2024-09-26T15:15:00",
"cancelled": false,
"delayed": false,
"platform": "2",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
}
],
"isDelayed": false
},
"/odyssey/journey/270:270:MCV_HBD_G37319": {
"id": "/odyssey/journey/270:270:MCV_HBD_G37319",
"origin": "/station/MCV",
"destination": "/station/HBD",
"departure": "2024-09-26T14:36:00",
"arrival": "2024-09-26T15:15:00",
"scheduledDeparture": "2024-09-26T14:36:00",
"scheduledArrival": "2024-09-26T15:15:00",
"legs": [
"/odyssey/leg/270:MCV_HBD_G37319"
],
"disruptions": "/disruption/2024-09-26T14:36:00/NT_MCV_HBD_G37319",
"isReservationCompulsory": false,
"isReservationPossible": true,
"isOvertaken": false,
"overtakingJourneysCount": 0,
"status": "ready",
"boardingTime": null,
"alightingTime": null,
"distance": 23,
"sameAsOriginalJourney": true
},
"/odyssey/leg/270:MCV_HBD_G31967": {
"type": "timetabled",
"source": "dtd",
"origin": "/station/MCV",
"destination": "/station/HBD",
"mode": "train",
"operator": "/toc/NT",
"service": {
"trainUid": "G31967",
"retailServiceId": "NT415500",
"reservationFlag": "S",
"reservable": [
"Possible"
],
"origin": "/station/MCV",
"destination": "/station/LDS",
"date": "2024-09-26",
"scheduledDeparture": "2024-09-26T14:54:00"
},
"departure": "2024-09-26T14:54:00",
"arrival": "2024-09-26T15:25:00",
"scheduledDeparture": "2024-09-26T14:54:00",
"scheduledArrival": "2024-09-26T15:25:00",
"disruptions": "/disruption/2024-09-26T14:54:00/NT_MCV_HBD_G31967",
"callingPoints": [
{
"station": "/station/MCV",
"departure": "2024-09-26T14:54:00",
"arrival": "2024-09-26T14:54:00",
"scheduledDeparture": "2024-09-26T14:54:00",
"scheduledArrival": "2024-09-26T14:54:00",
"cancelled": false,
"delayed": false,
"platform": "1",
"pickup": true,
"dropoff": false,
"activities": [
"PickUpOnly"
]
},
{
"station": "/station/RCD",
"departure": "2024-09-26T15:09:00",
"arrival": "2024-09-26T15:06:00",
"scheduledDeparture": "2024-09-26T15:09:00",
"scheduledArrival": "2024-09-26T15:06:00",
"cancelled": false,
"delayed": false,
"platform": "1",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/TOD",
"departure": "2024-09-26T15:19:00",
"arrival": "2024-09-26T15:18:00",
"scheduledDeparture": "2024-09-26T15:19:00",
"scheduledArrival": "2024-09-26T15:18:00",
"cancelled": false,
"delayed": false,
"platform": "2",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
},
{
"station": "/station/HBD",
"departure": "2024-09-26T15:26:00",
"arrival": "2024-09-26T15:25:00",
"scheduledDeparture": "2024-09-26T15:26:00",
"scheduledArrival": "2024-09-26T15:25:00",
"cancelled": false,
"delayed": false,
"platform": "2",
"pickup": true,
"dropoff": true,
"activities": [
"Normal"
]
}
],
"isDelayed": false
},
"/odyssey/journey/270:270:MCV_HBD_G31967": {
"id": "/odyssey/journey/270:270:MCV_HBD_G31967",
"origin": "/station/MCV",
"destination": "/station/HBD",
"departure": "2024-09-26T14:54:00",
"arrival": "2024-09-26T15:25:00",
"scheduledDeparture": "2024-09-26T14:54:00",
"scheduledArrival": "2024-09-26T15:25:00",
"legs": [
"/odyssey/leg/270:MCV_HBD_G31967"
],
"disruptions": "/disruption/2024-09-26T14:54:00/NT_MCV_HBD_G31967",
"isReservationCompulsory": false,
"isReservationPossible": true,
"isOvertaken": false,
"overtakingJourneysCount": 0,
"status": "ready",
"boardingTime": null,
"alightingTime": null,
"distance": 23,
"sameAsOriginalJourney": false
},
"/station/CTR": {
"name": {
"station": "CHESTER",
"location": "CHESTER",
"display": "Chester",
"print": "Chester"
},
"code": {
"nlc": "2412",
"uic": "7024120",
"crs": "CTR",
"tiploc": "CHST",
"atco": "9100CHST"
},
"latitude": 53.196695,
"longitude": -2.879594,
"facilities": [
"BO",
"TVM",
"G",
"L",
"LI",
"LI",
"LI"
],
"groups": "/station/2412/groups",
"members": [],
"londonTerminals": "/station/2412/london-terminals",
"isGoldCardLocation": false,
"lul": "NNNNNN-000000000000-_-0N009006S0",
"zoneNo": null,
"zoneInd": null,
"locIdTypes": [
"S"
],
"fareGroup": "2412"
},
"/station/TOD": {
"name": {
"station": "TODMORDEN",
"location": "TODMORDEN",
"display": "Todmorden",
"print": "Todmorden"
},
"code": {
"nlc": "2677",
"uic": "7026770",
"crs": "TOD",
"tiploc": "TODMRDN",
"atco": "9100TODMRDN"
},
"latitude": 53.713818,
"longitude": -2.099659,
"facilities": [
"TVM",
"V",
"L",
"LI",
"LI",
"LI",
"LI"
],
"groups": [],
"members": [],
"londonTerminals": "/station/2677/london-terminals",
"isGoldCardLocation": false,
"lul": "NNNNNN-000000000000-_-0N009006S0",
"zoneNo": null,
"zoneInd": null,
"locIdTypes": [
"S"
],
"fareGroup": "2677"
},
"/station/WDN": {
"name": {
"station": "WALSDEN",
"location": "WALSDEN",
"display": "Walsden",
"print": "Walsden"
},
"code": {
"nlc": "2665",
"uic": "7026650",
"crs": "WDN",
"tiploc": "WDEN",
"atco": "9100WDEN"
},
"latitude": 53.69626,
"longitude": -2.104464,
"facilities": [
"TVM",
"L",
"LI",
"LI",
"LI"
],
"groups": [],
"members": [],
"londonTerminals": "/station/2665/london-terminals",
"isGoldCardLocation": false,
"lul": "NNNNNN-000000000000-_-0N009000S0",
"zoneNo": null,
"zoneInd": null,
"locIdTypes": [
"S"
],
"fareGroup": "2665"
},
"/station/LTL": {
"name": {
"station": "LITTLEBOROUGH",
"location": "LITTLEBOROUGH",
"display": "Littleborough",
"print": "Littleborough"
},
"code": {
"nlc": "2661",
"uic": "7026610",
"crs": "LTL",
"tiploc": "LITLBRO",
"atco": "9100LITLBRO"
},
"latitude": 53.642995,
"longitude": -2.094651,
"facilities": [
"TVM",
"V",
"L",
"LI",
"LI",
"LI",
"LI"
],
"groups": [],
"members": [],
"londonTerminals": "/station/2661/london-terminals",
"isGoldCardLocation": false,
"lul": "NNNNNN-000000000000-_-0N009006S0",
"zoneNo": null,
"zoneInd": null,
"locIdTypes": [
"S"
],
"fareGroup": "2661"
},
"/station/SMB": {
"name": {
"station": "SMITHY BRIDGE",
"location": "SMITHY BRIDGE",
"display": "Smithy Bridge",
"print": "Smithy Bridge"
},
"code": {
"nlc": "2660",
"uic": "7026600",
"crs": "SMB",
"tiploc": "SMBG",
"atco": "9100SMBG"
},
"latitude": 53.633254,
"longitude": -2.113502,
"facilities": [
"TVM",
"L",
"LI",
"LI",
"LI"
],
"groups": [],
"members": [],
"londonTerminals": "/station/2660/london-terminals",
"isGoldCardLocation": false,
"lul": "NNNNNN-000000000000-_-0N009006S0",
"zoneNo": null,
"zoneInd": null,
"locIdTypes": [
"S"
],
"fareGroup": "2660"
},
"/station/RCD": {
"name": {
"station": "ROCHDALE",
"location": "ROCHDALE",
"display": "Rochdale",
"print": "Rochdale"
},
"code": {
"nlc": "2924",
"uic": "7029240",
"crs": "RCD",
"tiploc": "RCHDALE",
"atco": "9100RCHDALE"
},
"latitude": 53.610307,
"longitude": -2.153524,
"facilities": [
"TVM",
"G",
"L",
"LI",
"LI",
"LI",
"LI"
],
"groups": "/station/2924/groups",
"members": [],
"londonTerminals": "/station/2924/london-terminals",
"isGoldCardLocation": false,
"lul": "NNNNNN-000000000000-_-0N009006S0",
"zoneNo": null,
"zoneInd": null,
"locIdTypes": [
"S"
],
"fareGroup": "2924"
},
"/station/LDS": {
"name": {
"station": "LEEDS",
"location": "LEEDS",
"display": "Leeds",
"print": "Leeds"
},
"code": {
"nlc": "8487",
"uic": "7084870",
"crs": "LDS",
"tiploc": "LEEDS",
"atco": "9100LEEDS"
},
"latitude": 53.795627,
"longitude": -1.548026,
"facilities": [
"BO",
"TVM",
"G",
"L",
"LI",
"LI",
"LI",
"LI"
],
"groups": "/station/8487/groups",
"members": [],
"londonTerminals": "/station/8487/london-terminals",
"isGoldCardLocation": false,
"lul": "NNNNNN-085000000000-_-0N009006S0",
"zoneNo": null,
"zoneInd": null,
"locIdTypes": [
"S"
],
"fareGroup": "8487"
},
"/station/WGW": {
"name": {
"station": "WIGAN WALLGATE",
"location": "WIGAN WALLGATE",
"display": "Wigan Wallgate",
"print": "Wigan Wallgate"
},
"code": {
"nlc": "2406",
"uic": "7024060",
"crs": "WGW",
"tiploc": "WIGANWL",
"atco": "9100WIGANWL"
},
"latitude": 53.544821,
"longitude": -2.633185,
"facilities": [
"TVM",
"G",
"L",
"LI",
"LI",
"LI",
"LI"
],
"groups": "/station/2406/groups",
"members": [],
"londonTerminals": "/station/2406/london-terminals",
"isGoldCardLocation": false,
"lul": "NNNNNN-000000000000-_-0N009006S0",
"zoneNo": null,
"zoneInd": null,
"locIdTypes": [
"S"
],
"fareGroup": "0446"
},
"/toc/NT": {
"code": "NT",
"name": "NORTHERN",
"description": "NORTHERN"
},
"/station/HBD": {
"name": {
"station": "HEBDEN BRIDGE",
"location": "HEBDEN BRIDGE",
"display": "Hebden Bridge",
"print": "Hebden Bridge"
},
"code": {
"nlc": "8524",
"uic": "7085240",
"crs": "HBD",
"tiploc": "HBDNBDG",
"atco": "9100HBDNBDG"
},
"latitude": 53.737587,
"longitude": -2.009059,
"facilities": [
"TVM",
"L",
"LI",
"LI",
"LI",
"LI"
],
"groups": [],
"members": [],
"londonTerminals": "/station/8524/london-terminals",
"isGoldCardLocation": false,
"lul": "NNNNNN-000000000000-_-0N009006S0",
"zoneNo": null,
"zoneInd": null,
"locIdTypes": [
"S"
],
"fareGroup": "8524"
},
"/station/MCV": {
"name": {
"station": "MANCHESTER VICTORIA",
"location": "MANCHESTER VIC",
"display": "Manchester Victoria",
"print": "Manchester Victoria"
},
"code": {
"nlc": "2970",
"uic": "7029700",
"crs": "MCV",
"tiploc": "MNCRVIC",
"atco": "9100MNCRVIC"
},
"latitude": 53.487468,
"longitude": -2.242599,
"facilities": [
"BO",
"TVM",
"G",
"L",
"LI",
"LI",
"LI",
"LI",
"LI"
],
"groups": "/station/2970/groups",
"members": [],
"londonTerminals": "/station/2970/london-terminals",
"isGoldCardLocation": false,
"lul": "NNNNNN-000000000000-_-0N009003S0",
"zoneNo": null,
"zoneInd": null,
"locIdTypes": [
"S"
],
"fareGroup": "0438"
},
"/ticket-type/DG6": {
"name": {
"display": "Advance Single",
"print": "Advance Single",
"description": "ADVANCE"
},
"ccstFormat": "X10",
"code": "DG6",
"validity": "/validity-type/64",
"isReturn": false,
"isSeason": false,
"isAdvance": true,
"isPackage": false,
"isCarnet": false,
"isFirstClass": false,
"reservationType": "B",
"maxPassengers": 1,
"minPassengers": 1,
"minAdults": 0,
"maxAdults": 1,
"minChildren": 0,
"maxChildren": 1,
"utsCode": 0,
"timeRestriction": 0,
"capriCode": "SDI",
"canBeRetailed": true,
"ticketCategory": "advance",
"reservationSupplement": null
},
"/ticket-type/DG3": {
"name": {
"display": "Advance Single",
"print": "Advance Single",
"description": "ADVANCE"
},
"ccstFormat": "X10",
"code": "DG3",
"validity": "/validity-type/64",
"isReturn": false,
"isSeason": false,
"isAdvance": true,
"isPackage": false,
"isCarnet": false,
"isFirstClass": false,
"reservationType": "B",
"maxPassengers": 1,
"minPassengers": 1,
"minAdults": 0,
"maxAdults": 1,
"minChildren": 0,
"maxChildren": 1,
"utsCode": 0,
"timeRestriction": 0,
"capriCode": "SDC",
"canBeRetailed": true,
"ticketCategory": "advance",
"reservationSupplement": null
},
"/ticket-type/DG0": {
"name": {
"display": "Advance Single",
"print": "Advance Single",
"description": "ADVANCE"
},
"ccstFormat": "X10",
"code": "DG0",
"validity": "/validity-type/64",
"isReturn": false,
"isSeason": false,
"isAdvance": true,
"isPackage": false,
"isCarnet": false,
"isFirstClass": false,
"reservationType": "B",
"maxPassengers": 1,
"minPassengers": 1,
"minAdults": 0,
"maxAdults": 1,
"minChildren": 0,
"maxChildren": 1,
"utsCode": 0,
"timeRestriction": 0,
"capriCode": "SDM",
"canBeRetailed": true,
"ticketCategory": "advance",
"reservationSupplement": null
},
"/route/00429": {
"code": "00429",
"name": {
"description": "AP NORTHERN ONLY",
"aaaDescription": null,
"print": "Valid on specified Northern Trains only",
"display": "Only valid on booked Northern services."
},
"included": [],
"excluded": [],
"lul": "NNNNNN-000000000000-_"
},
"/station/8524": {
"name": {
"station": "HEBDEN BRIDGE",
"location": "HEBDEN BRIDGE",
"display": "Hebden Bridge",
"print": "Hebden Bridge"
},
"code": {
"nlc": "8524",
"uic": "7085240",
"crs": "HBD",
"tiploc": "HBDNBDG",
"atco": "9100HBDNBDG"
},
"latitude": 53.737587,
"longitude": -2.009059,
"facilities": [
"TVM",
"L",
"LI",
"LI",
"LI",
"LI"
],
"groups": [],
"members": [],
"londonTerminals": "/station/8524/london-terminals",
"isGoldCardLocation": false,
"lul": "NNNNNN-000000000000-_-0N009006S0",
"zoneNo": null,
"zoneInd": null,
"locIdTypes": [
"S"
],
"fareGroup": "8524"
},
"/station/2970": {
"name": {
"station": "MANCHESTER VICTORIA",
"location": "MANCHESTER VIC",
"display": "Manchester Victoria",
"print": "Manchester Victoria"
},
"code": {
"nlc": "2970",
"uic": "7029700",
"crs": "MCV",
"tiploc": "MNCRVIC",
"atco": "9100MNCRVIC"
},
"latitude": 53.487468,
"longitude": -2.242599,
"facilities": [
"TVM",
"G",
"BO",
"L",
"LI",
"LI",
"LI",
"LI",
"LI"
],
"groups": "/station/2970/groups",
"members": [],
"londonTerminals": "/station/2970/london-terminals",
"isGoldCardLocation": false,
"lul": "NNNNNN-000000000000-_-0N009003S0",
"zoneNo": null,
"zoneInd": null,
"locIdTypes": [
"S"
],
"fareGroup": "0438"
},
"/validity-type/64": {
"code": "64",
"outward": {
"days": 1,
"months": 0,
"break": false,
"description": "BOOKDTRAINONLY"
},
"return": {
"days": 0,
"months": 0,
"break": false,
"description": "INVALID"
},
"returnMustBeAfter": {
"days": 0,
"months": 0,
"dayOfWeek": null
}
},
"/disruption/2024-09-26T14:36:00/NT_MCV_HBD_G37319": [],
"/disruption/2024-09-26T14:54:00/NT_MCV_HBD_G31967": [],
"/disruption/2024-09-26T13:57:00/NT_MCV_HBD_G30188": [],
"/disruption/2024-09-26T14:21:00/NT_MCV_HBD_G30155": [],
"/disruption/2024-09-26T13:36:00/NT_MCV_HBD_G37312": [],
"/ticket/140099": {
"fare": "/fare/130612",
"adults": 1,
"children": 0,
"transactionNumber": "92083",
"state": "Fulfilled",
"reservation": "/reservation/YR782647",
"utn": "R2FQ5R5WRFE",
"outwardValidity": {
"validFrom": "2024-09-26",
"validUntil": "2024-09-26"
},
"returnValidity": null,
"outwardPortion": "/journey/150743",
"returnPortion": null,
"supplements": [],
"seats": [
{
"seat": "/seat-reservation/94581",
"leg": "/leg/14235",
"supplement": "/supplement/113664"
}
],
"passenger": "/passenger/101137",
"originalTicket": null,
"priceCoveredByOriginalTicket": null
},
"/fare/130612": {
"ticketType": "/ticket-type/DG6",
"origin": "/station/2970",
"destination": "/station/8524",
"price": 520,
"originalPrice": 520,
"railcard": null,
"restrictionCode": "NT",
"route": "/route/00429",
"statusCode": "000",
"fareSetter": "NTH",
"xLondon": 0,
"isPlusBus": false,
"discount": null,
"childStatusDescription": null,
"adultStatusDescription": null,
"labels": [
"advance"
],
"assistedCode": null
},
"/reservation/YR782647": {
"created": "2024-09-24T12:32:35+01:00",
"seats": [
"/seat-reservation/94581"
]
},
"/seat-reservation/94581": {
"id": "94581",
"coach": "*",
"seat": "***",
"leg": "/leg/14235",
"supplement": "/supplement/113664",
"reservation": "/reservation/YR782647"
},
"/leg/14235": {
"type": "timetabled",
"origin": "/station/2970",
"destination": "/station/8524",
"service": "/service/G37319/2024-09-26",
"operator": "/toc/NT",
"mode": "train",
"scheduledDeparture": "2024-09-26T14:36:00+01:00",
"scheduledArrival": "2024-09-26T15:15:00+01:00",
"boardingTime": null,
"alightingTime": null,
"callingPoints": [
{
"crs": "MCV",
"arrival": "2024-09-26T14:33:00+01:00",
"departure": "2024-09-26T14:36:00+01:00",
"platform": "6",
"pickup": true,
"dropoff": true
},
{
"crs": "RCD",
"arrival": "2024-09-26T14:50:00+01:00",
"departure": "2024-09-26T14:51:00+01:00",
"platform": "1",
"pickup": true,
"dropoff": true
},
{
"crs": "SMB",
"arrival": "2024-09-26T14:55:00+01:00",
"departure": "2024-09-26T14:55:00+01:00",
"platform": "2",
"pickup": true,
"dropoff": true
},
{
"crs": "LTL",
"arrival": "2024-09-26T14:58:00+01:00",
"departure": "2024-09-26T14:59:00+01:00",
"platform": "2",
"pickup": true,
"dropoff": true
},
{
"crs": "WDN",
"arrival": "2024-09-26T15:05:00+01:00",
"departure": "2024-09-26T15:05:00+01:00",
"platform": "2",
"pickup": true,
"dropoff": true
},
{
"crs": "TOD",
"arrival": "2024-09-26T15:08:00+01:00",
"departure": "2024-09-26T15:08:00+01:00",
"platform": "2",
"pickup": true,
"dropoff": true
},
{
"crs": "HBD",
"arrival": "2024-09-26T15:15:00+01:00",
"departure": "2024-09-26T15:15:00+01:00",
"platform": "2",
"pickup": true,
"dropoff": true
}
]
},
"/service/G37319/2024-09-26": {
"type": "fixed",
"mode": "train",
"retailServiceId": "NT415300",
"trainUid": "G37319",
"callingPoints": "/service/G37319/2024-09-26/calling-points",
"reservable": [
"Possible from any station"
]
},
"/service/G37319/2024-09-26/calling-points": [],
"/supplement/113664": {
"type": "/supplement-type/XFS",
"transactionNumber": "92084",
"price": 0,
"isBerth": false
},
"/journey/150743": {
"distance": 23,
"co2": null,
"boardingTime": null,
"alightingTime": null,
"legs": [
"/leg/14235"
]
},
"/passenger/101137": {
"title": "Mr",
"initials": "Mateusz",
"surname": "Angulski",
"photocardNumber": null
},
"/supplement-type/XFS": {
"code": "XFS",
"type": "SEA",
"capriCode": "ZYM",
"description": "SEAT",
"shortDescription": "SEAT ",
"price": 0,
"minGroup": 1,
"maxGroup": 4,
"class": 2,
"isSeparateTicket": true,
"sundryCode": null,
"packageDirections": []
}
},
"messages": []
}
422 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
403 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
400 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
500 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
GET /coj-params
Params for change of journey generated based on original tickets
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"properties": {
"fareOrigin": {
"type": "string",
"pattern": "^/station/[A-Z0-9]+$"
},
"fareDestination": {
"type": "string",
"pattern": "^/station/[A-Z0-9]+$"
},
"adults": {
"type": "number"
},
"children": {
"type": "number"
},
"pets": {
"type": "number"
},
"bikes": {
"type": "number"
},
"maxPassengers": {
"type": "number"
},
"railcards": {
"type": "array",
"items": {
"type": "string",
"pattern": "^/railcard/[A-Z0-9]{3}$"
}
},
"railcard": {
"type": [
"string",
"null"
]
},
"splits": {
"type": "boolean"
},
"singles": {
"type": "boolean"
},
"returns": {
"type": "boolean"
},
"roomSupplements": {
"type": "boolean"
},
"promoCodes": {
"type": "boolean"
},
"originalOutwardDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"originalOutwardDepartTime": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
}
},
"required": [
"fareOrigin",
"fareDestination",
"adults",
"children",
"pets",
"bikes",
"maxPassengers",
"railcards",
"splits",
"singles",
"returns",
"roomSupplements",
"promoCodes",
"originalOutwardDate",
"originalOutwardDepartTime"
],
"additionalProperties": false
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"fareOrigin": "/station/1444",
"fareDestination": "/station/9328",
"adults": 1,
"children": 0,
"pets": 0,
"bikes": 1,
"maxPassengers": 2,
"railcards": [],
"splits": false,
"singles": true,
"returns": false,
"roomSupplements": false,
"promoCodes": true,
"originalOutwardDate": "2025-12-12",
"originalOutwardDepartTime": "23:45"
},
"links": []
}
422 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
403 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
400 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
500 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
POST /one-time-order-access
Request one time order access
Request schema (show)
{
"type": "object",
"properties": {
"orderId": {
"type": "number"
},
"surname": {
"type": "string"
},
"vendor": {
"type": "string"
}
},
"required": [
"orderId",
"surname",
"vendor"
],
"additionalProperties": false
}
Request example (show)
{
"orderId": 1234,
"surname": "Doe",
"vendor": "assertis"
}
200 application/json
Response schema (show)
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
}
Response example (show)
{
"status": "success",
"data": {
"orderId": 667574,
"otpNonce": "jfa21kls-uiFA-SUOI-234",
"validUntil": "2025-08-28T00:32:00Z"
}
}
400 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
401 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
422 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
500 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
GET /passenger-assist
Check whether an email exists in passenger assist external system
Parameters
array emails
Headers
string X-Token-Data (required)
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"type": "object",
"properties": {
"data": {
"patternProperties": {
"^[A-Za-z0-9\\._%\\+-]+@[A-Za-z0-9\\.-]+\\.[A-Za-z]{2,6}$": {
"type": "object",
"properties": {
"status": {
"enum": [
"success",
"fail"
]
},
"data": {
"type": "boolean"
}
},
"required": [
"status",
"data"
],
"additionalProperties": false
}
},
"additionalProperties": false
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"a@example.com": {
"status": "success",
"data": true
},
"b@example.com": {
"status": "success",
"data": false
}
},
"links": []
}
400 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
401 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
500 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
POST /passenger-assist
Create a passenger assist.
Request schema (show)
{
"type": "object",
"properties": {
"legs": {
"legs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uri": {
"type": "string",
"pattern": "^/leg/[0-9]+$"
},
"seat": {
"oneOf": [
{
"type": "string",
"pattern": "^/seat-reservation/[0-9]+$"
},
{
"type": "null"
}
]
},
"journeyAssistances": {
"type": "array",
"items": {
"type": "string"
}
},
"otherAssistanceDetails": {
"type": "string"
},
"luggages": {
"type": "array",
"items": {
"enum": [
"SMALL",
"MEDIUM",
"LARGE"
]
}
}
},
"required": [
"uri",
"journeyAssistances",
"luggages"
],
"additionalProperties": false
}
}
},
"email": {
"type": "string"
}
},
"required": [
"email",
"legs"
],
"additionalProperties": false
}
Request example (show)
{
"email": "user@example.com",
"legs": [
{
"uri": "/leg/11042",
"seat": "/seat-reservation/120206",
"journeyAssistances": [
"use_of_ramp"
],
"otherAssistanceDetails": "i need a",
"luggages": [
"SMALL"
]
}
]
}
201 application/json
Response headers
string Location (required)
Response schema (show)
{
"status": "success",
"data": {
"uri": "/passenger-assist/123"
}
}
Response example (show)
{
"status": "success",
"data": {
"uri": "/passenger-assist/123"
}
}
422 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
424 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
400 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
500 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
URI parameters
string id (required)
Pattern: ^\d+$
GET /passenger-assist/{id}
Return an passenger assist booking
Parameters
string include
Headers
string X-Token-Data (required)
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"type": "object",
"properties": {
"data": {
"properties": {
"id": {
"type": "number"
},
"bookingRef": {
"type": [
"string",
"null"
]
},
"passenger": {
"type": "object",
"properties": {
"email": {
"type": "string"
}
},
"required": [
"email"
],
"additionalProperties": false
},
"firstOperator": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"phone": {
"type": "string"
}
},
"required": [
"name",
"phone"
],
"additionalProperties": false
},
"journey": {
"type": "object",
"properties": {
"outward": {
"type": "object",
"properties": {
"uri": {
"type": "string",
"pattern": "^/journey/[0-9]+$"
},
"legs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uri": {
"type": "string",
"pattern": "^/leg/[0-9]+$"
},
"seat": {
"oneOf": [
{
"type": "string",
"pattern": "^/seat-reservation/[0-9]+$"
},
{
"type": "null"
}
]
},
"journeyAssistances": {
"type": "array",
"items": {
"type": "string"
}
},
"otherAssistanceDetails": {
"type": "string"
},
"luggages": {
"type": "array",
"items": {
"enum": [
"SMALL",
"MEDIUM",
"LARGE"
]
}
}
},
"required": [
"uri",
"journeyAssistances",
"otherAssistanceDetails",
"luggages"
]
}
}
},
"required": [
"uri",
"legs"
],
"additionalProperties": false
},
"inward": {
"type": "object",
"properties": {
"uri": {
"type": "string",
"pattern": "^/journey/[0-9]+$"
},
"legs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uri": {
"type": "string",
"pattern": "^/leg/[0-9]+$"
},
"journeyAssistances": {
"type": "array",
"items": {
"type": "string"
}
},
"otherAssistanceDetails": {
"type": "string"
},
"luggages": {
"type": "array",
"items": {
"enum": [
"SMALL",
"MEDIUM",
"LARGE"
]
}
}
},
"required": [
"uri",
"journeyAssistances",
"otherAssistanceDetails",
"luggages"
]
}
}
},
"required": [
"uri",
"legs"
],
"additionalProperties": false
}
},
"required": [
"outward"
],
"additionalProperties": false
},
"metadata": {
"type": "object",
"properties": {
"state": {
"enum": [
"requested",
"booking",
"cancelling",
"failed-booking",
"failed-cancelling",
"booked",
"cancelled"
]
},
"requestedAt": {
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
"bookedAt": {
"oneOf": [
{
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
{
"type": "null"
}
]
},
"cancelledAt": {
"oneOf": [
{
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
},
{
"type": "null"
}
]
},
"stateChanges": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"enum": [
"changed",
"booking",
"cancelling",
"failed-booking",
"failed-cancelling"
]
},
"at": {
"oneOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}:\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}\\d{2}$"
},
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
},
{
"type": "string",
"pattern": "^\\d{4}\\d{2}\\d{2}T\\d{2}\\d{2}\\d{2}Z$"
}
]
}
},
"required": [
"type",
"at"
]
}
}
},
"required": [
"state",
"requestedAt",
"stateChanges"
],
"additionalProperties": false
}
},
"required": [
"id",
"passenger",
"journey",
"metadata"
],
"additionalProperties": false
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"id": 8,
"bookingRef": "PA1234567",
"passenger": {
"email": "user@example.com"
},
"firstOperator": {
"name": "First Operator",
"email": "help@first_op.com",
"phone": "0208 123 4567"
},
"journey": {
"outward": {
"uri": "/journey/164087",
"legs": [
{
"uri": "/leg/11042",
"seat": "/seat-reservation/120206",
"journeyAssistances": [
"use_of_ramp"
],
"otherAssistanceDetails": "",
"luggages": [
"SMALL"
]
}
]
}
},
"metadata": {
"state": "cancelled",
"requestedAt": "2025-12-12T11:21:30.087Z",
"bookedAt": "2025-12-12T11:22:07.000Z",
"cancelledAt": "2025-12-12T11:33:08.000Z",
"stateChanges": [
{
"type": "changed",
"at": "2025-12-12T11:21:30.087Z"
},
{
"type": "changed",
"at": "2025-12-12T11:22:01.077Z"
},
{
"type": "booking",
"at": "2025-12-12T11:22:02.000Z"
},
{
"type": "failed-booking",
"at": "2025-12-12T11:22:03.000Z",
"error": "GBR_EXCEPTION_3000"
},
{
"type": "booking",
"at": "2025-12-12T11:22:05.000Z"
},
{
"type": "cancelling",
"at": "2025-12-12T11:33:02.000Z"
},
{
"type": "failed-cancelling",
"at": "2025-12-12T11:33:03.000Z",
"error": "GBR_PA_6302"
},
{
"type": "cancelling",
"at": "2025-12-12T11:33:05.000Z"
}
]
}
},
"links": []
}
401 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
500 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
PUT /passenger-assist/{id}
Update an existing passenger assist booking.
Headers
string X-Token-Data (required)
Request schema (show)
{
"type": "object",
"properties": {
"legs": {
"legs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uri": {
"type": "string",
"pattern": "^/leg/[0-9]+$"
},
"seat": {
"oneOf": [
{
"type": "string",
"pattern": "^/seat-reservation/[0-9]+$"
},
{
"type": "null"
}
]
},
"journeyAssistances": {
"type": "array",
"items": {
"type": "string"
}
},
"otherAssistanceDetails": {
"type": "string"
},
"luggages": {
"type": "array",
"items": {
"enum": [
"SMALL",
"MEDIUM",
"LARGE"
]
}
}
},
"required": [
"uri",
"journeyAssistances",
"luggages"
],
"additionalProperties": false
}
}
},
"email": {
"type": "string"
}
},
"required": [
"email",
"legs"
],
"additionalProperties": false
}
Request example (show)
{
"email": "user@example.com",
"legs": [
{
"uri": "/leg/11042",
"seat": "/seat-reservation/120206",
"journeyAssistances": [
"use_of_ramp"
],
"otherAssistanceDetails": "i need a",
"luggages": [
"SMALL"
]
}
]
}
200 application/json
Response schema (show)
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
}
400 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
422 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
DELETE /passenger-assist/{id}
Cancel a passenger assist booking.
Headers
string X-Token-Data (required)
422 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
Returns a paginated list of the authenticated customer's journeys whose validity ends today or earlier (fulfilled orders only).
GET /journeys-valid-until-today
Parameters
integer limit
Number of items per page (1–20, default 5)
integer page
Page number (default 1)
string include
Comma-separated list of related resources to embed
Headers
string X-Token-Data (required)
200 application/json
Response schema (show)
{
"type": "object",
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"type": "object",
"properties": {
"meta": {
"type": "object",
"properties": {
"page": {
"type": "integer",
"description": "Current page number"
},
"perPage": {
"type": "integer",
"description": "Items per page"
},
"lastPage": {
"type": "integer",
"description": "Last available page number"
}
},
"required": [
"page",
"perPage",
"lastPage"
],
"additionalProperties": false
},
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"journey": {
"type": "string",
"description": "URI of the journey"
},
"tickets": {
"type": "array",
"items": {
"type": "string"
},
"description": "URIs of associated tickets"
},
"order": {
"type": "string",
"description": "URI of the order"
},
"refund": {
"type": "string",
"description": "URI of the refund resource for the order"
}
},
"required": [
"journey",
"tickets",
"order",
"refund"
],
"additionalProperties": false
}
}
},
"required": [
"meta",
"data"
],
"additionalProperties": false
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
},
"required": [
"status"
],
"additionalProperties": false
}
Response example (show)
{
"status": "success",
"data": {
"meta": {
"page": 1,
"perPage": 5,
"lastPage": 3
},
"data": [
{
"journey": "/journey/101",
"tickets": [
"/ticket/201",
"/ticket/202"
],
"order": "/order/301",
"refund": "/refund/order/301"
}
]
}
}
400 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
Returns a paginated list of the authenticated customer's journeys that are valid from today onwards (fulfilled orders only).
GET /journeys-valid-from-today
Parameters
integer limit
Number of items per page (1–20, default 5)
integer page
Page number (default 1)
string include
Comma-separated list of related resources to embed
Headers
string X-Token-Data (required)
200 application/json
Response schema (show)
{
"type": "object",
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"type": "object",
"properties": {
"meta": {
"type": "object",
"properties": {
"page": {
"type": "integer",
"description": "Current page number"
},
"perPage": {
"type": "integer",
"description": "Items per page"
},
"lastPage": {
"type": "integer",
"description": "Last available page number"
}
},
"required": [
"page",
"perPage",
"lastPage"
],
"additionalProperties": false
},
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"journey": {
"type": "string",
"description": "URI of the journey"
},
"tickets": {
"type": "array",
"items": {
"type": "string"
},
"description": "URIs of associated tickets"
},
"order": {
"type": "string",
"description": "URI of the order"
},
"refund": {
"type": "string",
"description": "URI of the refund resource for the order"
}
},
"required": [
"journey",
"tickets",
"order",
"refund"
],
"additionalProperties": false
}
}
},
"required": [
"meta",
"data"
],
"additionalProperties": false
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
},
"required": [
"status"
],
"additionalProperties": false
}
Response example (show)
{
"status": "success",
"data": {
"meta": {
"page": 1,
"perPage": 5,
"lastPage": 2
},
"data": [
{
"journey": "/journey/102",
"tickets": [
"/ticket/203"
],
"order": "/order/302",
"refund": "/refund/order/302"
}
]
}
}
400 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
Returns request/response error log entries, optionally filtered by date, error code threshold, or session ID.
GET /error-log
Parameters
string date
Date to filter logs (defaults to today)
string filter
Minimum HTTP response code to include (e.g. 500)
integer limit
Maximum number of entries to return (default 20)
string sessionId
Filter by session ID
string debug
Enable debug output
200 application/json
Response schema (show)
{
"type": "object",
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Log entry ID"
},
"createdAt": {
"type": "string",
"description": "ISO 8601 timestamp of when the error occurred"
},
"tenant": {
"type": "string",
"description": "Tenant identifier"
},
"failure": {
"type": "string",
"description": "Error code or failure reason"
},
"request": {
"type": "object",
"properties": {
"headers": {
"type": "string"
},
"method": {
"type": "string"
},
"url": {
"type": "string"
},
"body": {
"type": "string"
}
}
},
"response": {
"type": "object",
"properties": {
"code": {
"type": "integer"
},
"headers": {
"type": "string"
},
"body": {
"type": "string"
}
}
},
"requestId": {
"type": "string",
"description": "Unique request identifier"
},
"sessionId": {
"type": "string",
"description": "Session identifier"
}
}
}
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
},
"required": [
"status"
],
"additionalProperties": false
}
Response example (show)
{
"status": "success",
"data": [
{
"id": 1001,
"createdAt": "2024-01-15T10:30:00+00:00",
"tenant": "uk",
"failure": "SOME_ERROR",
"request": {
"headers": "Content-Type: application/json",
"method": "POST",
"url": "/order",
"body": "{}"
},
"response": {
"code": 500,
"headers": "Content-Type: application/json",
"body": "{\"status\":\"error\",\"message\":\"Internal server error\"}"
},
"requestId": "abc-123",
"sessionId": "session-456"
}
]
}
Returns a daily error log summary as CSV text for the given date and optional environment.
URI parameters
string date (required)
Date in YYYY-MM-DD format
Pattern: ^[0-9\-]+$
string env (required)
Optional environment filter (e.g. prod, staging)
Pattern: ^[a-z]+$
GET /daily-error-log/{date}
200 text/plain
Response example (show)
null
Returns a daily error log summary as CSV text for the given date and optional environment.
URI parameters
string date (required)
Date in YYYY-MM-DD format
Pattern: ^[0-9\-]+$
string env (required)
Optional environment filter (e.g. prod, staging)
Pattern: ^[a-z]+$
GET /daily-error-log/{date}/{env}
200 text/plain
Response example (show)
null
Processes an incoming queue message and routes it to the appropriate handler.
POST /queue/msg/handler
Request example (show)
{
"name": "Assertis.Order.Sold",
"payload": []
}
200 application/json
Response schema (show)
{
"type": "object",
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Empty object on success"
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
},
"required": [
"status"
],
"additionalProperties": false
}
Response example (show)
{
"status": "success",
"data": []
}
400 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
500 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
Returns HEX Premier+ product codes mapped to passenger age groups.
GET /hex/premier-products
200 application/json
Response schema (show)
{
"type": "object",
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"type": "object",
"description": "Map of age group label to HEX Premier+ product code",
"additionalProperties": {
"type": "string",
"description": "HEX Premier+ product code for the age group"
}
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
},
"required": [
"status"
],
"additionalProperties": false
}
Response example (show)
{
"status": "success",
"data": {
"0-2": "HEXINF",
"3-11": "HEXCHD",
"12-15": "HEXJNR",
"16+": "HEXADU"
}
}
S-Ticket authentication endpoints.
URI parameters
string sTicketCustomerId (required)
Pattern: ^\d+$
GET /s-ticket/customers/{sTicketCustomerId}
Authenticates an S-Ticket customer and returns their basic profile. Requires matching X-Access-Token and tenant headers.
Headers
string X-Token-Data (required)
string X-Access-Token (required)
string X-Tenant (required)
200 application/json
Response schema (show)
{
"type": "object",
"properties": {
"result": {
"type": "object",
"properties": {
"firstNames": {
"type": "string",
"description": "Customer first names"
},
"surname": {
"type": "string",
"description": "Customer surname"
},
"email": {
"type": "string",
"description": "Customer email address"
},
"title": {
"type": "string",
"description": "Customer title"
}
},
"required": [
"firstNames",
"surname",
"email",
"title"
],
"additionalProperties": false
}
},
"required": [
"result"
],
"additionalProperties": false
}
Response example (show)
{
"result": {
"firstNames": "John",
"surname": "Doe",
"email": "noreply@assertis.co.uk",
"title": "Mx"
}
}
401 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
403 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
GET /s-ticket/customers/admin/auth
Authenticates an S-Ticket admin. Returns 204 No Content on success.
Headers
string X-Token-Data (required)
string X-Access-Token (required)
401 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
403 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"message"
]
}
]
}
Delivery
Introduction
Welcome to the Delivery API Documentation. The Delivery API allows you to read delivery mothods available in TIS. It also allow you to check which delivery methods are available for particular order.
Returns the service health status including name, environment and build SHA.
GET /healthcheck
200 application/json
Response schema (show)
{
"type": "object",
"properties": {
"status": {
"description": "Health check status",
"type": "string",
"enum": [
"ok"
]
},
"data": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Application name"
},
"env": {
"type": "string",
"description": "Deployment environment"
},
"sha": {
"type": [
"string",
"boolean"
],
"description": "Git SHA of the deployed build, or false if not set"
}
},
"required": [
"name",
"env",
"sha"
],
"additionalProperties": false
}
},
"required": [
"status",
"data"
],
"additionalProperties": false
}
Response example (show)
{
"status": "ok",
"data": {
"name": "delivery-service",
"env": "prod",
"sha": "abc1234"
}
}
Returns Prometheus metrics in the standard exposition format.
GET /metrics
200 text/plain
Response example (show)
null
URI parameters
string id (required)
Pattern: ^[a-z\-]+$
GET /delivery/{id}
Read particular delivery method details
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"uri": {
"type": "string"
},
"displayOrder": {
"type": "number"
},
"name": {
"type": "string"
},
"time": {
"type": "string"
},
"requirements": {
"type": "string"
},
"fulfilmentType": {
"type": "number"
},
"price": {
"type": "number"
},
"isForCarnet": {
"type": "boolean"
},
"isForSeason": {
"type": "boolean"
},
"isForSeasonAnnual": {
"type": "boolean"
},
"isForSingle": {
"type": "boolean"
},
"minSecondsBefore": {
"type": [
"number",
"null"
]
},
"minWorkingDaysBefore": {
"type": [
"number",
"null"
]
},
"maxValue": {
"type": [
"number",
"null"
]
},
"active": {
"type": "boolean"
},
"maxTickets": {
"type": [
"number",
"null"
]
}
},
"required": [
"uri",
"displayOrder",
"name",
"time",
"requirements",
"fulfilmentType",
"price",
"isForCarnet",
"isForSeason",
"isForSeasonAnnual",
"isForSingle",
"minSecondsBefore",
"minWorkingDaysBefore",
"maxValue"
],
"additionalProperties": false
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"id": "first-class-post",
"uri": "/delivery-method/first-class-post",
"displayOrder": 2,
"name": "First class post",
"time": "(allow up to five working days)",
"requirements": "Postal address",
"fulfilmentType": 9,
"price": 150,
"isForCarnet": false,
"isForSeason": false,
"isForSeasonAnnual": false,
"isForSingle": true,
"minSecondsBefore": null,
"minWorkingDaysBefore": 5,
"maxValue": 25000,
"active": true
}
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"status",
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Delivery method with id abc does not exist.",
"code": "ERR-NOT-FOUND"
}
URI parameters
string id (required)
Pattern: ^[a-z\-]+$
GET /delivery-method/{id}
Read particular delivery method details
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"uri": {
"type": "string"
},
"displayOrder": {
"type": "number"
},
"name": {
"type": "string"
},
"time": {
"type": "string"
},
"requirements": {
"type": "string"
},
"fulfilmentType": {
"type": "number"
},
"price": {
"type": "number"
},
"isForCarnet": {
"type": "boolean"
},
"isForSeason": {
"type": "boolean"
},
"isForSeasonAnnual": {
"type": "boolean"
},
"isForSingle": {
"type": "boolean"
},
"minSecondsBefore": {
"type": [
"number",
"null"
]
},
"minWorkingDaysBefore": {
"type": [
"number",
"null"
]
},
"maxValue": {
"type": [
"number",
"null"
]
},
"active": {
"type": "boolean"
},
"maxTickets": {
"type": [
"number",
"null"
]
}
},
"required": [
"uri",
"displayOrder",
"name",
"time",
"requirements",
"fulfilmentType",
"price",
"isForCarnet",
"isForSeason",
"isForSeasonAnnual",
"isForSingle",
"minSecondsBefore",
"minWorkingDaysBefore",
"maxValue"
],
"additionalProperties": false
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"id": "first-class-post",
"uri": "/delivery-method/first-class-post",
"displayOrder": 2,
"name": "First class post",
"time": "(allow up to five working days)",
"requirements": "Postal address",
"fulfilmentType": 9,
"price": 150,
"isForCarnet": false,
"isForSeason": false,
"isForSeasonAnnual": false,
"isForSingle": true,
"minSecondsBefore": null,
"minWorkingDaysBefore": 5,
"maxValue": 25000,
"active": true
}
}
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"status",
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Delivery method with id abc does not exist.",
"code": "ERR-NOT-FOUND"
}
URI parameters
string id (required)
Pattern: ^\d+$
GET /delivery/order/{id}
Read all delivery methods available for particular order
Parameters
string format
Possible values are legacy and links. Currently defaults to legacy.
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": [
"/delivery-method/first-class-post"
],
"links": {
"/delivery-method/first-class-post": {
"id": "first-class-post",
"uri": "/delivery-method/first-class-post",
"displayOrder": 2,
"name": "First class post",
"time": "(allow up to five working days)",
"requirements": "Postal address",
"fulfilmentType": 9,
"price": 150,
"isForCarnet": false,
"isForSeason": false,
"isForSeasonAnnual": false,
"isForSingle": true,
"minSecondsBefore": null,
"minWorkingDaysBefore": 5,
"maxValue": 25000
}
}
}
204 text/html
Response headers
string X-Message
Explanation of lack of delivery methods for order
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"status",
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Order with id 1234 was not found",
"code": "ERR-NOT-FOUND"
}
URI parameters
string fareOrigin (required)
Fare origin station NLC code
Pattern: ^.+$
string fareDestination (required)
Fare destination station NLC code
Pattern: ^.+$
string journeyOrigin (required)
Journey origin station NLC code
Pattern: ^.+$
string journeyDestination (required)
Journey destination station NLC code
Pattern: ^.+$
string travelDate (required)
Pattern: ^\d{4}\-\d{2}\-\d{2}$
Example: 1618358400
string routeCode (required)
Pattern: ^\d{5}$
Example: 00345
string ticketCodes (required)
A list of ticket codes separated by commas
Example: ABC,DEF,GHI
GET /delivery/params/{fareOrigin}/{fareDestination}/{journeyOrigin}/{journeyDestination}/{travelDate}/{routeCode}/{ticketCodes}
Read all delivery methods available for provided parameters
Parameters
string format
Possible values are legacy and links. Currently defaults to legacy.
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": [
"/delivery-method/first-class-post"
],
"links": {
"/delivery-method/first-class-post": {
"id": "first-class-post",
"uri": "/delivery-method/first-class-post",
"displayOrder": 2,
"name": "First class post",
"time": "(allow up to five working days)",
"requirements": "Postal address",
"fulfilmentType": 9,
"price": 150,
"isForCarnet": false,
"isForSeason": false,
"isForSeasonAnnual": false,
"isForSingle": true,
"minSecondsBefore": null,
"minWorkingDaysBefore": 5,
"maxValue": 25000
}
}
}
204 text/html
Response headers
string X-Message
Explanation of lack of delivery methods for provided parameters
404 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"status",
"message"
]
}
]
}
Response example (show)
{
"status": "fail",
"message": "Order with id 1234 was not found",
"code": "ERR-NOT-FOUND"
}
URI parameters
string fareOrigin (required)
Fare origin station NLC code
Pattern: ^.+$
string fareDestination (required)
Fare destination station NLC code
Pattern: ^.+$
string journeyOrigin (required)
Journey origin station NLC code
Pattern: ^.+$
string journeyDestination (required)
Journey destination station NLC code
Pattern: ^.+$
string routeCode (required)
Pattern: ^\d{5}$
Example: 00345
string ticketCode (required)
A list of ticket codes separated by commas
Example: SOS,SSS
GET /has-e-ticket/{fareOrigin}/{fareDestination}/{journeyOrigin}/{journeyDestination}/{routeCode}/{ticketCodes}
Check whether a specific ticket set can be an e-ticket
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"properties": {
"e-ticket": {
"type": "boolean"
}
},
"required": [
"e-ticket"
],
"additionalProperties": false
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"e-ticket": true
}
}
URI parameters
string fareOrigin (required)
Fare origin station NLC code
Pattern: ^.+$
string fareDestination (required)
Fare destination station NLC code
Pattern: ^.+$
string journeyOrigin (required)
Journey origin station NLC code
Pattern: ^.+$
string journeyDestination (required)
Journey destination station NLC code
Pattern: ^.+$
string ticketAndRouteCodes (required)
Comma-separated list of ticketCode:routeCode pairs (e.g. SOS:00345,SSS:00345)
Pattern: ^[A-Z0-9]+:[0-9]{5}(,[A-Z0-9]+:[0-9]{5})*$
Example: SOS:00345,SSS:00346
GET /has-e-ticket/{fareOrigin}/{fareDestination}/{journeyOrigin}/{journeyDestination}/{ticketAndRouteCodes}
Check whether a specific ticket set can be an e-ticket (one route code per ticket)
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"properties": {
"e-ticket": {
"type": "boolean"
}
},
"required": [
"e-ticket"
],
"additionalProperties": false
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"e-ticket": true
}
}
URI parameters
string items (required)
Items to be checked as comma-separated fareOrigin-fareDestination-journeyOrigin-journeyDestination-routeCode-ticketCode
Pattern: ^([0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{5}-[A-Za-z0-9]{3}[,]*)+$
Example: 1234-5678-9012-3456-78901-ABC,1234-5678-9012-3456-78901-DEF
GET /has-e-ticket/{items}
Check whether a specific ticket set can be an e-ticket
200 application/json
Response schema (show)
{
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"properties": {
"e-ticket": {
"type": "boolean"
}
},
"required": [
"e-ticket"
],
"additionalProperties": false
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"e-ticket": true
}
}
Card Payments
Secure Trading API
The card payments API processes card payments with 3d secure and fraud checks.
Returns service health information.
GET /healthcheck
200 application/json
Response schema (show)
{
"description": "Healthcheck response",
"type": "object",
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"description": "Service name"
},
"node_environment": {
"type": "string",
"description": "Node environment (e.g. production, staging)"
},
"sha": {
"type": "string",
"description": "Git SHA of the deployed revision"
}
},
"required": [
"name",
"node_environment",
"sha"
]
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"name": "secure-trading-service",
"node_environment": "prod",
"sha": "abc123def456"
}
}
POST /st-card-payment
Request schema (show)
{
"description": "Card payment request",
"type": "object",
"additionalProperties": false,
"required": [
"order",
"amount",
"callback"
],
"properties": {
"order": {
"type": [
"string"
],
"pattern": "/order/[0-9]+"
},
"amount": {
"type": "integer",
"description": "Amount pence in GBP"
},
"callback": {
"type": "string",
"description": "Callback url required for 3d secure payments"
},
"cardToken": {
"type": "string"
},
"expiryMonth": {
"type": "integer"
},
"expiryYear": {
"type": "integer"
},
"billingAddress": {
"description": "Card payment billing address schema",
"type": "object",
"additionalProperties": false,
"required": [
"title",
"firstNames",
"surname",
"address1",
"town",
"country"
],
"properties": {
"title": {
"description": "e.g. Mr, Miss, Dr",
"type": "string",
"maxLength": 25
},
"firstNames": {
"type": "string",
"maxLength": 254
},
"surname": {
"type": "string",
"maxLength": 127
},
"address1": {
"type": "string",
"maxLength": 25
},
"address2": {
"type": "string",
"maxLength": 127
},
"address3": {
"type": "string",
"maxLength": 127
},
"town": {
"type": "string",
"maxLength": 127
},
"county": {
"description": "For US addresses, the state would be entered in this field",
"type": "string",
"maxLength": 127
},
"postCode": {
"description": "If the country provided is not United States, Great Britain or Canada, or if no country is provided, the postcode field is not validated",
"type": "string",
"maxLength": 25
},
"country": {
"description": "This will need to be in ISO2A format. https://www.securetrading.com/docs/document/toolbox/country-codes/",
"type": "string",
"pattern": "^[A-Z]{2}$",
"maxLength": 2
},
"telephoneNumber": {
"type": "string",
"pattern": "^[0-9\\-\\+\\(\\)\\s]{0,20}$",
"maxLength": 20
},
"email": {
"type": "string",
"pattern": "^.*$",
"maxLength": 255
},
"marketingSignup": {
"type": "boolean"
}
}
},
"storedCard": {
"type": [
"string"
],
"pattern": "/st-card/[0-9]+"
},
"currency": {
"type": "string",
"default": "GBP",
"description": "One of currency codes from https://docs.trustpayments.com/document/toolbox/currency-codes/ that is available on the secure trading account",
"pattern": "^[A-Z]{3}$"
},
"localAmount": {
"type": "integer",
"description": "Amount pence in selected currency"
}
}
}
Request example (show)
{
"order": "/order/1",
"amount": 1000,
"expiryMonth": 10,
"expiryYear": 2029,
"cardToken": "abcd1234",
"billingAddress": {
"title": "Mr",
"firstNames": "Test Ing",
"surname": "Person",
"address1": "123 Test Street",
"address2": "Another Street",
"town": "Test Town",
"county": "Norfolk",
"country": "GB",
"postCode": "TE57 1NG",
"telephoneNumber": "+79 123-123-123"
},
"callback": "http://www.example.org"
}
Request example (show)
{
"order": "/order/1",
"storedCard": "/st-card/1",
"currency": "GBP",
"localAmount": 0,
"cvv": 123,
"amount": 615
}
200 application/json
Response schema (show)
{
"description": "Secure Trading Card Payment response",
"type": "object",
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"required": [
"links"
],
"properties": {
"data": {
"type": "object",
"additionalProperties": false,
"required": [
"payment"
],
"properties": {
"payment": {
"type": [
"string"
],
"pattern": "/st-card-payment/[0-9]+"
},
"threeDSecure": {
"type": "object",
"description": "Information required for preforming three d secure process",
"properties": {
"acsUrl": {
"type": "string",
"description": "Bank website that need to be used to start three d secure process"
},
"MD": {
"type": "string",
"description": "The unique 3-D Secure reference for this transaction"
},
"PaReq": {
"type": "string",
"description": "The unique identifier for the transaction"
},
"TermUrl": {
"type": "string",
"description": "Address where bank will redirect in the end of process"
}
},
"required": [
"acsUrl",
"MD",
"PaReq",
"TermUrl"
]
}
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"payment": "/st-card-payment/1",
"threeDSecure": {
"acsUrl": "https://webapp.securetrading.net/acs/visa.cgi",
"MD": "UEZOVVBqeE5SRDQ4VFVSSVBtWjJWMWR4SzBKeWQySmxLMnQ1TUhSRlVrSkNja0U5UFR3dlRVUklQanhoWTNOVmNtdythSFIwY0hNNkx5OTNaV0poY0hBdWMyVmpkWEpsZEhKaFpHbHVaeTV1WlhRdllXTnpMM1pwYzJFdVkyZHBQQzloWTNOVmNtdytQSEJoYmt4bGJtZDBhRDR4Tmp3dmNHRnVUR1Z1WjNSb1BqeHRaWE56WVdkbFNXUStVRUZTWlhFdE1UVXdORFV5TmpRM05UWXdOeTB4T0RjM05UTTJOamt6UEM5dFpYTnpZV2RsU1dRK1BDOU5SRDQ4TDFOVVBnPT06bWRlU29aUlIrYytQTGt3OU5OdHZyUzRNeFpJa2hNT0k4bzY0WjdlZjZmNTNzPQ==",
"PaReq": "eJxVUttuAiEQ/RXj+8plb2pGElub1KQ1atf0mcBEN9mLAhr9+8KqVeeFOTNwOHMAip1BnP2gOhoU8I3Wyi32Sj3pL6drPEQspUnKsyRPM5pHbJjnaZxlo7gvoNsg4ITGlm0j2IAOOJA79FxG7WTjBEh1eJsvBONxkmZAbhBqNPOZoK8B5FqGRtYoptaicaXtfTkNpCuBao+NMxcx5J7rDuBoKrFzbj8mxHbDRM5IXTbbyDOcSoWDqlWyItZFShod7eWlxsYRTkmsLZBwHshD8/IYMuvvO5dayM15U9AVX3CdylhdiqIq1h96t/ptJ0DCDtDSoeCU5XREkx7jY8rGLAXS1UHWQWiwwM9/zWEfrpg+NZ4L4Gcw2Kj7nHcEeN63jVcuvNf/OWi0yuu/LQ/x75/BfuW8owl7jfAQXSNQlt7DmLIrZwBAwlFye2Ny+xg+e/kwf2fkumw=",
"TermUrl": "http://secure-trading-service.local/st-card-payment/1/3ds"
}
},
"links": {
"/st-card-payment/1": {
"amount": 1000,
"currency": "GBP",
"status": "Pending",
"billingAddress": {
"title": "Mr",
"firstNames": "Test Ing",
"surname": "Person",
"address1": "123 Test Street",
"address2": "Another Street",
"town": "Test Town",
"county": "Norfolk",
"country": "GB",
"postCode": "TE57 1NG",
"telephoneNumber": "+79 123-123-123"
},
"underReview": false,
"fraudChecked": true,
"3dSecureEnabled": true,
"pan": "411111######1111",
"cardType": "VISA",
"expiryDate": "122017",
"created": "2017-06-25T14:00:00+00:00",
"updated": "2017-06-25T14:05:00+00:00"
}
}
}
400 application/json
Response schema (show)
{
"description": "Response with failure",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
Response example (show)
{
"status": "fail",
"data": {
"validation": {
"amount": "must be greater than 0, but is equal to \"-1\""
}
}
}
404 application/json
Response schema (show)
{
"description": "Response with failure",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
Response example (show)
{
"status": "fail",
"data": {
"message": "Stored card not found"
}
}
422 application/json
Response schema (show)
{
"description": "Response with failure",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
Response example (show)
{
"status": "fail",
"data": {
"code": "10000",
"message": "The payment was declined by the bank"
}
}
500 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"message"
]
}
]
}
URI parameters
string id (required)
Pattern: ^\d+$
GET /st-card-payment/{id}
200 application/json
Response schema (show)
{
"description": "Secure Trading Card Payment object",
"type": "object",
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"additionalProperties": false,
"required": [
"amount",
"currency",
"localAmount",
"status",
"underReview",
"fraudChecked",
"3dSecureEnabled",
"pan",
"cardType",
"expiryDate",
"lastReference",
"authReference",
"created",
"updated"
],
"properties": {
"amount": {
"type": "integer",
"description": "Amount pence in GBP"
},
"currency": {
"type": "string",
"description": "One of currency codes from https://www.securetrading.com/docs/document/toolbox/currency-codes/ that is available on the secure trading account"
},
"localAmount": {
"type": [
"integer",
"null"
],
"description": "Amount pence in selected currency"
},
"status": {
"description": "Current status of the payment transaction.",
"type": "string",
"enum": [
"Pending",
"Declined",
"Authorised"
]
},
"billingAddress": {
"description": "Card payment billing address schema",
"type": "object",
"additionalProperties": false,
"required": [
"title",
"firstNames",
"surname",
"address1",
"town",
"country"
],
"properties": {
"title": {
"description": "e.g. Mr, Miss, Dr",
"type": "string",
"maxLength": 25
},
"firstNames": {
"type": "string",
"maxLength": 254
},
"surname": {
"type": "string",
"maxLength": 127
},
"address1": {
"type": "string",
"maxLength": 25
},
"address2": {
"type": "string",
"maxLength": 127
},
"address3": {
"type": "string",
"maxLength": 127
},
"town": {
"type": "string",
"maxLength": 127
},
"county": {
"description": "For US addresses, the state would be entered in this field",
"type": "string",
"maxLength": 127
},
"postCode": {
"description": "If the country provided is not United States, Great Britain or Canada, or if no country is provided, the postcode field is not validated",
"type": "string",
"maxLength": 25
},
"country": {
"description": "This will need to be in ISO2A format. https://www.securetrading.com/docs/document/toolbox/country-codes/",
"type": "string",
"pattern": "^[A-Z]{2}$",
"maxLength": 2
},
"telephoneNumber": {
"type": "string",
"pattern": "^[0-9\\-\\+\\(\\)\\s]{0,20}$",
"maxLength": 20
},
"email": {
"type": "string",
"pattern": "^.*$",
"maxLength": 255
},
"marketingSignup": {
"type": "boolean"
}
}
},
"underReview": {
"type": "boolean"
},
"fraudChecked": {
"type": "boolean"
},
"3dSecureEnabled": {
"type": "boolean"
},
"pan": {
"description": "Masked card number, e.g. 411111######1111",
"type": [
"string",
"null"
],
"pattern": "^[0-9]{6,6}#{6,6}[0-9]{4,4}$"
},
"cardType": {
"type": [
"string",
"null"
]
},
"expiryDate": {
"type": "string"
},
"authReference": {
"type": [
"string",
"null"
],
"description": "Reference to auth operation on payment in SecureTrading"
},
"lastReference": {
"type": [
"string",
"null"
],
"description": "Reference to last operation on payment in SecureTrading"
},
"created": {
"type": "string"
},
"updated": {
"type": [
"string",
"null"
]
}
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"amount": 1000,
"currency": "GBP",
"status": "Pending",
"billingAddress": {
"title": "Mr",
"firstNames": "Mat Pat",
"surname": "Tad",
"address1": "Address Line 1",
"town": "Berat",
"postCode": "123-45-GET",
"country": "UG"
},
"underReview": false,
"fraudChecked": true,
"3dSecureEnabled": true,
"pan": "411111######1111",
"cardType": "VISA",
"expiryDate": "122017",
"lastReference": null,
"authReference": "123-abcd4e",
"created": "2017-06-25T14:00:00+00:00",
"updated": "2017-06-25T14:05:00+00:00"
}
}
404 application/json
Response schema (show)
{
"description": "Response with failure",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
PUT /st-card-payment/{id}
Request schema (show)
{
"description": "Card payment fraud challanged update request",
"type": "object",
"additionalProperties": false,
"required": [
"status"
],
"properties": {
"status": {
"type": "string",
"description": "One of payment statuses: Declined or Authorised"
}
}
}
Request example (show)
{
"status": "Authorised"
}
200 application/json
Response schema (show)
{
"description": "Secure Trading Card Payment response",
"type": "object",
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"required": [
"links"
],
"properties": {
"data": {
"type": "object",
"additionalProperties": false,
"required": [
"payment"
],
"properties": {
"payment": {
"type": [
"string"
],
"pattern": "/st-card-payment/[0-9]+"
},
"threeDSecure": {
"type": "object",
"description": "Information required for preforming three d secure process",
"properties": {
"acsUrl": {
"type": "string",
"description": "Bank website that need to be used to start three d secure process"
},
"MD": {
"type": "string",
"description": "The unique 3-D Secure reference for this transaction"
},
"PaReq": {
"type": "string",
"description": "The unique identifier for the transaction"
},
"TermUrl": {
"type": "string",
"description": "Address where bank will redirect in the end of process"
}
},
"required": [
"acsUrl",
"MD",
"PaReq",
"TermUrl"
]
}
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"payment": "/st-card-payment/1",
"threeDSecure": {
"acsUrl": "https://webapp.securetrading.net/acs/visa.cgi",
"MD": "UEZOVVBqeE5SRDQ4VFVSSVBtWjJWMWR4SzBKeWQySmxLMnQ1TUhSRlVrSkNja0U5UFR3dlRVUklQanhoWTNOVmNtdythSFIwY0hNNkx5OTNaV0poY0hBdWMyVmpkWEpsZEhKaFpHbHVaeTV1WlhRdllXTnpMM1pwYzJFdVkyZHBQQzloWTNOVmNtdytQSEJoYmt4bGJtZDBhRDR4Tmp3dmNHRnVUR1Z1WjNSb1BqeHRaWE56WVdkbFNXUStVRUZTWlhFdE1UVXdORFV5TmpRM05UWXdOeTB4T0RjM05UTTJOamt6UEM5dFpYTnpZV2RsU1dRK1BDOU5SRDQ4TDFOVVBnPT06bWRlU29aUlIrYytQTGt3OU5OdHZyUzRNeFpJa2hNT0k4bzY0WjdlZjZmNTNzPQ==",
"PaReq": "eJxVUttuAiEQ/RXj+8plb2pGElub1KQ1atf0mcBEN9mLAhr9+8KqVeeFOTNwOHMAip1BnP2gOhoU8I3Wyi32Sj3pL6drPEQspUnKsyRPM5pHbJjnaZxlo7gvoNsg4ITGlm0j2IAOOJA79FxG7WTjBEh1eJsvBONxkmZAbhBqNPOZoK8B5FqGRtYoptaicaXtfTkNpCuBao+NMxcx5J7rDuBoKrFzbj8mxHbDRM5IXTbbyDOcSoWDqlWyItZFShod7eWlxsYRTkmsLZBwHshD8/IYMuvvO5dayM15U9AVX3CdylhdiqIq1h96t/ptJ0DCDtDSoeCU5XREkx7jY8rGLAXS1UHWQWiwwM9/zWEfrpg+NZ4L4Gcw2Kj7nHcEeN63jVcuvNf/OWi0yuu/LQ/x75/BfuW8owl7jfAQXSNQlt7DmLIrZwBAwlFye2Ny+xg+e/kwf2fkumw=",
"TermUrl": "http://secure-trading-service.local/st-card-payment/1/3ds"
}
},
"links": {
"/st-card-payment/1": {
"amount": 1000,
"currency": "GBP",
"status": "Pending",
"billingAddress": {
"title": "Mr",
"firstNames": "Test Ing",
"surname": "Person",
"address1": "123 Test Street",
"address2": "Another Street",
"town": "Test Town",
"county": "Norfolk",
"country": "GB",
"postCode": "TE57 1NG",
"telephoneNumber": "+79 123-123-123"
},
"underReview": false,
"fraudChecked": true,
"3dSecureEnabled": true,
"pan": "411111######1111",
"cardType": "VISA",
"expiryDate": "122017",
"created": "2017-06-25T14:00:00+00:00",
"updated": "2017-06-25T14:05:00+00:00"
}
}
}
400 application/json
Response schema (show)
{
"description": "Response with failure",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
Response example (show)
{
"status": "fail",
"data": {
"validation": {
"amount": "must be greater than 0, but is equal to \"-1\""
}
}
}
404 application/json
Response schema (show)
{
"description": "Response with failure",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
Response example (show)
{
"status": "fail",
"data": {
"message": "Stored card not found"
}
}
422 application/json
Response schema (show)
{
"description": "Response with failure",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
Response example (show)
{
"status": "fail",
"data": {
"message": "Payment is not under review"
}
}
500 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"message"
]
}
]
}
URI parameters
string id (required)
Pattern: ^\d+$
POST /st-card-payment/{id}/3ds
URI parameters
string id (required)
Pattern: ^\d+$
POST /st-card-payment/{id}/refund
Request schema (show)
{
"description": "Payment refund request",
"type": "object",
"additionalProperties": false,
"required": [],
"properties": {
"amount": {
"type": "integer",
"description": "Amount pence in GBP (default currency)"
},
"localAmount": {
"type": "integer",
"description": "Amount pence in selected currency"
}
}
}
Request example (show)
{
"localAmount": 3000,
"amount": 2560
}
200 application/json
Response schema (show)
{
"description": "Secure Trading Card Payment Refund response",
"type": "object",
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"type": "object",
"additionalProperties": false,
"required": [
"transactionRef"
],
"properties": {
"transactionRef": {
"type": "string"
}
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"transactionRef": "123abc"
}
}
400 application/json
Response schema (show)
{
"description": "Response with failure",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
Response example (show)
{
"status": "fail",
"data": {
"validation": {
"amount": "must be greater than 0, but is equal to \"-1\""
}
}
}
422 application/json
Response schema (show)
{
"description": "Response with failure",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
Response example (show)
{
"status": "fail",
"data": {
"message": "Refund amount too great",
"code": 20007
}
}
500 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"message"
]
}
]
}
POST /st-card
Request schema (show)
{
"description": "Card store request",
"type": "object",
"additionalProperties": false,
"required": [
"cardToken",
"expiryMonth",
"expiryYear",
"billingAddress"
],
"properties": {
"cardToken": {
"type": "string"
},
"billingAddress": {
"description": "Card payment billing address schema",
"type": "object",
"additionalProperties": false,
"required": [
"title",
"firstNames",
"surname",
"address1",
"town",
"country"
],
"properties": {
"title": {
"description": "e.g. Mr, Miss, Dr",
"type": "string",
"maxLength": 25
},
"firstNames": {
"type": "string",
"maxLength": 254
},
"surname": {
"type": "string",
"maxLength": 127
},
"address1": {
"type": "string",
"maxLength": 25
},
"address2": {
"type": "string",
"maxLength": 127
},
"address3": {
"type": "string",
"maxLength": 127
},
"town": {
"type": "string",
"maxLength": 127
},
"county": {
"description": "For US addresses, the state would be entered in this field",
"type": "string",
"maxLength": 127
},
"postCode": {
"description": "If the country provided is not United States, Great Britain or Canada, or if no country is provided, the postcode field is not validated",
"type": "string",
"maxLength": 25
},
"country": {
"description": "This will need to be in ISO2A format. https://www.securetrading.com/docs/document/toolbox/country-codes/",
"type": "string",
"pattern": "^[A-Z]{2}$",
"maxLength": 2
},
"telephoneNumber": {
"type": "string",
"pattern": "^[0-9\\-\\+\\(\\)\\s]{0,20}$",
"maxLength": 20
},
"email": {
"type": "string",
"pattern": "^.*$",
"maxLength": 255
},
"marketingSignup": {
"type": "boolean"
}
}
}
}
}
Request example (show)
{
"cardToken": "abcd1234",
"expiryMonth": 10,
"expiryYear": 2029,
"billingAddress": {
"title": "Mr",
"firstNames": "Test Ing",
"surname": "Person",
"address1": "123 Test Street",
"address2": "Another Street",
"town": "Test Town",
"county": "Norfolk",
"country": "GB",
"postCode": "TE57 1NG",
"telephoneNumber": "+79 123-123-123"
}
}
200 application/json
Response example (show)
{
"status": "success",
"data": {
"id": 6,
"userId": "***",
"expiryMonth": 10,
"expiryYear": 2029,
"title": "Mr",
"firstNames": "Test Ing",
"surname": "Person",
"address1": "123 Test Street",
"address2": "Another Street",
"address3": null,
"town": "Test Town",
"county": "Norfolk",
"postCode": "TE57 1NG",
"country": "GB",
"telephoneNumber": "+79 123-123-123",
"transactionReference": "6-52-1785244"
}
}
400 application/json
Response schema (show)
{
"description": "Response with failure",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
Response example (show)
{
"status": "fail",
"data": {
"validation": {
"cardToken": "Token is missing"
}
}
}
422 application/json
Response schema (show)
{
"description": "Response with failure",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
Response example (show)
{
"status": "fail",
"data": {
"message": "Error message"
}
}
500 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"message"
]
}
]
}
GET /st-card
200 application/json
Response schema (show)
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data",
"links"
]
}
]
}
Response example (show)
{
"status": "success",
"data": [
"/st-card/1"
],
"links": {
"/st-card/1": {
"storedCard": {
"id": 5,
"userId": "***",
"expiryMonth": 10,
"expiryYear": 2029,
"title": "Mr",
"firstNames": "Test Ing",
"surname": "Person",
"address1": "123 Test Street",
"address2": "Another Street",
"address3": null,
"town": "Test Town",
"county": "Norfolk",
"postCode": "TE57 1NG",
"country": "GB",
"telephoneNumber": "+79 123-123-123",
"transactionReference": "7-52-1284041"
},
"maskedPan": "411111######0021",
"addedAt": "2018-01-31 08:04:25"
}
}
}
GET /st-card/{id}
200 application/json
Response example (show)
{
"status": "success",
"data": {
"storedCard": {
"id": 5,
"userId": "***",
"expiryMonth": 10,
"expiryYear": 2029,
"title": "Mr",
"firstNames": "Test Ing",
"surname": "Person",
"address1": "123 Test Street",
"address2": "Another Street",
"address3": null,
"town": "Test Town",
"county": "Norfolk",
"postCode": "TE57 1NG",
"country": "GB",
"telephoneNumber": "+79 123-123-123",
"transactionReference": "7-52-1284041"
},
"maskedPan": "411111######0021",
"addedAt": "2018-01-31 08:04:25"
}
}
422 application/json
Response example (show)
{
"status": "success",
"data": {
"message": "User {{userId}} is not authorized to read this card data"
}
}
DELETE /st-card/{id}
200 application/json
Response example (show)
{
"status": "success",
"data": []
}
422 application/json
Response example (show)
{
"status": "fail",
"data": {
"message": "Error message"
}
}
POST /st-card/:id/user
Request schema (show)
{
"additionalProperties": false,
"description": "Store card user schema",
"properties": {
"userId": {
"required": true,
"type": "number"
}
},
"required": [
"userId"
],
"type": "object"
}
Request example (show)
{
"userId": "/user/1"
}
200 application/json
Response example (show)
{
"status": "success",
"data": {
"cardId": 1,
"usersList": [
"/user/2",
"/user/1",
"/user/3",
"/tbo-user/6",
"/tbo-user/8",
"/tbo-user/10",
"/tbo-user/11",
"/tbo-user/13",
"/tbo-user/15",
"/tbo-user/1"
]
}
}
422 application/json
Response schema (show)
{
"description": "Response with failure",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
Response example (show)
{
"status": "success",
"data": {
"message": "Example message"
}
}
500 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"message"
]
}
]
}
DELETE /st-card/:id/user
Request schema (show)
{
"additionalProperties": false,
"description": "Store card user schema",
"properties": {
"userId": {
"required": true,
"type": "number"
}
},
"required": [
"userId"
],
"type": "object"
}
Request example (show)
{
"userId": "/user/1"
}
200 application/json
Response example (show)
{
"status": "success",
"data": {
"cardId": 1,
"usersList": [
"/user/2",
"/user/1",
"/user/3",
"/tbo-user/6",
"/tbo-user/8",
"/tbo-user/10",
"/tbo-user/11",
"/tbo-user/13",
"/tbo-user/15",
"/tbo-user/1"
]
}
}
422 application/json
Response schema (show)
{
"description": "Response with failure",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
Response example (show)
{
"status": "success",
"data": {
"message": "Example message"
}
}
500 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"message"
]
}
]
}
GET /st-card/:id/users
200 application/json
Response example (show)
{
"status": "success",
"data": {
"cardId": 1,
"usersList": [
"/user/2",
"/user/1",
"/user/3",
"/tbo-user/6",
"/tbo-user/8",
"/tbo-user/10",
"/tbo-user/11",
"/tbo-user/13",
"/tbo-user/15",
"/tbo-user/1"
]
}
}
POST /st-alipay-payment/
Request schema (show)
{
"description": "AliPay payment request",
"type": "object",
"additionalProperties": false,
"required": [
"order",
"amount",
"returnUrl",
"mode"
],
"properties": {
"order": {
"type": [
"string"
],
"pattern": "/order/[0-9]+"
},
"amount": {
"type": "integer",
"description": "Amount pence in GBP"
},
"returnUrl": {
"type": "string",
"description": "Callback url required for 3d secure payments"
},
"billingAddress": {
"description": "Card payment billing address schema",
"type": "object",
"additionalProperties": false,
"required": [
"title",
"firstNames",
"surname",
"address1",
"town",
"country"
],
"properties": {
"title": {
"description": "e.g. Mr, Miss, Dr",
"type": "string",
"maxLength": 25
},
"firstNames": {
"type": "string",
"maxLength": 254
},
"surname": {
"type": "string",
"maxLength": 127
},
"address1": {
"type": "string",
"maxLength": 25
},
"address2": {
"type": "string",
"maxLength": 127
},
"address3": {
"type": "string",
"maxLength": 127
},
"town": {
"type": "string",
"maxLength": 127
},
"county": {
"description": "For US addresses, the state would be entered in this field",
"type": "string",
"maxLength": 127
},
"postCode": {
"description": "If the country provided is not United States, Great Britain or Canada, or if no country is provided, the postcode field is not validated",
"type": "string",
"maxLength": 25
},
"country": {
"description": "This will need to be in ISO2A format. https://www.securetrading.com/docs/document/toolbox/country-codes/",
"type": "string",
"pattern": "^[A-Z]{2}$",
"maxLength": 2
},
"telephoneNumber": {
"type": "string",
"pattern": "^[0-9\\-\\+\\(\\)\\s]{0,20}$",
"maxLength": 20
},
"email": {
"type": "string",
"pattern": "^.*$",
"maxLength": 255
},
"marketingSignup": {
"type": "boolean"
}
}
},
"currency": {
"type": "string",
"default": "GBP",
"description": "One of currency codes from https://docs.trustpayments.com/document/toolbox/currency-codes/ that is available on the secure trading account",
"pattern": "^[A-Z]{3}$"
},
"localAmount": {
"type": "integer",
"description": "Amount pence in selected currency"
},
"mode": {
"enum": [
"desktop",
"mobile",
"sdk"
],
"description": "Whether to use the AliPay desktop, mobile or SDK-based interface"
}
}
}
Request example (show)
{
"order": "/order/1",
"amount": 1000,
"billingAddress": {
"title": "Mr",
"firstNames": "Test Ing",
"surname": "Person",
"address1": "123 Test Street",
"address2": "Another Street",
"town": "Test Town",
"county": "Norfolk",
"country": "GB",
"postCode": "TE57 1NG",
"telephoneNumber": "+79 123-123-123"
},
"returnUrl": "http://www.example.org",
"mode": "mobile"
}
200 application/json
Response schema (show)
{
"description": "Secure Trading AliPay Payment response",
"type": "object",
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"required": [
"links"
],
"properties": {
"data": {
"type": "object",
"additionalProperties": false,
"required": [
"payment",
"redirectUrl"
],
"properties": {
"payment": {
"type": [
"string"
],
"pattern": "/st-card-payment/[0-9]+"
},
"redirectUrl": {
"description": "A regular full URL",
"type": "string"
}
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"payment": "/st-card-payment/1",
"redirectUrl": "http://www.example.com/alipay-url"
},
"links": {
"/st-card-payment/1": {
"amount": 1000,
"currency": "GBP",
"status": "Pending",
"underReview": false,
"fraudChecked": true,
"3dSecureEnabled": true,
"pan": null,
"cardType": null,
"expiryDate": null,
"created": "2017-06-25T14:00:00+00:00",
"updated": "2017-06-25T14:05:00+00:00"
}
}
}
POST /st-alipay-payment/verify
Request schema (show)
{
"description": "AliPay auth request",
"type": "object",
"additionalProperties": false,
"required": [
"authReference",
"verifyString"
],
"properties": {
"authReference": {
"type": "string",
"description": "Payment reference number"
},
"verifyString": {
"type": "string",
"description": "Verify string received from AliPay"
}
}
}
Request example (show)
{
"authReference": "59-85-350",
"verifyString": "1234567890"
}
200 application/json
Response schema (show)
{
"description": "AliPay auth response",
"type": "object",
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
]
}
Response example (show)
{
"status": "success"
}
Receives payment notifications from Secure Trading.
POST /st-notification
Request schema (show)
{
"description": "Secure Trading notification request body",
"type": "object",
"properties": {
"requesttypedescription": {
"type": "string",
"description": "Type of the request (e.g. AUTH)"
},
"settlestatus": {
"type": "string",
"description": "Settlement status"
},
"transactionreference": {
"type": "string",
"description": "Unique transaction reference"
},
"orderreference": {
"type": "string",
"description": "Order URI reference"
},
"acquirerresponsemessage": {
"type": "string",
"description": "Acquirer response message"
},
"baseamount": {
"type": "string",
"description": "Payment amount in pence"
},
"currencyiso3a": {
"type": "string",
"description": "ISO 4217 currency code"
},
"paymenttypedescription": {
"type": "string",
"description": "Payment method (e.g. VISA, ALIPAY)"
},
"sitereference": {
"type": "string",
"description": "Secure Trading site reference"
},
"responsesitesecurity": {
"type": "string",
"description": "Security hash for request verification"
},
"errorcode": {
"type": "string",
"description": "Error code (0 = success)"
},
"errormessage": {
"type": "string",
"description": "Human-readable error message"
},
"expirydate": {
"type": "string",
"description": "Card expiry date (MM/YYYY)"
},
"maskedpan": {
"type": "string",
"description": "Masked card PAN"
},
"billingcountryiso2a": {
"type": "string"
},
"billingcounty": {
"type": "string"
},
"billingfirstname": {
"type": "string"
},
"billinglastname": {
"type": "string"
},
"billingpostcode": {
"type": "string"
},
"billingprefixname": {
"type": "string"
},
"billingpremise": {
"type": "string"
},
"billingstreet": {
"type": "string"
},
"billingtown": {
"type": "string"
},
"billingtelephone": {
"type": "string"
},
"billingemail": {
"type": "string"
},
"customercountryiso2a": {
"type": "string"
},
"customercounty": {
"type": "string"
},
"customerfirstname": {
"type": "string"
},
"customerlastname": {
"type": "string"
},
"customerpostcode": {
"type": "string"
},
"customerprefixname": {
"type": "string"
},
"customerpremise": {
"type": "string"
},
"customerstreet": {
"type": "string"
},
"customertown": {
"type": "string"
},
"customertelephone": {
"type": "string"
},
"customeremail": {
"type": "string"
},
"customfield1": {
"type": "string"
}
},
"required": [
"requesttypedescription",
"transactionreference"
]
}
Request example (show)
{
"requesttypedescription": "AUTH",
"settlestatus": "0",
"transactionreference": "6-9-4881726",
"orderreference": "/order/1",
"acquirerresponsemessage": "APPROVED",
"baseamount": "1000",
"currencyiso3a": "GBP",
"paymenttypedescription": "VISA",
"sitereference": "test_assertis51618",
"expirydate": "12/2025",
"maskedpan": "400000######1091",
"billingcountryiso2a": "GB",
"billingcounty": "Norfolk",
"billingfirstname": "Test",
"billinglastname": "User",
"billingpostcode": "TE57 1NG",
"billingprefixname": "Mr",
"billingpremise": "123",
"billingstreet": "Test Street",
"billingtown": "Test Town",
"billingtelephone": "+44123456789",
"billingemail": "test@example.com"
}
200 application/json
Response schema (show)
{
"description": "Secure Trading notification response",
"type": "object",
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"additionalProperties": false,
"properties": {
"result": {
"type": "string",
"enum": [
"processed",
"ignored"
],
"description": "Whether the notification was acted upon or skipped"
}
},
"required": [
"result"
]
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"result": "processed"
}
}
Apple Pay payment endpoints.
POST /st-apple-pay
Create an Apple Pay payment (native iOS app flow).
Requires query parameter orderreference with the order URI.
For the website flow, set websiteFlow=true as a query param and include callbackUrl.
Parameters
string orderreference (required)
Order URI (e.g. /order/123)
boolean websiteFlow
Set to true for the website (st.js) flow
Request schema (show)
{
"description": "Apple Pay payment request body (native iOS app flow)",
"type": "object",
"additionalProperties": false,
"required": [
"walletsource",
"currencyiso3a",
"mainamount",
"wallettoken"
],
"properties": {
"walletsource": {
"type": "string",
"description": "Wallet source identifier, always APPLEPAY"
},
"currencyiso3a": {
"type": "string",
"description": "ISO 4217 currency code"
},
"mainamount": {
"type": "string",
"description": "Payment amount as a decimal string (e.g. \"10.00\")"
},
"wallettoken": {
"type": "object",
"description": "Encrypted Apple Pay payment token",
"additionalProperties": false,
"required": [
"data",
"signature",
"header",
"version"
],
"properties": {
"data": {
"type": "string",
"description": "Encrypted payment data (base64)"
},
"signature": {
"type": "string",
"description": "Detached PKCS#7 signature (base64)"
},
"header": {
"type": "object",
"additionalProperties": false,
"required": [
"publicKeyHash",
"ephemeralPublicKey",
"transactionId"
],
"properties": {
"publicKeyHash": {
"type": "string"
},
"ephemeralPublicKey": {
"type": "string"
},
"transactionId": {
"type": "string"
}
}
},
"version": {
"type": "string",
"description": "Token format version (e.g. EC_v1)"
}
}
},
"paymentData": {
"type": "object",
"additionalProperties": false,
"properties": {
"displayName": {
"type": "string"
},
"network": {
"type": "string"
},
"type": {
"type": "string"
}
}
},
"versioninfo": {
"type": "string"
}
}
}
Request example (show)
{
"walletsource": "APPLEPAY",
"currencyiso3a": "GBP",
"mainamount": "10.00",
"wallettoken": {
"data": "base64encodeddata==",
"signature": "base64encodedsignature==",
"header": {
"publicKeyHash": "base64hash==",
"ephemeralPublicKey": "base64key==",
"transactionId": "abc123transactionid"
},
"version": "EC_v1"
},
"paymentData": {
"displayName": "Visa 1091",
"network": "Visa",
"type": "debit"
},
"versioninfo": "1.0"
}
200 application/json
Response schema (show)
{
"description": "Apple Pay payment response",
"type": "object",
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"additionalProperties": false,
"required": [
"payment",
"amount",
"currency",
"localAmount",
"order",
"status",
"billingAddress",
"created"
],
"properties": {
"payment": {
"type": "string",
"description": "URI of the created Apple Pay payment resource"
},
"amount": {
"type": "string",
"description": "Charged amount as a decimal string (e.g. \"10.00\")"
},
"currency": {
"type": "string",
"description": "ISO 4217 currency code"
},
"localAmount": {
"type": "integer",
"description": "Amount in the local currency expressed in minor units (pence)"
},
"order": {
"type": "string",
"description": "Order URI reference"
},
"status": {
"type": "string",
"enum": [
"Authorised",
"Pending",
"Declined"
],
"description": "Payment status"
},
"billingAddress": {
"type": "object",
"description": "Billing address associated with the payment",
"properties": {
"title": {
"type": "string"
},
"firstNames": {
"type": "string"
},
"surname": {
"type": "string"
},
"address1": {
"type": "string"
},
"address2": {
"type": "string"
},
"address3": {
"type": [
"string",
"null"
]
},
"town": {
"type": "string"
},
"county": {
"type": "string"
},
"country": {
"type": "string"
},
"postCode": {
"type": [
"string",
"null"
]
},
"telephoneNumber": {
"type": "string"
},
"email": {
"type": [
"string",
"null"
]
}
}
},
"pan": {
"type": [
"string",
"null"
],
"description": "Masked card PAN"
},
"cardType": {
"type": [
"string",
"null"
],
"description": "Card network (e.g. VISA, MASTERCARD)"
},
"authReference": {
"type": [
"string",
"null"
],
"description": "Secure Trading transaction reference"
},
"created": {
"type": "string",
"description": "ISO 8601 creation timestamp"
},
"updated": {
"type": [
"string",
"null"
],
"description": "ISO 8601 last-updated timestamp"
}
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"payment": "/st-apple-pay/123",
"amount": "10.00",
"currency": "GBP",
"localAmount": 1000,
"order": "/order/1",
"status": "Authorised",
"billingAddress": {
"title": "Mr",
"firstNames": "Test",
"surname": "User",
"address1": "123 Test Street",
"address2": "Another Road",
"address3": null,
"town": "Test Town",
"county": "Norfolk",
"country": "GB",
"postCode": "TE57 1NG",
"telephoneNumber": "+44123456789"
},
"pan": "400000######1091",
"cardType": "VISA",
"authReference": "6-9-4881726",
"created": "2023-01-01T12:00:00+01:00",
"updated": null
}
}
400 application/json
Response schema (show)
{
"description": "Response with failure",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
500 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"message"
]
}
]
}
URI parameters
string id (required)
Apple Pay payment ID
GET /st-apple-pay/{id}
Retrieve an Apple Pay payment by ID.
200 application/json
Response schema (show)
{
"description": "Apple Pay payment response",
"type": "object",
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"additionalProperties": false,
"required": [
"payment",
"amount",
"currency",
"localAmount",
"order",
"status",
"billingAddress",
"created"
],
"properties": {
"payment": {
"type": "string",
"description": "URI of the created Apple Pay payment resource"
},
"amount": {
"type": "string",
"description": "Charged amount as a decimal string (e.g. \"10.00\")"
},
"currency": {
"type": "string",
"description": "ISO 4217 currency code"
},
"localAmount": {
"type": "integer",
"description": "Amount in the local currency expressed in minor units (pence)"
},
"order": {
"type": "string",
"description": "Order URI reference"
},
"status": {
"type": "string",
"enum": [
"Authorised",
"Pending",
"Declined"
],
"description": "Payment status"
},
"billingAddress": {
"type": "object",
"description": "Billing address associated with the payment",
"properties": {
"title": {
"type": "string"
},
"firstNames": {
"type": "string"
},
"surname": {
"type": "string"
},
"address1": {
"type": "string"
},
"address2": {
"type": "string"
},
"address3": {
"type": [
"string",
"null"
]
},
"town": {
"type": "string"
},
"county": {
"type": "string"
},
"country": {
"type": "string"
},
"postCode": {
"type": [
"string",
"null"
]
},
"telephoneNumber": {
"type": "string"
},
"email": {
"type": [
"string",
"null"
]
}
}
},
"pan": {
"type": [
"string",
"null"
],
"description": "Masked card PAN"
},
"cardType": {
"type": [
"string",
"null"
],
"description": "Card network (e.g. VISA, MASTERCARD)"
},
"authReference": {
"type": [
"string",
"null"
],
"description": "Secure Trading transaction reference"
},
"created": {
"type": "string",
"description": "ISO 8601 creation timestamp"
},
"updated": {
"type": [
"string",
"null"
],
"description": "ISO 8601 last-updated timestamp"
}
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"payment": "/st-apple-pay/123",
"amount": "10.00",
"currency": "GBP",
"localAmount": 1000,
"order": "/order/1",
"status": "Authorised",
"billingAddress": {
"title": "Mr",
"firstNames": "Test",
"surname": "User",
"address1": "123 Test Street",
"address2": "Another Road",
"address3": null,
"town": "Test Town",
"county": "Norfolk",
"country": "GB",
"postCode": "TE57 1NG",
"telephoneNumber": "+44123456789"
},
"pan": "400000######1091",
"cardType": "VISA",
"authReference": "6-9-4881726",
"created": "2023-01-01T12:00:00+01:00",
"updated": null
}
}
404 application/json
Response schema (show)
{
"description": "Response with failure",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
POST /st-apple-pay/{id}/refund
Refund an Apple Pay payment.
Request schema (show)
{
"description": "Payment refund request",
"type": "object",
"additionalProperties": false,
"required": [],
"properties": {
"amount": {
"type": "integer",
"description": "Amount pence in GBP (default currency)"
},
"localAmount": {
"type": "integer",
"description": "Amount pence in selected currency"
}
}
}
Request example (show)
{
"localAmount": 3000,
"amount": 2560
}
200 application/json
Response schema (show)
{
"description": "Apple Pay refund response",
"type": "object",
"allOf": [
{
"description": "Response with data",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
},
{
"properties": {
"data": {
"additionalProperties": false,
"required": [
"transactionRef"
],
"properties": {
"transactionRef": {
"type": "string",
"description": "Secure Trading refund transaction reference"
}
}
}
}
}
]
}
Response example (show)
{
"status": "success",
"data": {
"transactionRef": "6-9-4881726-refund"
}
}
400 application/json
Response schema (show)
{
"description": "Response with failure",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
404 application/json
Response schema (show)
{
"description": "Response with failure",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
422 application/json
Response schema (show)
{
"description": "Response with failure",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"data"
]
}
]
}
500 application/json
Response schema (show)
{
"description": "Response with error",
"allOf": [
{
"description": "A standard JSON response",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Response status",
"enum": [
"success",
"fail",
"error"
]
},
"data": {
"description": "Response data",
"type": [
"object",
"array"
]
},
"code": {
"description": "Response error code",
"type": "string"
},
"message": {
"description": "Response error message",
"type": "string"
},
"links": {
"description": "Response resolved links",
"type": [
"object",
"array"
]
}
}
},
{
"required": [
"message"
]
}
]
}
Returns the SecureTrading st.js library bundled with Apple Pay initialisation code. The response is plain JavaScript intended to be loaded via a