{
	"swagger": "2.0",
	"info": {
		"title": "Reservations",
		"version": "v2"
	},
	"paths": {
		"/api/v2/availability": {
			"post": {
				"description": "Make an availability journey search",
				"consumes": [
					"application/json"
				],
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "includeLegAvailability",
						"in": "query",
						"type": "boolean"
					},
					{
						"name": "includeInventoryClassType",
						"in": "query",
						"type": "boolean"
					},
					{
						"x-amf-mediaType": "application/json",
						"in": "body",
						"name": "generated",
						"schema": {
							"$ref": "#/definitions/AvailabilitySearch"
						}
					}
				],
				"responses": {
					"200": {
						"description": "",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/AvailabilitySearchResponse"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/bookings": {
			"post": {
				"description": "Make provisional booking",
				"consumes": [
					"application/json"
				],
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"x-amf-mediaType": "application/json",
						"in": "body",
						"name": "generated",
						"schema": {
							"$ref": "#/definitions/CreateProvisionalBookingRequest"
						}
					}
				],
				"responses": {
					"201": {
						"description": "",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/BookingResponse"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/bookings/{bookingReference}": {
			"get": {
				"description": "Recall booking by S3 reference",
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "bookingReference",
						"required": true,
						"in": "path",
						"type": "string",
						"maxLength": 16
					}
				],
				"responses": {
					"200": {
						"description": "",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/BookingResponse"
						}
					},
					"404": {
						"description": "If the booking isn't found for the specified booking reference",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/bookings/{bookingReference}/rebooking": {
			"put": {
				"description": "A rebook operation of a existing booking which can contain the full journey or part of the journey.\n",
				"consumes": [
					"application/json"
				],
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "bookingReference",
						"required": true,
						"in": "path",
						"type": "string",
						"maxLength": 16
					},
					{
						"x-amf-mediaType": "application/json",
						"in": "body",
						"name": "generated",
						"schema": {
							"$ref": "#/definitions/RebookRequest"
						}
					}
				],
				"responses": {
					"200": {
						"description": "If the booking was successfully rebooked",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/BookingResponse"
						}
					},
					"204": {
						"description": "No content - Booking successfully updated"
					},
					"404": {
						"description": "Booking reference not found",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/bookings/{bookingReference}/utn": {
			"put": {
				"description": "Update the Unique Ticket Number for a Booking",
				"consumes": [
					"application/json"
				],
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "bookingReference",
						"required": true,
						"in": "path",
						"type": "string",
						"maxLength": 16
					},
					{
						"x-amf-mediaType": "application/json",
						"in": "body",
						"name": "generated",
						"schema": {
							"$ref": "#/definitions/UtnPutRequest"
						}
					}
				],
				"responses": {
					"204": {
						"description": "No content - Unique Ticket Number successfully updated"
					},
					"404": {
						"description": "Booking reference not found",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/bookings/{bookingReference}/rbr": {
			"put": {
				"description": "Update the Retailer's Booking Reference",
				"consumes": [
					"application/json"
				],
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "bookingReference",
						"required": true,
						"in": "path",
						"type": "string",
						"maxLength": 16
					},
					{
						"x-amf-mediaType": "application/json",
						"in": "body",
						"name": "generated",
						"schema": {
							"$ref": "#/definitions/RbrPutRequest"
						}
					}
				],
				"responses": {
					"204": {
						"description": "No content - Unique Ticket Number successfully updated"
					},
					"404": {
						"description": "Booking reference not found",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/bookings/{bookingReference}/status": {
			"put": {
				"description": "Confirm or cancel a provisional booking",
				"consumes": [
					"application/json"
				],
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "bookingReference",
						"required": true,
						"in": "path",
						"type": "string",
						"maxLength": 16
					},
					{
						"x-amf-mediaType": "application/json",
						"in": "body",
						"name": "generated",
						"schema": {
							"$ref": "#/definitions/StatusPutRequest"
						}
					}
				],
				"responses": {
					"200": {
						"description": "If the booking was successfully confirmed or reverted",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/BookingResponse"
						}
					},
					"204": {
						"description": "If the booking was successfully cancelled"
					},
					"404": {
						"description": "If the booking isn't found for the specified booking reference",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/bookings/{bookingReference}/seats": {
			"patch": {
				"description": "Update seats",
				"consumes": [
					"application/json"
				],
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "bookingReference",
						"required": true,
						"in": "path",
						"type": "string",
						"maxLength": 16
					},
					{
						"x-amf-mediaType": "application/json",
						"in": "body",
						"name": "generated",
						"schema": {
							"$ref": "#/definitions/SeatsPatchRequest"
						}
					}
				],
				"responses": {
					"200": {
						"description": "",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/BookingResponse"
						}
					},
					"404": {
						"description": "If the booking isn't found for the specified booking reference",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/bookings/{bookingReference}/customer": {
			"patch": {
				"description": "Update customer details",
				"consumes": [
					"application/json"
				],
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "bookingReference",
						"required": true,
						"in": "path",
						"type": "string",
						"maxLength": 16
					},
					{
						"x-amf-mediaType": "application/json",
						"in": "body",
						"name": "generated",
						"schema": {
							"$ref": "#/definitions/Customer"
						}
					}
				],
				"responses": {
					"200": {
						"description": "",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/BookingResponse"
						}
					},
					"404": {
						"description": "If the booking isn't found for the specified booking reference",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/bookings/{bookingReference}/passengers": {
			"post": {
				"description": "Add a passenger to a booking",
				"consumes": [
					"application/json"
				],
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "bookingReference",
						"required": true,
						"in": "path",
						"type": "string",
						"maxLength": 16
					},
					{
						"x-amf-mediaType": "application/json",
						"in": "body",
						"name": "generated",
						"schema": {
							"$ref": "#/definitions/PassengerCreate"
						}
					}
				],
				"responses": {
					"200": {
						"description": "",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/BookingResponse"
						}
					},
					"404": {
						"description": "If the booking isn't found for the specified booking reference",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			},
			"patch": {
				"description": "Update one or more passengers for a booking",
				"consumes": [
					"application/json"
				],
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "bookingReference",
						"required": true,
						"in": "path",
						"type": "string",
						"maxLength": 16
					},
					{
						"x-amf-mediaType": "application/json",
						"in": "body",
						"name": "generated",
						"schema": {
							"$ref": "#/definitions/PassengersPatchRequest"
						}
					}
				],
				"responses": {
					"200": {
						"description": "",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/BookingResponse"
						}
					},
					"404": {
						"description": "If the booking isn't found for the specified booking reference",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/bookings/{bookingReference}/passengers/cancel": {
			"patch": {
				"description": "Cancel one or more passengers in an existing booking",
				"consumes": [
					"application/json"
				],
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "bookingReference",
						"required": true,
						"in": "path",
						"type": "string",
						"maxLength": 16
					},
					{
						"x-amf-mediaType": "application/json",
						"in": "body",
						"name": "generated",
						"schema": {
							"$ref": "#/definitions/CancelPassengers"
						}
					}
				],
				"responses": {
					"200": {
						"description": "",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/BookingResponse"
						}
					},
					"404": {
						"description": "If the booking isn't found for the specified booking reference",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/bookings/{bookingReference}/legs": {
			"patch": {
				"description": "Add one or more legs and/or product items to an existing booking",
				"consumes": [
					"application/json"
				],
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "bookingReference",
						"required": true,
						"in": "path",
						"type": "string",
						"maxLength": 16
					},
					{
						"x-amf-mediaType": "application/json",
						"in": "body",
						"name": "generated",
						"schema": {
							"$ref": "#/definitions/LegsPatchRequest"
						}
					}
				],
				"responses": {
					"200": {
						"description": "",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/BookingResponse"
						}
					},
					"404": {
						"description": "If the booking isn't found for the specified booking reference",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/bookings/{bookingReference}/legs/cancel": {
			"patch": {
				"description": "Cancel one or more legs in an existing booking",
				"consumes": [
					"application/json"
				],
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "bookingReference",
						"required": true,
						"in": "path",
						"type": "string",
						"maxLength": 16
					},
					{
						"x-amf-mediaType": "application/json",
						"in": "body",
						"name": "generated",
						"schema": {
							"$ref": "#/definitions/CancelLegs"
						}
					}
				],
				"responses": {
					"200": {
						"description": "",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/BookingResponse"
						}
					},
					"404": {
						"description": "If the booking isn't found for the specified booking reference",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/bookings/{bookingReference}/legs/productItems/cancel": {
			"patch": {
				"description": "Cancel one or more seat product items in an existing booking",
				"consumes": [
					"application/json"
				],
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "bookingReference",
						"required": true,
						"in": "path",
						"type": "string",
						"maxLength": 16
					},
					{
						"x-amf-mediaType": "application/json",
						"in": "body",
						"name": "generated",
						"schema": {
							"$ref": "#/definitions/CancelItems"
						}
					}
				],
				"responses": {
					"200": {
						"description": "",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/BookingResponse"
						}
					},
					"404": {
						"description": "If the booking isn't found for the specified booking reference",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/bookings/{bookingReference}/notes": {
			"post": {
				"description": "Add a note to a booking",
				"consumes": [
					"application/json"
				],
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "bookingReference",
						"required": true,
						"in": "path",
						"type": "string",
						"maxLength": 16
					},
					{
						"x-amf-mediaType": "application/json",
						"in": "body",
						"name": "generated",
						"schema": {
							"$ref": "#/definitions/NotesPostRequest"
						}
					}
				],
				"responses": {
					"201": {
						"description": "",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/BookingResponse"
						}
					},
					"404": {
						"description": "If the booking isn't found for the specified booking reference",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/bookings/references": {
			"get": {
				"description": "Get booking by external reference number",
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "uniqueTicketNumber",
						"in": "query",
						"type": "string",
						"maxLength": 16
					},
					{
						"name": "retailersBookingReference",
						"in": "query",
						"type": "string",
						"maxLength": 16
					}
				],
				"responses": {
					"200": {
						"description": "",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/ReferencesGet200Response"
						}
					},
					"404": {
						"description": "If the booking isn't found for the specified external reference number",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/bookings/{rsid}/{serviceOriginDate}/{boardLocation}/{alightLocation}/{coachId}/{seatId}": {
			"get": {
				"description": "Get booking by service and seat",
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "seatId",
						"required": true,
						"in": "path",
						"type": "string",
						"minLength": 1,
						"maxLength": 5
					},
					{
						"name": "rsid",
						"required": true,
						"in": "path",
						"type": "string",
						"pattern": "^[A-Z]{2}[0-9]{6}$",
						"minLength": 8,
						"maxLength": 8
					},
					{
						"name": "serviceOriginDate",
						"required": true,
						"in": "path",
						"type": "string",
						"pattern": "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$"
					},
					{
						"name": "boardLocation",
						"required": true,
						"in": "path",
						"type": "string",
						"pattern": "^[0-9A-Z]{3}$",
						"minLength": 3,
						"maxLength": 3
					},
					{
						"name": "alightLocation",
						"required": true,
						"in": "path",
						"type": "string",
						"pattern": "^[0-9A-Z]{3}$",
						"minLength": 3,
						"maxLength": 3
					},
					{
						"name": "coachId",
						"required": true,
						"in": "path",
						"type": "string",
						"minLength": 1,
						"maxLength": 5
					}
				],
				"responses": {
					"200": {
						"description": "",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/BookingResponse"
						}
					},
					"404": {
						"description": "Booking not found",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/bookings/{rsid}/tickets/{serviceOriginDate}/{boardLocation}/{alightLocation}/{coachId}/{seatId}": {
			"get": {
				"description": "Get Tickets by service and seat",
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "carrierCode",
						"description": "The 2-character Carrier code from the published timetable data.\n",
						"required": true,
						"in": "query",
						"type": "string",
						"pattern": "^[A-Z]{2}$",
						"maxLength": 2
					},
					{
						"name": "seatId",
						"required": true,
						"in": "path",
						"type": "string",
						"minLength": 1,
						"maxLength": 5
					},
					{
						"name": "rsid",
						"required": true,
						"in": "path",
						"type": "string",
						"pattern": "^[A-Z]{2}[0-9]{6}$",
						"minLength": 8,
						"maxLength": 8
					},
					{
						"name": "serviceOriginDate",
						"description": "service origin date (yyyy-MM-dd)",
						"required": true,
						"in": "path",
						"type": "string",
						"pattern": "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$"
					},
					{
						"name": "boardLocation",
						"required": true,
						"in": "path",
						"type": "string",
						"pattern": "^[0-9A-Z]{3}$",
						"minLength": 3,
						"maxLength": 3
					},
					{
						"name": "alightLocation",
						"required": true,
						"in": "path",
						"type": "string",
						"pattern": "^[0-9A-Z]{3}$",
						"minLength": 3,
						"maxLength": 3
					},
					{
						"name": "coachId",
						"required": true,
						"in": "path",
						"type": "string",
						"minLength": 1,
						"maxLength": 5
					}
				],
				"responses": {
					"200": {
						"description": "",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/TicketsBySeatResponse"
						}
					},
					"404": {
						"description": "Tickets not found SQHQ399-003",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/bookings/{rsid}/tickets/{ticketReference}": {
			"get": {
				"description": "Get Tickets by service and seat",
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "carrierCode",
						"description": "The 2-character Carrier code from the published timetable data.",
						"required": true,
						"in": "query",
						"type": "string",
						"pattern": "^[A-Z]{2}$",
						"maxLength": 2
					},
					{
						"name": "includeValidationStatus",
						"in": "query",
						"type": "boolean"
					},
					{
						"name": "rsid",
						"required": true,
						"in": "path",
						"type": "string",
						"pattern": "^[A-Z]{2}[0-9]{6}$",
						"minLength": 8,
						"maxLength": 8
					},
					{
						"name": "ticketReference",
						"required": true,
						"in": "path",
						"type": "string"
					}
				],
				"responses": {
					"200": {
						"description": "",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/TicketsByTicketReferenceResponse"
						}
					},
					"404": {
						"description": "Ticket details not found SQHQ399-003",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/bookings/validate": {
			"post": {
				"description": "validate ticket",
				"consumes": [
					"application/json"
				],
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "carrierCode",
						"description": "The 2-character Carrier code from the published timetable data.",
						"required": true,
						"in": "query",
						"type": "string",
						"pattern": "^[A-Z]{2}$",
						"maxLength": 2
					},
					{
						"x-amf-mediaType": "application/json",
						"in": "body",
						"name": "generated",
						"schema": {
							"$ref": "#/definitions/ValidateBookingRequest"
						}
					}
				],
				"responses": {
					"204": {
						"description": "No content - Validated Tickets successfully.."
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/bookings/validate/revert": {
			"post": {
				"description": "validate ticket",
				"consumes": [
					"application/json"
				],
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "carrierCode",
						"description": "The 2-character Carrier code from the published timetable data.\n",
						"required": true,
						"in": "query",
						"type": "string",
						"pattern": "^[A-Z]{2}$",
						"maxLength": 2
					},
					{
						"x-amf-mediaType": "application/json",
						"in": "body",
						"name": "generated",
						"schema": {
							"$ref": "#/definitions/RevertValidationBookingRequest"
						}
					}
				],
				"responses": {
					"204": {
						"description": "No content - Ticket validations have been reverted successfully."
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/bookings/booking": {
			"post": {
				"description": "to make one stop booking and confirm booking status",
				"consumes": [
					"application/json"
				],
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "includeConfirmBooking",
						"in": "query",
						"type": "boolean"
					},
					{
						"x-amf-mediaType": "application/json",
						"in": "body",
						"name": "generated",
						"schema": {
							"$ref": "#/definitions/OneStopBookingRequest"
						}
					}
				],
				"responses": {
					"201": {
						"description": "",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/BookingResponse"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/services/{rsid}/coaches": {
			"get": {
				"description": "Fetch coach layout on service based on filters being passed \n",
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "serviceOriginDate",
						"description": "The date of departure at the origin station used by RARS,\nin combination with the RSID, to uniquely identify a\nservice. Please see Association logic page for details on\nhow to choose the right serviceOriginDate for services\ninvolved in a split or join association.\n",
						"required": true,
						"in": "query",
						"type": "string",
						"pattern": "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$"
					},
					{
						"name": "carrierCode",
						"description": "The 2-character Carrier code from the published timetable data.\n",
						"required": true,
						"in": "query",
						"type": "string",
						"pattern": "^[A-Z]{2}$",
						"maxLength": 2
					},
					{
						"name": "boardLocation",
						"description": "The CRS code of the station at which a passenger boards a service.\n",
						"required": true,
						"in": "query",
						"type": "string",
						"pattern": "^[0-9A-Z]{3}$",
						"minLength": 3,
						"maxLength": 3
					},
					{
						"name": "alightLocation",
						"description": "The CRS code of the station at which a passenger alights from a service.\n",
						"required": true,
						"in": "query",
						"type": "string",
						"pattern": "^[0-9A-Z]{3}$",
						"minLength": 3,
						"maxLength": 3
					},
					{
						"name": "rsid",
						"description": "Full 8 character Retail Service ID used by RARS,\nin combination with the Service Origin Date, to\nuniquely identify a service. Please see Association\nlogic page for details on how to choose the right\nRSID for services involved in a split or join association.\n",
						"required": true,
						"in": "path",
						"type": "string",
						"pattern": "^[A-Z]{2}[0-9]{6}$",
						"minLength": 8,
						"maxLength": 8
					}
				],
				"responses": {
					"200": {
						"description": "",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/OldLayoutAndSeatStatus"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/services/{rsid}/coaches/images": {
			"get": {
				"description": "Fetch coach images on service based on filters being passed \n",
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "serviceOriginDate",
						"description": "The date of departure at the origin station used by RARS,\nin combination with the RSID, to uniquely identify a\nservice. Please see Association logic page for details on\nhow to choose the right serviceOriginDate for services\ninvolved in a split or join association.\n",
						"required": true,
						"in": "query",
						"type": "string",
						"pattern": "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$"
					},
					{
						"name": "carrierCode",
						"description": "The 2-character Carrier code from the published timetable data.\n",
						"required": true,
						"in": "query",
						"type": "string",
						"pattern": "^[A-Z]{2}$",
						"maxLength": 2
					},
					{
						"name": "boardLocation",
						"description": "The CRS code of the station at which a passenger boards a service.\n",
						"required": true,
						"in": "query",
						"type": "string",
						"pattern": "^[0-9A-Z]{3}$",
						"minLength": 3,
						"maxLength": 3
					},
					{
						"name": "alightLocation",
						"description": "The CRS code of the station at which a passenger alights from a service.\n",
						"required": true,
						"in": "query",
						"type": "string",
						"pattern": "^[0-9A-Z]{3}$",
						"minLength": 3,
						"maxLength": 3
					},
					{
						"name": "rsid",
						"description": "Full 8 character Retail Service ID used by RARS,\nin combination with the Service Origin Date, to\nuniquely identify a service. Please see Association\nlogic page for details on how to choose the right\nRSID for services involved in a split or join association.\n",
						"required": true,
						"in": "path",
						"type": "string",
						"pattern": "^[A-Z]{2}[0-9]{6}$",
						"minLength": 8,
						"maxLength": 8
					}
				],
				"responses": {
					"200": {
						"description": "",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/ServiceCoachImages"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/services/{rsid}/reports/passengers": {
			"get": {
				"description": "Fetch coach images on service based on filters being passed \n",
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "serviceOriginDate",
						"description": "The date of departure at the origin station used by RARS,\nin combination with the RSID, to uniquely identify a\nservice. Please see Association logic page for details on\nhow to choose the right serviceOriginDate for services\ninvolved in a split or join association.\n",
						"required": true,
						"in": "query",
						"type": "string",
						"pattern": "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$"
					},
					{
						"name": "carrierCode",
						"description": "The 2-character Carrier code from the published timetable data.\n",
						"required": true,
						"in": "query",
						"type": "string",
						"pattern": "^[A-Z]{2}$",
						"maxLength": 2
					},
					{
						"name": "rsid",
						"description": "Full 8 character Retail Service ID used by RARS,\nin combination with the Service Origin Date, to\nuniquely identify a service. Please see Association\nlogic page for details on how to choose the right\nRSID for services involved in a split or join association.\n",
						"required": true,
						"in": "path",
						"type": "string",
						"pattern": "^[A-Z]{2}[0-9]{6}$",
						"minLength": 8,
						"maxLength": 8
					}
				],
				"responses": {
					"200": {
						"description": "",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Passengers"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/refdata/disabilityTypes": {
			"get": {
				"description": "Get Disability Types",
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					}
				],
				"responses": {
					"200": {
						"description": "Status Ok",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/DisabilitytypesGet200Response"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		},
		"/api/v2/refdata/seatProperties": {
			"get": {
				"description": "Get the list of seat properties of a carrier that have been mapped",
				"produces": [
					"application/json"
				],
				"parameters": [
					{
						"name": "Authorization",
						"description": "Bearer token",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "client_id",
						"description": "Unique client id identifying the organisation making the request",
						"required": true,
						"in": "header",
						"type": "string"
					},
					{
						"name": "X-Correlation-Cust-Id",
						"description": "Unique client correlation id that can be used to trace requests",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "Accept-Encoding",
						"description": "Indicates the content encoding that the client can understand. Specifying gzip will result in compressed (and faster) responses.",
						"required": false,
						"in": "header",
						"type": "string"
					},
					{
						"name": "User-Agent",
						"description": "Name and version number of system making the request, e.g. RDGRuntime/7.41.2",
						"required": true,
						"in": "header",
						"type": "string"
					}
				],
				"responses": {
					"200": {
						"description": "",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/SeatPropertiesResponse"
						}
					},
					"400": {
						"description": "Invalid Request according to schema",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"401": {
						"description": "Bad or expired token. To fix, you should re-authenticate the user.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"403": {
						"description": "The client id validation failed.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					},
					"503": {
						"description": "Error communicating with JWKS server.",
						"x-amf-mediaType": "application/json",
						"schema": {
							"$ref": "#/definitions/Errors"
						}
					}
				}
			}
		}
	},
	"definitions": {
		"CreateProvisionalBookingRequest": {
			"type": "object",
			"required": [
				"customer",
				"legs",
				"passengers"
			],
			"properties": {
				"customer": {
					"description": "Person who purchases the booking. Sometimes known as a Lead Passenger for a group booking, although they are not necesarily one of the passengers",
					"type": "object",
					"required": [
						"lastName"
					],
					"properties": {
						"updatedRevision": {
							"title": "Updated Revision",
							"description": "Revision number for the Customer record.",
							"type": "integer"
						},
						"initials": {
							"title": "Initials",
							"description": "An individual's initials.",
							"type": "string",
							"maxLength": 16,
							"minLength": 0
						},
						"lastName": {
							"title": "Last Name",
							"description": "An individual's surname(s).",
							"type": "string",
							"maxLength": 50,
							"minLength": 0
						},
						"title": {
							"title": "Title",
							"description": "An individual's title (Mr, Mrs, Miss, etc.).",
							"type": "string",
							"maxLength": 16,
							"minLength": 0
						},
						"firstName": {
							"title": "First Name",
							"description": "An individual's first name(s).",
							"type": "string",
							"maxLength": 50,
							"minLength": 0
						},
						"email": {
							"title": "Email Address",
							"description": "An email address which can be used to contact an individual.",
							"type": "string",
							"maxLength": 200,
							"minLength": 0
						},
						"crmReference": {
							"description": "A field which allows a retailer to capture their CRM identifier for a Customer",
							"type": "string",
							"minLength": 0,
							"maxLength": 255
						},
						"phoneNumber": {
							"title": "Phone Number",
							"description": "A phone number which can be used to contact an individual. This may be a landline or mobile number.",
							"default": "0",
							"type": "string",
							"maxLength": 24,
							"minLength": 0
						}
					}
				},
				"legs": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/BookingLeg"
					}
				},
				"passengers": {
					"description": "A list of passengers for this booking",
					"type": "array",
					"maxItems": 99,
					"minItems": 1,
					"items": {
						"$ref": "#/definitions/Passenger"
					}
				},
				"retailersBookingRef": {
					"title": "Retailer's Booking Reference",
					"description": "A field which can be used by a retailer to capture their own identifier for a booking",
					"type": "string",
					"maxLength": 16,
					"minLength": 0
				},
				"uniqueTicketNumber": {
					"title": "Unique Ticket Number",
					"description": "A field which can be used by a retailer to capture a unique ticket number.",
					"type": "string",
					"maxLength": 16,
					"minLength": 0
				}
			}
		},
		"BookingResponse": {
			"type": "object",
			"properties": {
				"data": {
					"$ref": "#/definitions/Booking"
				},
				"notices": {
					"description": "A list of partial error messages for parts of the request that could not be processed.",
					"type": "array",
					"items": {
						"$ref": "#/definitions/Notice"
					}
				}
			}
		},
		"RebookRequest": {
			"type": "object",
			"required": [
				"replaceSeatProductUuids"
			],
			"properties": {
				"legs": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/BookingLeg"
					}
				},
				"replaceSeatProductUuids": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/UniversallyUniqueIdentifier"
					}
				},
				"rebookReason": {
					"description": "Provides details as to why a booking was rebooked.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				}
			}
		},
		"BookingReference": {
			"type": "string",
			"maxLength": 16,
			"minLength": 0
		},
		"SeatUpdate": {
			"type": "object",
			"required": [
				"itemRef"
			],
			"properties": {
				"seatId": {
					"title": "Seat Identifier",
					"description": "A unique identifier for a seat within a coach.",
					"type": "string",
					"minLength": 1,
					"maxLength": 5
				},
				"coachId": {
					"title": "Equipment Unit Id",
					"description": "An identifier for an equipment unit (coach).",
					"type": "string",
					"minLength": 1,
					"maxLength": 5
				},
				"itemRef": {
					"title": "General Identifier",
					"description": "A code used to uniquely identify an item.",
					"type": "integer"
				},
				"strategy": {
					"description": "The strategy chosen for assigning a seat. There are currently two options supported:<BR/> <BR/> <b>- exact <BR/> - close_to</b> <BR/><BR/>The <b>exact</b> strategy is the default strategy which will allocate the requested seat if it is available. If the seat is unavailable, the fallback is the regular seating algorithm <BR/><BR/>The <b>close_to</b> strategy will allocate a seat nearby the indicated seat number and carriage. That seat can be indicated and an available seat close to that seat will be assigned. It will only fall back to auto-allocation (the seating algorithm) in cases where no seat in close proximity of the requested seat can be found.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"preferences": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/SeatPreference"
					}
				}
			}
		},
		"Customer": {
			"type": "object",
			"required": [
				"lastName"
			],
			"properties": {
				"crmReference": {
					"description": "A field which allows a retailer to capture their CRM identifier for a Customer",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"email": {
					"title": "Email Address",
					"description": "An email address which can be used to contact an individual.",
					"type": "string",
					"maxLength": 200,
					"minLength": 0
				},
				"firstName": {
					"title": "First Name",
					"description": "An individual's first name(s).",
					"type": "string",
					"maxLength": 50,
					"minLength": 0
				},
				"initials": {
					"title": "Initials",
					"description": "An individual's initials.",
					"type": "string",
					"maxLength": 16,
					"minLength": 0
				},
				"lastName": {
					"title": "Last Name",
					"description": "An individual's surname(s).",
					"type": "string",
					"maxLength": 50,
					"minLength": 0
				},
				"phoneNumber": {
					"title": "Phone Number",
					"description": "A phone number which can be used to contact an individual. This may be a landline or mobile number.",
					"default": "0",
					"type": "string",
					"maxLength": 24,
					"minLength": 0
				},
				"title": {
					"title": "Title",
					"description": "An individual's title (Mr, Mrs, Miss, etc.).",
					"type": "string",
					"maxLength": 16,
					"minLength": 0
				},
				"updatedRevision": {
					"title": "Updated Revision",
					"description": "Revision number for the Customer record.",
					"type": "integer"
				}
			}
		},
		"PassengerCreate": {
			"type": "object",
			"required": [
				"statusCode"
			],
			"properties": {
				"discountedOrSeasonCode": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/PassengerDiscountedOrSeason"
					}
				},
				"statusCode": {
					"title": "Status Code",
					"description": "The type of passenger, expressed using the standard fare status codes (e.g. 000 = Adult, 001 = Child, etc.).",
					"type": "string",
					"minLength": 3,
					"maxLength": 3
				},
				"disabilityType": {
					"title": "Disability Type Code",
					"description": "Used to identify an individual's accessibility requirements, if applicable.",
					"type": "string",
					"minLength": 1,
					"maxLength": 20
				},
				"title": {
					"title": "Title",
					"description": "An individual's title (Mr, Mrs, Miss, etc.).",
					"type": "string",
					"maxLength": 16,
					"minLength": 0
				},
				"firstName": {
					"title": "First Name",
					"description": "An individual's first name(s).",
					"type": "string",
					"maxLength": 50,
					"minLength": 0
				},
				"lastName": {
					"title": "Last Name",
					"description": "An individual's surname(s).",
					"type": "string",
					"maxLength": 50,
					"minLength": 0
				},
				"email": {
					"title": "Email Address",
					"description": "An email address which can be used to contact an individual.",
					"type": "string",
					"maxLength": 200,
					"minLength": 0
				},
				"phoneNumber": {
					"title": "Phone Number",
					"description": "A phone number which can be used to contact an individual. This may be a landline or mobile number.",
					"type": "string",
					"maxLength": 24,
					"minLength": 0
				},
				"protectPrivacy": {
					"type": "boolean"
				}
			}
		},
		"PassengerUpdate": {
			"type": "object",
			"required": [
				"id"
			],
			"properties": {
				"disabilityType": {
					"title": "Disability Type Code",
					"description": "Used to identify an individual's accessibility requirements, if applicable.",
					"type": "string",
					"minLength": 1,
					"maxLength": 20
				},
				"discountedOrSeasonCode": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/PassengerDiscountedOrSeason"
					}
				},
				"email": {
					"title": "Email Address",
					"description": "An email address which can be used to contact an individual.",
					"type": "string",
					"maxLength": 200,
					"minLength": 0
				},
				"firstName": {
					"title": "First Name",
					"description": "An individual's first name(s).",
					"type": "string",
					"maxLength": 50,
					"minLength": 0
				},
				"id": {
					"title": "Passenger Identifier",
					"description": "Used to uniquely identify a passenger",
					"type": "string",
					"pattern": "^passenger_[1-9][0-9]{0,2}$",
					"minLength": 0,
					"maxLength": 255
				},
				"lastName": {
					"title": "Last Name",
					"description": "An individual's surname(s).",
					"type": "string",
					"maxLength": 50,
					"minLength": 0
				},
				"phoneNumber": {
					"title": "Phone Number",
					"description": "A phone number which can be used to contact an individual. This may be a landline or mobile number.",
					"type": "string",
					"maxLength": 24,
					"minLength": 0
				},
				"protectPrivacy": {
					"type": "boolean"
				},
				"statusCode": {
					"title": "Status Code",
					"description": "The type of passenger, expressed using the standard fare status codes (e.g. 000 = Adult, 001 = Child, etc.).",
					"type": "string",
					"minLength": 3,
					"maxLength": 3
				},
				"title": {
					"title": "Title",
					"description": "An individual's title (Mr, Mrs, Miss, etc.).",
					"type": "string",
					"maxLength": 16,
					"minLength": 0
				}
			}
		},
		"CancelPassengers": {
			"type": "object",
			"required": [
				"cancelPassengers"
			],
			"properties": {
				"cancellationReason": {
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"cancelPassengers": {
					"type": "array",
					"minItems": 1,
					"items": {
						"$ref": "#/definitions/UniversallyUniqueIdentifier"
					}
				}
			}
		},
		"BookingLeg": {
			"type": "object",
			"required": [
				"alightLocation",
				"boardLocation",
				"carrierCode",
				"direction",
				"routeCode",
				"rsid",
				"seatProducts",
				"serviceIdentifier",
				"serviceOriginDate"
			],
			"properties": {
				"alightLocation": {
					"title": "Alight Location",
					"description": "The CRS code of the station at which a passenger alights from a service",
					"type": "string",
					"pattern": "^[0-9A-Z]{3}$",
					"minLength": 3,
					"maxLength": 3
				},
				"boardLocation": {
					"title": "Board Location",
					"description": "The CRS code of the station at which a passenger boards a service",
					"type": "string",
					"pattern": "^[0-9A-Z]{3}$",
					"minLength": 3,
					"maxLength": 3
				},
				"carrierCode": {
					"title": "Carrier Code",
					"description": "The 2-character code identifying the service provider (TOC) from the published timetable data",
					"type": "string",
					"pattern": "^[A-Z]{2}$",
					"maxLength": 2,
					"minLength": 0
				},
				"direction": {
					"title": "Direction",
					"description": "Indicates the direction of travel. For a single journey outbound should be used. For a return journey outbound should be used for the outbound portion and inbound for the return portion.",
					"enum": [
						"INBOUND",
						"OUTBOUND"
					],
					"type": "string",
					"minLength": 7,
					"maxLength": 8
				},
				"journeyConditions": {
					"$ref": "#/definitions/JourneyConditions"
				},
				"routeCode": {
					"title": "Route Code",
					"description": "Route code against which which the availability applies. Defines a product in combination with the ticket type code.",
					"type": "string",
					"minLength": 5,
					"maxLength": 5
				},
				"rsid": {
					"title": "Retail Service Id",
					"description": "The Retail Service ID is used to uniquely identify a service (on a given day). It is comprised of the 2-character Carrier code followed by a 4 digit headcode followed by a 2 digit portion suffix (required for services which split/join on route).",
					"type": "string",
					"pattern": "^[A-Z]{2}[0-9]{6}$",
					"minLength": 8,
					"maxLength": 8
				},
				"seatProducts": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/BookingSeatProduct"
					}
				},
				"serviceIdentifier": {
					"title": "Service Identifier",
					"description": "Unique identifier of a service. Required for making a booking.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"serviceOriginDate": {
					"description": "The date of departure at the origin station. In combination with the RSID used to uniquely identify a service.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255,
					"pattern": "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$"
				}
			}
		},
		"CancelLegs": {
			"type": "object",
			"required": [
				"cancelLegs"
			],
			"properties": {
				"cancellationReason": {
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"cancelLegs": {
					"type": "array",
					"minItems": 1,
					"items": {
						"$ref": "#/definitions/UniversallyUniqueIdentifier"
					}
				}
			}
		},
		"CancelItems": {
			"type": "object",
			"required": [
				"cancelItemRefs"
			],
			"properties": {
				"cancellationReason": {
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"cancelItemRefs": {
					"type": "array",
					"minItems": 1,
					"items": {
						"$ref": "#/definitions/Id"
					}
				}
			}
		},
		"TicketsBySeatResponse": {
			"type": "object",
			"properties": {
				"tickets": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/Tickets"
					}
				}
			}
		},
		"TicketsByTicketReferenceResponse": {
			"type": "object",
			"required": [
				"data"
			],
			"properties": {
				"data": {
					"type": "object",
					"required": [
						"ticketDetails"
					],
					"properties": {
						"ticketDetails": {
							"$ref": "#/definitions/TicketDetails"
						}
					}
				}
			}
		},
		"ValidateBookingRequest": {
			"type": "object",
			"required": [
				"userName",
				"ticketReference",
				"rsid",
				"device",
				"dateTime",
				"location",
				"validationType"
			],
			"properties": {
				"userName": {
					"title": "Validation Username",
					"description": "The identity of the Agent doing the validation",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"ticketReference": {
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"rsid": {
					"title": "RSID",
					"description": "The Retail Service ID is used to uniquely",
					"type": "string",
					"pattern": "^[A-Z]{2}[0-9]{6}$",
					"minLength": 8,
					"maxLength": 8
				},
				"device": {
					"title": "Validation Device",
					"description": "Device with which the validation has taken place",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"dateTime": {
					"title": "Validation DateTime",
					"description": "Timestamp of when the validation took place in the format yyyy-MM-dd'T'HH:mm:ss'Z'",
					"type": "string",
					"pattern": "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]Z$",
					"minLength": 0,
					"maxLength": 255
				},
				"location": {
					"title": "Location",
					"description": "Station / location where validation took place",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"validationType": {
					"title": "ValidationType",
					"description": "The type of validation",
					"enum": [
						"FULL",
						"LIGHT",
						"PASSAGE",
						"ISSUE",
						"NOSHOW",
						"BOARDING",
						"DISEMBARKMENT",
						"RELEASE_REQUESTED",
						"RELEASE_CONFIRMED",
						"SEAT_RELEASED"
					],
					"type": "string",
					"minLength": 4,
					"maxLength": 17
				},
				"additionalDetails": {
					"description": "Additional details required for TOC",
					"type": "array",
					"items": {
						"$ref": "#/definitions/AdditionalDetails"
					}
				}
			}
		},
		"RevertValidationBookingRequest": {
			"type": "object",
			"required": [
				"rsid",
				"ticketReference",
				"validationTypes"
			],
			"properties": {
				"rsid": {
					"title": "RSID",
					"description": "The Retail Service ID is used to uniquely",
					"type": "string",
					"pattern": "^[A-Z]{2}[0-9]{6}$",
					"minLength": 8,
					"maxLength": 8
				},
				"ticketReference": {
					"type": "string",
					"minLength": 1,
					"maxLength": 255
				},
				"validationTypes": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/RevertValidationType"
					}
				}
			}
		},
		"OneStopBookingRequest": {
			"type": "object",
			"required": [
				"customer",
				"legs",
				"passengers"
			],
			"properties": {
				"customer": {
					"description": "Person who purchases the booking. Sometimes known as a Lead Passenger for a group booking, although they are not necesarily one of the passengers",
					"type": "object",
					"required": [
						"lastName"
					],
					"properties": {
						"updatedRevision": {
							"title": "Updated Revision",
							"description": "Revision number for the Customer record.",
							"type": "integer"
						},
						"initials": {
							"title": "Initials",
							"description": "An individual's initials.",
							"type": "string",
							"maxLength": 16,
							"minLength": 0
						},
						"lastName": {
							"title": "Last Name",
							"description": "An individual's surname(s).",
							"type": "string",
							"maxLength": 50,
							"minLength": 0
						},
						"title": {
							"title": "Title",
							"description": "An individual's title (Mr, Mrs, Miss, etc.).",
							"type": "string",
							"maxLength": 16,
							"minLength": 0
						},
						"firstName": {
							"title": "First Name",
							"description": "An individual's first name(s).",
							"type": "string",
							"maxLength": 50,
							"minLength": 0
						},
						"email": {
							"title": "Email Address",
							"description": "An email address which can be used to contact an individual.",
							"type": "string",
							"maxLength": 200,
							"minLength": 0
						},
						"crmReference": {
							"description": "A field which allows a retailer to capture their CRM identifier for a Customer",
							"type": "string",
							"minLength": 0,
							"maxLength": 255
						},
						"phoneNumber": {
							"title": "Phone Number",
							"description": "A phone number which can be used to contact an individual. This may be a landline or mobile number.",
							"default": "0",
							"type": "string",
							"maxLength": 24,
							"minLength": 0
						}
					}
				},
				"legs": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/OneStopBookingLeg"
					}
				},
				"passengers": {
					"description": "A list of passengers for this booking",
					"type": "array",
					"maxItems": 99,
					"minItems": 1,
					"items": {
						"$ref": "#/definitions/Passenger"
					}
				},
				"retailersBookingRef": {
					"title": "Retailer's Booking Reference",
					"description": "A field which can be used by a retailer to capture their own identifier for a booking",
					"type": "string",
					"maxLength": 16,
					"minLength": 0
				},
				"uniqueTicketNumber": {
					"title": "Unique Ticket Number",
					"description": "A field which can be used by a retailer to capture a unique ticket number.",
					"type": "string",
					"maxLength": 16,
					"minLength": 0
				}
			}
		},
		"LayoutAndSeatStatusV3": {
			"type": "object",
			"description": "Carriage layout and seat information (v3 schema with flattened seatProperties)",
			"properties": {
				"isReversed": {
					"type": "boolean",
					"description": "Indicates whether the train formation is reversed"
				},
				"coaches": {
					"title": "Coaches",
					"description": "Coaches on a service.",
					"type": "array",
					"items": {
						"$ref": "#/definitions/CoachLayout"
					}
				},
				"seatProperties": {
					"type": "array",
					"description": "Seat properties (flattened representation)",
					"items": {
						"type": "object",
						"properties": {
							"code": {
								"type": "string",
								"description": "Seat property code (e.g., AIRL, WCHR)"
							},
							"description": {
								"type": "string",
								"description": "Human-readable seat property description"
							},
							"totalRemainingSeats": {
								"type": "integer",
								"description": "Number of remaining seats for this property"
							}
						}
					}
				},
				"stationsInformation": {
					"title": "Station Information",
					"description": "Indication at which stations between the requested origin and destination a reverse en route takes place.",
					"type": "array",
					"items": {
						"$ref": "#/definitions/StationInformation"
					}
				}
			}
		},
		"LayoutAndSeatStatus": {
			"type": "object",
			"required": [
				"isReversed",
				"coaches"
			],
			"properties": {
				"isReversed": {
					"title": "Is Reversed",
					"description": "Identifies if coach is travelling in the reverse direction compared to the supplied Coach Image Template.",
					"type": "boolean"
				},
				"coaches": {
					"title": "Coaches",
					"description": "Coaches on a service.",
					"type": "array",
					"items": {
						"$ref": "#/definitions/CoachLayout"
					}
				},
				"seatProperties": {
					"title": "Seat Properties",
					"description": "Seat Properties available on a service.",
					"type": "array",
					"items": {
						"$ref": "#/definitions/SeatProperty"
					}
				},
				"stationsInformation": {
					"title": "Station Information",
					"description": "Indication at which stations between the requested origin and destination a reverse en route takes place.",
					"type": "array",
					"items": {
						"$ref": "#/definitions/StationInformation"
					}
				}
			}
		},
		"OldLayoutAndSeatStatus": {
			"type": "object",
			"required": [
				"isReversed",
				"coaches"
			],
			"properties": {
				"isReversed": {
					"title": "Is Reversed",
					"description": "Identifies if coach is travelling in the reverse direction compared to the supplied Coach Image Template.",
					"type": "boolean"
				},
				"coaches": {
					"title": "Coaches",
					"description": "Coaches on a service.",
					"type": "array",
					"items": {
						"$ref": "#/definitions/CoachLayout"
					}
				},
				"seatProperties": {
					"title": "Seat Properties",
					"description": "Seat Properties available on a service.",
					"type": "array",
					"items": {
						"$ref": "#/definitions/OldSeatProperty"
					}
				},
				"stationsInformation": {
					"title": "Station Information",
					"description": "Indication at which stations between the requested origin and destination a reverse en route takes place.",
					"type": "array",
					"items": {
						"$ref": "#/definitions/StationInformation"
					}
				}
			}
		},
		"ServiceCoachImages": {
			"type": "object",
			"properties": {
				"coachImages": {
					"title": "Coach Images",
					"description": "A list of coaches and their respective Coach Image Templates.",
					"type": "array",
					"items": {
						"$ref": "#/definitions/CoachImage"
					}
				}
			}
		},
		"Passengers": {
			"type": "object",
			"required": [
				"reportDateAndTime"
			],
			"properties": {
				"reportDateAndTime": {
					"title": "Report Date And Time",
					"description": "Timestamp at when report is generated.",
					"type": "string",
					"format": "date-time",
					"minLength": 0,
					"maxLength": 255
				},
				"serviceDetails": {
					"title": "Service Details",
					"description": "Information related to the service.",
					"type": "object",
					"properties": {
						"reservationStatus": {
							"title": "Reservation Status",
							"description": "Reservation status of a ticket",
							"enum": [
								"Open",
								"Provisional"
							],
							"type": "string",
							"minLength": 4,
							"maxLength": 11
						},
						"serviceDestinationLocationName": {
							"title": "Service Destination Location Name",
							"description": "Name of the Service Destination Station",
							"type": "string",
							"minLength": 0,
							"maxLength": 255
						},
						"boardingTime": {
							"title": "Departure Time",
							"description": "Service Departure Time",
							"type": "string",
							"minLength": 0,
							"maxLength": 255,
							"pattern": "^(?:[01]\\d|2[0123]):(?:[012345]\\d):(?:[012345]\\d)$"
						},
						"serviceDestinationLocation": {
							"title": "Service Destination Location",
							"description": "A compact code of the Service Destination Station",
							"type": "string",
							"pattern": "^[0-9A-Z]{3}$",
							"minLength": 3,
							"maxLength": 3
						},
						"rsid": {
							"title": "RSID",
							"description": "The Retail Service ID is used to uniquely identify a service (on a given day)",
							"type": "string",
							"pattern": "^[A-Z]{2}[0-9]{6}$",
							"minLength": 8,
							"maxLength": 8
						},
						"serviceOriginLocationName": {
							"title": "Service Origin Location Name",
							"description": "Name of the Service Origin Station",
							"type": "string",
							"minLength": 0,
							"maxLength": 255
						},
						"serviceOriginLocation": {
							"title": "Service Origin Location",
							"description": "A compact code of the Service Origin Station",
							"type": "string",
							"pattern": "^[0-9A-Z]{3}$",
							"minLength": 3,
							"maxLength": 3
						},
						"serviceOriginDate": {
							"title": "Service Origin Date",
							"description": "Date when the Service originates at the station",
							"type": "string",
							"minLength": 0,
							"maxLength": 255,
							"pattern": "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$"
						}
					}
				},
				"tickets": {
					"title": "Tickets",
					"description": "Ticket information.",
					"type": "array",
					"items": {
						"$ref": "#/definitions/ReportTicketsDetails"
					}
				}
			}
		},
		"DiscountedOrSeasonCodesResponse": {
			"type": "object",
			"properties": {
				"discountedOrSeasonCodes": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/DiscountedOrSeason"
					}
				}
			}
		},
		"SeatPropertiesResponse": {
			"type": "object",
			"properties": {
				"CarrierSeatProperties": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/CarrierSeatProperties"
					}
				}
			}
		},
		"AvailabilitySearch": {
			"type": "object",
			"required": [
				"salesFlowType",
				"passengers",
				"journeys"
			],
			"properties": {
				"salesFlowType": {
					"description": "Define the type of sales flow. Currently one of: \n<b>SALES</b>; should be used for availability checks prior to a ticket sale (i.e. the 'normal' flow)\n<b>AFTER_SALES</b>; availability check if required for an after sales actions.\n",
					"default": "SALES",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"passengers": {
					"type": "array",
					"minItems": 1,
					"items": {
						"$ref": "#/definitions/PassengerAvailabilitySearch"
					}
				},
				"journeys": {
					"type": "array",
					"minItems": 1,
					"items": {
						"$ref": "#/definitions/JourneyAvailabilitySearch"
					}
				}
			}
		},
		"AvailabilitySearchResponse": {
			"type": "object",
			"properties": {
				"salesFlowType": {
					"description": "Define the type of sales flow. Currently one of: \n<b>SALES</b>; should be used for availability checks prior to a ticket sale (i.e. the 'normal' flow)\n<b>AFTER_SALES</b>; availability check if required for an after sales actions.\n",
					"default": "SALES",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"passengers": {
					"type": "array",
					"minItems": 0,
					"items": {
						"$ref": "#/definitions/PassengerAvailabilitySearch"
					}
				},
				"journeys": {
					"type": "array",
					"minItems": 0,
					"items": {
						"$ref": "#/definitions/JourneyAvailability"
					}
				},
				"notices": {
					"description": "A list of partial error for parts of the request that could not be processed.",
					"type": "array",
					"items": {
						"$ref": "#/definitions/Notice"
					}
				}
			}
		},
		"Passenger": {
			"type": "object",
			"required": [
				"id",
				"statusCode"
			],
			"properties": {
				"createdRevision": {
					"title": "Created Revision",
					"description": "",
					"type": "integer"
				},
				"disabilityType": {
					"title": "Disability Type Code",
					"description": "Used to identify an individual's accessibility requirements, if applicable.",
					"type": "string",
					"minLength": 1,
					"maxLength": 20
				},
				"discountedOrSeasonCode": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/PassengerDiscountedOrSeason"
					}
				},
				"email": {
					"title": "Email Address",
					"description": "An email address which can be used to contact an individual.",
					"type": "string",
					"maxLength": 200,
					"minLength": 0
				},
				"firstName": {
					"title": "First Name",
					"description": "An individual's first name(s).",
					"type": "string",
					"maxLength": 50,
					"minLength": 0
				},
				"id": {
					"title": "Passenger Identifier",
					"description": "A unique ID for a passenger within a booking",
					"type": "string",
					"pattern": "^passenger_[1-9][0-9]{0,2}$",
					"minLength": 0,
					"maxLength": 255
				},
				"lastName": {
					"title": "Last Name",
					"description": "An individual's surname(s).",
					"type": "string",
					"maxLength": 50,
					"minLength": 0
				},
				"phoneNumber": {
					"title": "Phone Number",
					"description": "A phone number which can be used to contact an individual. This may be a landline or mobile number.",
					"type": "string",
					"maxLength": 24,
					"minLength": 0
				},
				"protectPrivacy": {
					"title": "Protect Privacy",
					"description": "Used as an indicator to choose whether to protect passenger information.",
					"type": "boolean"
				},
				"statusCode": {
					"title": "Status Code",
					"description": "The type of passenger, expressed using the standard fare status codes (e.g. 000 = Adult, 001 = Child, etc.).",
					"type": "string",
					"minLength": 3,
					"maxLength": 3
				},
				"title": {
					"title": "Title",
					"description": "An individual's title (Mr, Mrs, Miss, etc.).",
					"type": "string",
					"maxLength": 16,
					"minLength": 0
				},
				"updatedRevision": {
					"title": "Updated Revision",
					"description": "Revision number for the Passenger record.",
					"type": "integer"
				},
				"uuid": {
					"title": "Universally Unique Identifier (UUID)",
					"description": "A code used to uniquely identify an item.",
					"type": "string",
					"maxLength": 50,
					"minLength": 0
				}
			}
		},
		"Booking": {
			"type": "object",
			"required": [
				"bookingRef",
				"passengers",
				"salesChannelCode"
			],
			"properties": {
				"agent": {
					"$ref": "#/definitions/BookingAgent"
				},
				"bookingRef": {
					"title": "Booking Reference",
					"description": "A unique identifier for a booking.",
					"type": "string",
					"maxLength": 16,
					"minLength": 0
				},
				"canBeUpgraded": {
					"title": "Can Be Upgraded",
					"description": "Indicates whether the booking can be upgraded",
					"type": "boolean"
				},
				"cancelledOn": {
					"title": "Cancelled On",
					"description": "Date and time this booking was cancelled",
					"type": "string",
					"format": "date-time",
					"minLength": 0,
					"maxLength": 255
				},
				"changeExpiryOn": {
					"title": "Change Expires On",
					"description": "Date and Time a change expires on",
					"type": "string",
					"format": "date-time",
					"minLength": 0,
					"maxLength": 255
				},
				"confirmedOn": {
					"title": "Confirmed On",
					"description": "Date and time this booking was confirmed",
					"type": "string",
					"format": "date-time",
					"minLength": 0,
					"maxLength": 255
				},
				"createdOn": {
					"title": "Created On",
					"description": "Date and time this booking was created",
					"type": "string",
					"format": "date-time",
					"minLength": 0,
					"maxLength": 255
				},
				"recordStructureVersion": {
					"title": "Record Structure Version",
					"description": "Additional details required for Booking",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"customer": {
					"$ref": "#/definitions/Customer"
				},
				"outboundBookingTariffLegs": {
					"title": "Outbound Booking Leg(s) Details",
					"type": "array",
					"items": {
						"$ref": "#/definitions/BookingLegTariff"
					}
				},
				"inboundBookingTariffLegs": {
					"title": "Inbound Booking Leg(s) Details",
					"type": "array",
					"items": {
						"$ref": "#/definitions/BookingLegTariff"
					}
				},
				"lastAfterSalesOperation": {
					"title": "Last After Sales Operation",
					"description": "The following options are defined - others may be added over time: <br> - AFTERSALES_CANCEL <br> - AFTERSALES_MODIFY <br> - AFTERSALES_NAMECHANGE <br> - AFTERSALES_REBOOK <br> - AFTERSALES_SEATCHANGE",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"notes": {
					"title": "Notes",
					"type": "array",
					"items": {
						"$ref": "#/definitions/BookingNote"
					}
				},
				"passengers": {
					"title": "Passengers",
					"type": "array",
					"items": {
						"$ref": "#/definitions/Passenger"
					}
				},
				"provisionalExpiredOn": {
					"title": "Provisional Booking Expires On",
					"description": "Date and time this booking expired (applicable to provisional bookings)",
					"type": "string",
					"format": "date-time",
					"minLength": 0,
					"maxLength": 255
				},
				"retailersBookingRef": {
					"title": "Retailer's Booking reference",
					"description": "A unique identifier for a booking.",
					"type": "string",
					"maxLength": 16,
					"minLength": 0
				},
				"revisionNumber": {
					"title": "Revision Number",
					"description": "Current revision number of the booking.",
					"type": "integer"
				},
				"salesChannelCode": {
					"description": "TBD if included",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"uniqueTicketNumber": {
					"title": "Unique Ticket Number",
					"description": "A unique identifier for a booking.",
					"type": "string",
					"maxLength": 16,
					"minLength": 0
				},
				"updatedOn": {
					"title": "Updated On",
					"description": "Date and time this booking was last updated",
					"type": "string",
					"format": "date-time",
					"minLength": 0,
					"maxLength": 255
				}
			}
		},
		"Notice": {
			"title": "Notice",
			"description": "Information notice from the booking service.",
			"type": "object",
			"required": [
				"notice"
			],
			"properties": {
				"notice": {
					"title": "Notice",
					"description": "Information notice from the booking service.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"message": {
					"title": "Message",
					"description": "Additional information about the notice.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"context": {
					"title": "Context",
					"description": "Additional context in relation to the notice.",
					"type": "object",
					"patternProperties": {
						"[a-zA-Z0-9_]*": {
							"type": "string"
						}
					}
				}
			}
		},
		"UniversallyUniqueIdentifier": {
			"title": "Universally Unique Identifier (UUID)",
			"description": "A code used to uniquely identify an item.",
			"type": "string",
			"maxLength": 50,
			"minLength": 0
		},
		"Id": {
			"title": "General Identifier",
			"description": "A code used to uniquely identify an item.",
			"type": "integer"
		},
		"SeatPreference": {
			"type": "object",
			"required": [
				"code",
				"preference"
			],
			"properties": {
				"code": {
					"title": "Seat Property Code",
					"description": "Codes used to identify attributes of a seat or berth.",
					"type": "string",
					"minLength": 1,
					"maxLength": 20
				},
				"preference": {
					"enum": [
						"REQUIRED",
						"PREFERRED"
					],
					"type": "string",
					"minLength": 8,
					"maxLength": 9
				}
			}
		},
		"PassengerDiscountedOrSeason": {
			"description": "Used to identify whether a seat is being booked with a season ticket or with a discounted ticket",
			"type": "object",
			"required": [
				"code",
				"id",
				"name"
			],
			"properties": {
				"code": {
					"title": "Discounted or Season Ticket Code",
					"description": "A code used to identify a disounted ticket or season ticket. Supported codes are available as reference data.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"id": {
					"title": "Discounted or Season Ticket Identifier",
					"description": "Unique identifier used to relate a DiscountOrSeason record to a booking item.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"name": {
					"title": "Discounted or Season Ticket Name",
					"description": "The name of a disounted ticket or season ticket. Supported names are available as reference data.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				}
			}
		},
		"JourneyConditions": {
			"title": "Journey Conditions",
			"description": "Provides overall journey information.",
			"type": "object",
			"required": [
				"journeyOD"
			],
			"properties": {
				"journeyOD": {
					"$ref": "#/definitions/JourneyOD"
				}
			}
		},
		"BookingSeatProduct": {
			"type": "object",
			"required": [
				"passengerId",
				"tariffCode"
			],
			"properties": {
				"passengerId": {
					"title": "Passenger Identifier",
					"description": "Unique ID for a passenger",
					"type": "string",
					"pattern": "^passenger_[1-9][0-9]{0,2}$",
					"minLength": 0,
					"maxLength": 255
				},
				"seat": {
					"$ref": "#/definitions/BookingSeat"
				},
				"seatPreferences": {
					"description": "Allows retailers to specify 1 or more seat properties",
					"type": "array",
					"items": {
						"$ref": "#/definitions/SeatPropertyCode"
					}
				},
				"tariffCode": {
					"title": "Tariff Code",
					"description": "Tariff code associated to a product. Required for making a booking.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				}
			}
		},
		"Tickets": {
			"type": "object",
			"properties": {
				"bookingReference": {
					"title": "Booking Reference",
					"description": "A unique identifier for a booking.",
					"type": "string",
					"maxLength": 16,
					"minLength": 0
				},
				"ticketReference": {
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"ticketTypeCode": {
					"title": "Ticket Type Code",
					"description": "The product code of the purchased ticket item.",
					"type": "string",
					"minLength": 3,
					"maxLength": 5
				},
				"productType": {
					"description": "The product type of the purchased ticket item.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				}
			}
		},
		"TicketDetails": {
			"type": "object",
			"properties": {
				"bookingReference": {
					"title": "Booking Reference",
					"description": "A unique identifier for a booking.",
					"type": "string",
					"maxLength": 16,
					"minLength": 0
				},
				"ticketReference": {
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"boardLocation": {
					"title": "Board Location",
					"description": "A three character code used to unique identify a location. CRS codes act as a map between TIPLOCs used in timetables and NLCs used in fares and are made known to the public as a handy shortcut for finding a location.",
					"type": "string",
					"pattern": "^[0-9A-Z]{3}$",
					"minLength": 3,
					"maxLength": 3
				},
				"boardLocationName": {
					"title": "board Location Name",
					"description": "Full name of the boarding station Name.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"alightLocation": {
					"title": "Alight Location",
					"description": "A three character code used to unique identify a location. CRS codes act as a map between TIPLOCs used in timetables and NLCs used in fares and are made known to the public as a handy shortcut for finding a location.",
					"type": "string",
					"pattern": "^[0-9A-Z]{3}$",
					"minLength": 3,
					"maxLength": 3
				},
				"alightLocationName": {
					"title": "Alight Location Name",
					"description": "Full name of the Alight station Name.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"coachId": {
					"title": "Equipment Unit Id",
					"description": "An identifier for an equipment unit (coach).",
					"type": "string",
					"minLength": 1,
					"maxLength": 5
				},
				"seatId": {
					"title": "Seat Identifier",
					"description": "A unique identifier for a seat within a coach.",
					"type": "string",
					"minLength": 1,
					"maxLength": 5
				},
				"validated": {
					"title": "Validated",
					"description": "true, when the ticket has a FULL validation and VOID is not used, false otherwise",
					"type": "boolean"
				},
				"createdOn": {
					"type": "string",
					"format": "date-time",
					"minLength": 0,
					"maxLength": 255
				},
				"confirmedOn": {
					"type": "string",
					"format": "date-time",
					"minLength": 0,
					"maxLength": 255
				},
				"validations": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/Validations"
					}
				}
			}
		},
		"AdditionalDetails": {
			"title": "Additional Details",
			"description": "additional details to be stored.",
			"type": "object",
			"properties": {
				"key": {
					"title": "Key",
					"description": "key for the additional details to be stored",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"value": {
					"title": "Value",
					"description": "value for the additional details to be stored",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				}
			}
		},
		"RevertValidationType": {
			"title": "RevertValidationType",
			"description": "The type of validation allowed to revert",
			"enum": [
				"ALL",
				"FULL",
				"LIGHT",
				"PASSAGE",
				"ISSUE",
				"NOSHOW",
				"RELEASE_REQUESTED"
			],
			"type": "string",
			"minLength": 3,
			"maxLength": 17
		},
		"OneStopBookingLeg": {
			"type": "object",
			"required": [
				"alightLocation",
				"boardLocation",
				"carrierCode",
				"direction",
				"journeyConditions",
				"routeCode",
				"rsid",
				"seatProducts",
				"serviceOriginDate"
			],
			"properties": {
				"alightLocation": {
					"title": "Alight Location",
					"description": "The CRS code of the station at which a passenger alights from a service",
					"type": "string",
					"pattern": "^[0-9A-Z]{3}$",
					"minLength": 3,
					"maxLength": 3
				},
				"boardLocation": {
					"title": "Board Location",
					"description": "The CRS code of the station at which a passenger boards a service",
					"type": "string",
					"pattern": "^[0-9A-Z]{3}$",
					"minLength": 3,
					"maxLength": 3
				},
				"carrierCode": {
					"title": "Carrier Code",
					"description": "The 2-character code identifying the service provider (TOC) from the published timetable data",
					"type": "string",
					"pattern": "^[A-Z]{2}$",
					"maxLength": 2,
					"minLength": 0
				},
				"direction": {
					"title": "Direction",
					"description": "Indicates the direction of travel. For a single journey outbound should be used. For a return journey outbound should be used for the outbound portion and inbound for the return portion.",
					"enum": [
						"INBOUND",
						"OUTBOUND"
					],
					"type": "string",
					"minLength": 7,
					"maxLength": 8
				},
				"journeyConditions": {
					"$ref": "#/definitions/JourneyConditions"
				},
				"routeCode": {
					"title": "Route Code",
					"description": "Route code against which which the availability applies. Defines a product in combination with the ticket type code.",
					"type": "string",
					"minLength": 5,
					"maxLength": 5
				},
				"rsid": {
					"title": "Retail Service Id",
					"description": "The Retail Service ID is used to uniquely identify a service (on a given day). It is comprised of the 2-character Carrier code followed by a 4 digit headcode followed by a 2 digit portion suffix (required for services which split/join on route).",
					"type": "string",
					"pattern": "^[A-Z]{2}[0-9]{6}$",
					"minLength": 8,
					"maxLength": 8
				},
				"seatProducts": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/OneStopBookingSeatProduct"
					}
				},
				"serviceOriginDate": {
					"description": "The date of departure at the origin station. In combination with the RSID used to uniquely identify a service.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255,
					"pattern": "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$"
				}
			}
		},
		"CoachLayout": {
			"title": "Coach Layout",
			"type": "object",
			"required": [
				"id",
				"name",
				"sequenceNumber",
				"seatHeight",
				"seatWidth",
				"floorplanDimensions",
				"canSelectSeatManually",
				"canAutoAllocateSeat",
				"isReversed",
				"isBlocked",
				"seats"
			],
			"properties": {
				"id": {
					"title": "Coach identifier",
					"description": "Identifier of a coach on a service.",
					"type": "string",
					"minLength": 1,
					"maxLength": 5
				},
				"name": {
					"title": "Coach Name",
					"description": "Name of a coach on a service. This may be expressed using a TOC specific structure to support train service electronic displays.",
					"type": "string",
					"minLength": 1,
					"maxLength": 50
				},
				"sequenceNumber": {
					"title": "Sequence Number of coach",
					"description": "Where a coach appears in relation to other coaches in the makeup of a service.",
					"type": "integer"
				},
				"imageTemplate": {
					"title": "Coach Image Template",
					"description": "Location from where a coach image can be retrieved.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"seatHeight": {
					"title": "Seat Height",
					"description": "Height in pixels of a seat within a Coach Image Template.",
					"type": "integer"
				},
				"seatWidth": {
					"title": "Seat Width",
					"description": "Width in pixels of a seat within a Coach Image Template.",
					"type": "integer"
				},
				"floorplanDimensions": {
					"title": "Floorplan Dimensions",
					"description": "Dimentions of a coach.",
					"type": "object",
					"required": [
						"width",
						"height"
					],
					"properties": {
						"width": {
							"title": "Width",
							"description": "Width in pixels of the coach floorplan image.",
							"type": "integer"
						},
						"height": {
							"title": "Height",
							"description": "Height in pixels of the coach floorplan image.",
							"type": "integer"
						}
					}
				},
				"canSelectSeatManually": {
					"title": "Manual Seat Selection",
					"description": "Identifies if its possible to select a seat manually. If false then seats can only be allocated by the service.",
					"type": "boolean"
				},
				"canAutoAllocateSeat": {
					"title": "Automatic Allocation of Seats",
					"description": "Identifies if its possible for seats to be allocated automatically. If false then seats can only be allocated manually.",
					"type": "boolean"
				},
				"isReversed": {
					"title": "Is Reversed",
					"description": "Identifies if coach is travelling in the reverse direction compared to the supplied Coach Image Template.",
					"type": "boolean"
				},
				"isBlocked": {
					"title": "Is Blocked",
					"description": "Identifies that seats on a coach can't be booked. Overrides individual seat values.",
					"type": "boolean"
				},
				"blockedReason": {
					"title": "Blocked Reason",
					"description": "Reason why seats on a coach cannot be booked.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"seats": {
					"title": "Seats",
					"description": "Seats within a coach.",
					"type": "array",
					"minItems": 1,
					"items": {
						"$ref": "#/definitions/Seat"
					}
				},
				"coachType": {
					"title": "Coach Type",
					"description": "Type of a coach on a service.",
					"type": "string",
					"minLength": 1,
					"maxLength": 50
				}
			}
		},
		"SeatProperty": {
			"title": "Seat Property",
			"type": "object",
			"required": [
				"code",
				"description",
				"totalRemainingSeats"
			],
			"properties": {
				"code": {
					"title": "Seat Property Code",
					"description": "Code representing a seat property",
					"type": "string",
					"minLength": 1,
					"maxLength": 20
				},
				"description": {
					"title": "Seat Property Description",
					"description": "Description of a seat property",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"totalRemainingSeats": {
					"title": "Total number of Remaining Seats",
					"description": "The total number of seats remaining",
					"type": "integer"
				}
			}
		},
		"OldSeatProperty": {
			"title": "Seat Property",
			"type": "object",
			"required": [
				"code"
			],
			"properties": {
				"code": {
					"description": "",
					"type": "object",
					"properties": {
						"seatPropertyCode": {
							"title": "Seat Property Code",
							"description": "Code representing a seat property",
							"type": "string",
							"minLength": 1,
							"maxLength": 20
						},
						"description": {
							"title": "Seat Property Description",
							"description": "Description of a seat property",
							"type": "string",
							"minLength": 0,
							"maxLength": 255
						},
						"totalRemainingSeats": {
							"title": "Total number of Remaining Seats",
							"description": "The total number of seats remaining",
							"type": "integer"
						}
					}
				}
			}
		},
		"StationInformation": {
			"title": "Station Information",
			"description": "A station where a reverse en route takes place.",
			"type": "object",
			"required": [
				"infoType",
				"sequenceNumber",
				"station"
			],
			"properties": {
				"infoType": {
					"title": "Info Type",
					"description": "",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"sequenceNumber": {
					"title": "Sequence Number",
					"description": "Sequence number of the station in relation to other stations.",
					"type": "integer"
				},
				"station": {
					"title": "Station",
					"description": "The station where a reverse en route occurs.",
					"type": "string",
					"pattern": "^[0-9A-Z]{3}$",
					"minLength": 3,
					"maxLength": 3
				}
			}
		},
		"CoachImage": {
			"type": "object",
			"required": [
				"id",
				"name",
				"sequenceNumber"
			],
			"properties": {
				"id": {
					"title": "Coach identifier",
					"description": "Identifier of a coach on a service.",
					"type": "string",
					"minLength": 1,
					"maxLength": 5
				},
				"name": {
					"title": "Coach Name",
					"description": "Name of a coach on a service. This may be expressed using a TOC specific structure to support train service electronic displays.",
					"type": "string",
					"minLength": 1,
					"maxLength": 50
				},
				"sequenceNumber": {
					"title": "Sequence Number of coach",
					"description": "Where a coach appears in relation to other coaches in the makeup of a service.",
					"type": "integer"
				},
				"imageTemplate": {
					"title": "Coach Image Template",
					"description": "Location from where a coach image can be retrieved.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				}
			}
		},
		"DisabilityType": {
			"title": "Disability Type",
			"description": "Disability Type object, mapping the disability type code to a customer friendly description.",
			"type": "object",
			"required": [
				"code",
				"description"
			],
			"properties": {
				"code": {
					"title": "Disability Type Code",
					"description": "Used to identify an individual's accessibility requirements, if applicable.",
					"type": "string",
					"minLength": 1,
					"maxLength": 20
				},
				"description": {
					"description": "A customer friendly description of what requirements the disability code covers.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				}
			}
		},
		"DiscountedOrSeason": {
			"type": "object",
			"required": [
				"code",
				"name"
			],
			"properties": {
				"code": {
					"title": "Discounted or Season Ticket Code",
					"description": "A code used to identify a disounted ticket or season ticket. Supported codes are available as reference data.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"name": {
					"title": "Discounted or Season Ticket Name",
					"description": "The name of a disounted ticket or season ticket. Supported names are available as reference data.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				}
			}
		},
		"CarrierSeatProperties": {
			"title": "Carrier Seat Properties",
			"description": "A list of seat properties available for a carrier (train operator) during the specified period",
			"type": "object",
			"required": [
				"carrierCode",
				"validFrom",
				"validUntil"
			],
			"properties": {
				"carrierCode": {
					"title": "Carrier Code",
					"description": "The 2-character code identifying the service provider (TOC) from the published timetable data",
					"type": "string",
					"pattern": "^[A-Z]{2}$",
					"maxLength": 2,
					"minLength": 0
				},
				"validFrom": {
					"title": "Valid from",
					"description": "Date this list of seat properties are valid from",
					"type": "string",
					"minLength": 0,
					"maxLength": 255,
					"pattern": "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$"
				},
				"validUntil": {
					"title": "Valid until",
					"description": "Date this list of seat properties are valid until",
					"type": "string",
					"minLength": 0,
					"maxLength": 255,
					"pattern": "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$"
				},
				"seatProperties": {
					"title": "Seat Properties",
					"description": "A list of available seat properties for this carrier",
					"type": "array",
					"items": {
						"$ref": "#/definitions/SeatPropertyDescription"
					}
				}
			}
		},
		"PassengerAvailabilitySearch": {
			"type": "object",
			"required": [
				"id",
				"statusCode"
			],
			"properties": {
				"id": {
					"title": "Passenger Identifier",
					"description": "Unique identifier for a passenger",
					"type": "string",
					"pattern": "^passenger_[1-9][0-9]{0,2}$",
					"minLength": 0,
					"maxLength": 255
				},
				"statusCode": {
					"title": "Status Code",
					"description": "The type of passenger, expressed using the standard fare status codes (e.g. 000 = Adult, 001 = Child, etc.).",
					"type": "string",
					"minLength": 3,
					"maxLength": 3
				},
				"disabilityType": {
					"title": "Disability Type Code",
					"description": "Used to identify an individual's accessibility requirements, if applicable.",
					"type": "string",
					"minLength": 1,
					"maxLength": 20
				},
				"discountedOrSeasonCode": {
					"title": "Discounted or Season Ticket Code",
					"description": "A code used to identify a disounted ticket or season ticket. Supported codes are available as reference data.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				}
			}
		},
		"JourneyAvailabilitySearch": {
			"type": "object",
			"required": [
				"id",
				"direction",
				"journeyConditions",
				"legs",
				"bundles"
			],
			"properties": {
				"id": {
					"description": "Unique identifier for this journey",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"direction": {
					"title": "Direction",
					"description": "Indicates the direction of travel. For a single journey outbound should be used. For a return journey outbound should be used for the outbound portion and inbound for the return portion.",
					"enum": [
						"INBOUND",
						"OUTBOUND"
					],
					"type": "string",
					"minLength": 7,
					"maxLength": 8
				},
				"journeyConditions": {
					"$ref": "#/definitions/JourneyConditions"
				},
				"legs": {
					"type": "array",
					"minItems": 1,
					"items": {
						"$ref": "#/definitions/LegAvailabilitySearch"
					}
				},
				"bundles": {
					"description": "Products to check availability for, Possible offer for which an availability is looked for",
					"type": "array",
					"minItems": 1,
					"items": {
						"$ref": "#/definitions/BundleAvailabilitySearch"
					}
				}
			}
		},
		"JourneyAvailability": {
			"type": "object",
			"properties": {
				"id": {
					"description": "Unique identifier for this journey",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"direction": {
					"title": "Direction",
					"description": "Indicates the direction of travel. For a single journey outbound should be used. For a return journey outbound should be used for the outbound portion and inbound for the return portion.",
					"enum": [
						"INBOUND",
						"OUTBOUND"
					],
					"type": "string",
					"minLength": 7,
					"maxLength": 8
				},
				"journeyConditions": {
					"$ref": "#/definitions/JourneyConditions"
				},
				"legs": {
					"type": "array",
					"minItems": 0,
					"items": {
						"$ref": "#/definitions/LegAvailability"
					}
				},
				"bundles": {
					"description": "Information about availability of products",
					"type": "array",
					"minItems": 0,
					"items": {
						"$ref": "#/definitions/BundleAvailability"
					}
				}
			}
		},
		"BookingAgent": {
			"title": "Booking Agent",
			"description": "Agent making the booking.",
			"type": "object",
			"properties": {
				"contractCode": {
					"title": "Agent Contract Code",
					"description": "Contract code of an agent",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"office": {
					"title": "Agent Office Code",
					"description": "The office code for an agent",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"organisation": {
					"title": "Agent Organisation",
					"description": "The Organisation of an Agent",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"username": {
					"title": "Username",
					"description": "An identifier used to represent a user.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				}
			}
		},
		"BookingLegTariff": {
			"type": "object",
			"required": [
				"serviceOriginDate",
				"routeCode",
				"serviceIdentifier"
			],
			"properties": {
				"additionalProducts": {
					"title": "Additional Products",
					"type": "array",
					"items": {
						"$ref": "#/definitions/BookingLegSeatProduct"
					}
				},
				"alightLocation": {
					"title": "Alight Location",
					"description": "The CRS code of the station at which a passenger alights from a service",
					"type": "string",
					"pattern": "^[0-9A-Z]{3}$",
					"minLength": 3,
					"maxLength": 3
				},
				"boardLocation": {
					"title": "Board Location",
					"description": "The CRS code of the station at which a passenger boards a service",
					"type": "string",
					"pattern": "^[0-9A-Z]{3}$",
					"minLength": 3,
					"maxLength": 3
				},
				"classOfTravel": {
					"title": "Class of Travel",
					"description": "Class of travel booked",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"id": {
					"title": "Identifier",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"uuid": {
					"title": "Universally Unique Identifier (UUID)",
					"description": "A code used to uniquely identify an item.",
					"type": "string",
					"maxLength": 50,
					"minLength": 0
				},
				"journeyConditions": {
					"$ref": "#/definitions/JourneyConditions"
				},
				"serviceOriginDate": {
					"title": "Service Origin Date",
					"description": "Departure date from journey origin location",
					"type": "string",
					"minLength": 0,
					"maxLength": 255,
					"pattern": "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$"
				},
				"journeyLeg": {
					"title": "Journey Leg(s)",
					"type": "object",
					"required": [
						"alightLocation",
						"boardLocation",
						"carrierCode",
						"rsid"
					],
					"properties": {
						"alightLocation": {
							"title": "Alight Location",
							"description": "A three character code used to unique identify a location. CRS codes act as a map between TIPLOCs used in timetables and NLCs used in fares and are made known to the public as a handy shortcut for finding a location.",
							"type": "string",
							"pattern": "^[0-9A-Z]{3}$",
							"minLength": 3,
							"maxLength": 3
						},
						"arrivalDateTime": {
							"title": "Arrival Date and Time",
							"type": "string",
							"format": "date-time",
							"minLength": 0,
							"maxLength": 255
						},
						"boardLocation": {
							"title": "Board Location",
							"description": "A three character code used to unique identify a location. CRS codes act as a map between TIPLOCs used in timetables and NLCs used in fares and are made known to the public as a handy shortcut for finding a location.",
							"type": "string",
							"pattern": "^[0-9A-Z]{3}$",
							"minLength": 3,
							"maxLength": 3
						},
						"departureDateTime": {
							"title": "Departure date and Time",
							"type": "string",
							"format": "date-time",
							"minLength": 0,
							"maxLength": 255
						},
						"carrierCode": {
							"title": "Carrier Code",
							"description": "A two character code used to identify train operators in timetable data (aka Train Operating Company (TOC) code).",
							"type": "string",
							"pattern": "^[A-Z]{2}$",
							"maxLength": 2,
							"minLength": 0
						},
						"id": {
							"title": "Identifier",
							"type": "string",
							"minLength": 0,
							"maxLength": 255
						},
						"rsid": {
							"title": "Retail Service Id",
							"description": "The Retail Service ID is used to uniquely identify a service (on a given day). It is comprised of the 2-character Carrier code followed by a 4 digit headcode followed by a 2 digit portion suffix (required for services which split/join on route).",
							"type": "string",
							"pattern": "^[A-Z]{2}[0-9]{6}$",
							"minLength": 8,
							"maxLength": 8
						}
					}
				},
				"requiredProducts": {
					"title": "Required Products",
					"type": "array",
					"items": {
						"$ref": "#/definitions/BookingLegSeatProduct"
					}
				},
				"routeCode": {
					"title": "Route Code",
					"description": "Route code against which which the availability applies. Defines a product in combination with the ticket type code.",
					"type": "string",
					"minLength": 5,
					"maxLength": 5
				},
				"serviceIdentifier": {
					"title": "Service Identifier",
					"description": "Unique identifier of a service. Required for making a booking.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"validityStartDate": {
					"title": "Validity Start Date",
					"type": "string",
					"minLength": 0,
					"maxLength": 255,
					"pattern": "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$"
				},
				"validityEndDate": {
					"title": "Validity End Date",
					"type": "string",
					"minLength": 0,
					"maxLength": 255,
					"pattern": "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$"
				},
				"validityRsid": {
					"title": "Validity RSID",
					"description": "The Retail Service ID is used to uniquely identify a service (on a given day). It is comprised of the 2-character Carrier code followed by a 4 digit headcode followed by a 2 digit portion suffix (required for services which split/join on route).",
					"type": "string",
					"pattern": "^[A-Z]{2}[0-9]{6}$",
					"minLength": 8,
					"maxLength": 8
				}
			}
		},
		"BookingNote": {
			"type": "object",
			"required": [
				"content",
				"createdBy",
				"createdOn"
			],
			"properties": {
				"content": {
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"createdBy": {
					"title": "Username",
					"description": "An identifier used to represent a user.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"createdOn": {
					"type": "string",
					"format": "date-time",
					"minLength": 0,
					"maxLength": 255
				},
				"createdRevision": {
					"type": "integer"
				},
				"type": {
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				}
			}
		},
		"SeatPropertyCode": {
			"title": "Seat Property Code",
			"description": "Codes used to identify attributes of a seat or berth.",
			"type": "string",
			"minLength": 1,
			"maxLength": 20
		},
		"JourneyOD": {
			"title": "Journey Origin and Destination",
			"description": "The timetabled origin and destination for the complete journey. The complete journey includes non-reservable legs but must exclude any fixed link legs (e.g. Walk, Underground, Transfer, etc.) <BR/><BR/> For example, a journey from Upminster to Peterborough would be represented by 7464 to 6133, whereas a journey from Yeovil Junction to Paddington, whose first leg is a Walk to Yeovil Pen Mill, should be provided as 5856 to 3087.",
			"type": "object",
			"required": [
				"journeyOrigin",
				"journeyDestination"
			],
			"properties": {
				"journeyOrigin": {
					"title": "Journey Origin",
					"description": "The NLC for the origin location. This may be for a non-reservable leg, if this is the first leg of a journey. It must be the NLC for the journey origin and not the fare origin NLC.",
					"type": "string",
					"pattern": "^[0-9A-Z]{4}$",
					"minLength": 4,
					"maxLength": 4
				},
				"journeyDestination": {
					"title": "Journey Destination",
					"description": "The NLC for the destination location. This may be for a non-reservable leg, if this is the last leg of a journey. It must be the NLC for the journey destination and not the fare destination NLC.",
					"type": "string",
					"pattern": "^[0-9A-Z]{4}$",
					"minLength": 4,
					"maxLength": 4
				}
			}
		},
		"BookingSeat": {
			"type": "object",
			"required": [
				"coachId",
				"seatId"
			],
			"properties": {
				"coachId": {
					"title": "Equipment Unit Id",
					"description": "An identifier for an equipment unit (coach).",
					"type": "string",
					"minLength": 1,
					"maxLength": 5
				},
				"seatId": {
					"title": "Seat Identifier",
					"description": "A unique identifier for a seat within a coach.",
					"type": "string",
					"minLength": 1,
					"maxLength": 5
				},
				"strategy": {
					"description": "The strategy chosen for assigning a seat. There are currently two options supported:<BR/> <BR/> <b>- exact <BR/> - close_to</b> <BR/><BR/>The <b>exact</b> strategy is the default strategy which will allocate the requested seat if it is available. If the seat is unavailable, the fallback is the regular seating algorithm <BR/><BR/>The <b>close_to</b> strategy will allocate a seat nearby the indicated seat number and carriage. That seat can be indicated and an available seat close to that seat will be assigned. It will only fall back to auto-allocation (the seating algorithm) in cases where no seat in close proximity of the requested seat can be found.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				}
			}
		},
		"Validations": {
			"type": "object",
			"properties": {
				"userName": {
					"title": "Validation Username",
					"description": "The identity of the Agent doing the validation",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"ticketReference": {
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"rsid": {
					"title": "RSID",
					"description": "The Retail Service ID is used to uniquely",
					"type": "string",
					"pattern": "^[A-Z]{2}[0-9]{6}$",
					"minLength": 8,
					"maxLength": 8
				},
				"device": {
					"title": "Validation Device",
					"description": "Device with which the validation has taken place",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"dateTime": {
					"title": "Validation DateTime",
					"description": "Timestamp of when the validation took place in the format yyyy-MM-dd'T'HH:mm:ss'Z'",
					"type": "string",
					"format": "date-time",
					"minLength": 0,
					"maxLength": 255
				},
				"voidDateTime": {
					"title": "Validation DateTime",
					"description": "Timestamp of when the validation took place in the format yyyy-MM-dd'T'HH:mm:ss'Z'",
					"format": "date-time",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"location": {
					"title": "Location",
					"description": "Station / location where validation took place",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"lightValidation": {
					"title": "Light Validation",
					"description": "Indicates whether the validation was a light validation or not",
					"type": "boolean"
				},
				"validationType": {
					"title": "ValidationType",
					"description": "The type of validation",
					"enum": [
						"FULL",
						"LIGHT",
						"PASSAGE",
						"ISSUE",
						"NOSHOW",
						"BOARDING",
						"DISEMBARKMENT",
						"RELEASE_REQUESTED",
						"RELEASE_CONFIRMED",
						"SEAT_RELEASED"
					],
					"type": "string",
					"minLength": 4,
					"maxLength": 17
				},
				"additionalDetails": {
					"description": "Additional details required for TOC",
					"type": "array",
					"items": {
						"$ref": "#/definitions/AdditionalDetails"
					}
				}
			}
		},
		"OneStopBookingSeatProduct": {
			"type": "object",
			"required": [
				"passengerId",
				"ticketTypeCode"
			],
			"properties": {
				"passengerId": {
					"title": "Passenger Identifier",
					"description": "Unique ID for a passenger",
					"type": "string",
					"pattern": "^passenger_[1-9][0-9]{0,2}$",
					"minLength": 0,
					"maxLength": 255
				},
				"seat": {
					"$ref": "#/definitions/BookingSeat"
				},
				"seatPreferences": {
					"description": "Allows retailers to specify 1 or more seat properties",
					"type": "array",
					"items": {
						"$ref": "#/definitions/SeatPropertyCode"
					}
				},
				"ticketTypeCode": {
					"title": "Ticket Type Code",
					"description": "Ticket type code against which which the availability applies. Defines a product in combination with the route code.",
					"type": "string",
					"minLength": 3,
					"maxLength": 5
				}
			}
		},
		"Seat": {
			"title": "Seat",
			"description": "Seat attributes.",
			"type": "object",
			"required": [
				"id",
				"sequenceNumber",
				"inventoryClass",
				"isBookable",
				"isReversed",
				"rowNumber",
				"rowPosition",
				"xPos",
				"yPos"
			],
			"properties": {
				"id": {
					"title": "Seat identifier",
					"description": "Unique identifier of the seat within a coach.",
					"type": "string",
					"minLength": 1,
					"maxLength": 5
				},
				"compartmentNumber": {
					"title": "Compartment Number",
					"description": "Compartment number of the seat, if applicable.",
					"type": "string",
					"minLength": 1,
					"maxLength": 5
				},
				"sequenceNumber": {
					"title": "Sequence Number",
					"description": "Sequence number of the seat in relation to other seats within the coach.",
					"type": "integer"
				},
				"inventoryClass": {
					"title": "Inventory Class",
					"description": "Inventory Class of the seat.",
					"type": "string",
					"minLength": 1,
					"maxLength": 2
				},
				"isBlocked": {
					"title": "Is Blocked",
					"description": "The seat cannot be booked.",
					"type": "boolean"
				},
				"isBookable": {
					"title": "Is Bookable",
					"description": "The seat can be booked.",
					"type": "boolean"
				},
				"isBooked": {
					"title": "Is Booked",
					"description": "The seat has been booked.",
					"type": "boolean"
				},
				"isReversed": {
					"title": "Is Reversed",
					"description": "The seat direction is opposite to that shown in the Coach Image Template.",
					"type": "boolean"
				},
				"reusagePercentage": {
					"title": "Reusage Percentage",
					"description": "An integer value for each seat between 0 and 100 that indicates how much of the route outside of the requested origin destination the seat is occupied. (i.e. how 'warm' the seat is).",
					"type": "integer",
					"minimum": 0,
					"maximum": 100
				},
				"rowNumber": {
					"title": "Row Number",
					"description": "The row number of the seat",
					"type": "integer"
				},
				"rowPosition": {
					"title": "Row Position",
					"description": "The position in the row of the seat",
					"type": "integer"
				},
				"xPos": {
					"title": "X Co-ordinate",
					"description": "The x co-ordinate of the seat within the coach map.",
					"type": "integer"
				},
				"yPos": {
					"title": "Y Co-ordinate",
					"description": "The y co-ordinate of the seat within the coach map.",
					"type": "integer"
				},
				"propertyCodes": {
					"title": "Seat Property Codes",
					"description": "A list of seat properties applicable to this seat.",
					"type": "array",
					"items": {
						"$ref": "#/definitions/SeatPropertyCode"
					}
				}
			}
		},
		"SeatPropertyDescription": {
			"title": "Seat Property Description",
			"description": "A seat property code and associated description",
			"type": "object",
			"required": [
				"code",
				"description"
			],
			"properties": {
				"code": {
					"title": "Seat Property Code",
					"description": "Code used to identify an attribute of a seat (or berth)",
					"type": "string",
					"minLength": 1,
					"maxLength": 20
				},
				"description": {
					"title": "Seat Property Description",
					"description": "A description of the seat (or berth) attribute",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				}
			}
		},
		"LegAvailabilitySearch": {
			"type": "object",
			"required": [
				"id",
				"boardLocation",
				"alightLocation",
				"rsid",
				"serviceOriginDate"
			],
			"properties": {
				"id": {
					"description": "Unique identifier for a leg",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"boardLocation": {
					"title": "Computer Reservation System Code (CRS)",
					"description": "The CRS code of the station at which a passenger boards a service",
					"type": "string",
					"pattern": "^[0-9A-Z]{3}$",
					"minLength": 3,
					"maxLength": 3
				},
				"alightLocation": {
					"title": "Computer Reservation System Code (CRS)",
					"description": "The CRS code of the station at which a passenger alights from a service",
					"type": "string",
					"pattern": "^[0-9A-Z]{3}$",
					"minLength": 3,
					"maxLength": 3
				},
				"rsid": {
					"title": "Retail Service Id",
					"description": "The Retail Service ID is used to uniquely identify a service (on a given day). It is comprised of the 2-character Carrier code followed by a 4 digit headcode followed by a 2 digit portion suffix (required for services which split/join on route).",
					"type": "string",
					"pattern": "^[A-Z]{2}[0-9]{6}$",
					"minLength": 8,
					"maxLength": 8
				},
				"serviceOriginDate": {
					"description": "The date of departure at the origin station. Used in combination with the RSID to uniquely identify a service.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255,
					"pattern": "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$"
				}
			}
		},
		"BundleAvailabilitySearch": {
			"type": "object",
			"required": [
				"id",
				"products"
			],
			"properties": {
				"id": {
					"description": "Unique identifier for a bundle",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"products": {
					"description": "List of products requested in that offer, optionally limited to the selected passenger ids",
					"type": "array",
					"minItems": 1,
					"items": {
						"$ref": "#/definitions/ProductAvailabilitySearch"
					}
				}
			}
		},
		"LegAvailability": {
			"type": "object",
			"properties": {
				"id": {
					"description": "Unique identifier for a leg",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"boardLocation": {
					"title": "Computer Reservation System Code (CRS)",
					"description": "The CRS code of the station at which a passenger boards a service",
					"type": "string",
					"pattern": "^[0-9A-Z]{3}$",
					"minLength": 3,
					"maxLength": 3
				},
				"alightLocation": {
					"title": "Computer Reservation System Code (CRS)",
					"description": "The CRS code of the station at which a passenger alights from a service",
					"type": "string",
					"pattern": "^[0-9A-Z]{3}$",
					"minLength": 3,
					"maxLength": 3
				},
				"rsid": {
					"title": "Retail Service Id",
					"description": "The Retail Service ID is used to uniquely identify a service (on a given day). It is comprised of the 2-character Carrier code followed by a 4 digit headcode followed by a 2 digit portion suffix (required for services which split/join on route).",
					"type": "string",
					"pattern": "^[A-Z]{2}[0-9]{6}$",
					"minLength": 8,
					"maxLength": 8
				},
				"serviceOriginDate": {
					"description": "The date of departure at the origin station used by RARS, in combination with the RSID, to uniquely identify a service.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255,
					"pattern": "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$"
				},
				"departureDateTime": {
					"description": "Timestamp of departure from the board location",
					"type": "string",
					"format": "date-time",
					"minLength": 0,
					"maxLength": 255
				},
				"arrivalDateTime": {
					"description": "Timestamp of arrival at the alight location",
					"type": "string",
					"format": "date-time",
					"minLength": 0,
					"maxLength": 255
				},
				"serviceIdentifier": {
					"title": "Service Identifier",
					"description": "Unique identifier of a service. Required for making a booking.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"carrierCode": {
					"title": "Carrier Code",
					"description": "A two character code used to identify train operators in timetable data (aka Train Operating Company (TOC) code).",
					"type": "string",
					"pattern": "^[A-Z]{2}$",
					"maxLength": 2,
					"minLength": 0
				}
			}
		},
		"BundleAvailability": {
			"type": "object",
			"properties": {
				"id": {
					"description": "Unique identifier for a bundle",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"bundleOutcome": {
					"description": "Provides an indication of the outcome of an availability check. For example (others may be added over time):\n- <b>FULL_AVAILABILITY</b>; available for all passengers\n- <b>PARTIAL_AVAILABILITY</b>; only available for some of the passengers\n- <b>NO_AVAILABILITY</b>; there is no availability\n- <b>NO_TARIFF</b>; returned when tariff conditions are not met due to booking horizon or sales retriction (within booking horizon but temporarily blocked from accepting further bookings)\n- <b>SERVICE_FULL</b>; the service is full\n",
					"enum": [
						"FULL_AVAILABILITY",
						"PARTIAL_AVAILABILITY",
						"NO_AVAILABILITY",
						"NO_TARIFF",
						"SERVICE_FULL"
					],
					"type": "string",
					"minLength": 9,
					"maxLength": 20
				},
				"products": {
					"description": "List of products within this bundle, potentially limited to selected passenger ids",
					"type": "array",
					"minItems": 0,
					"items": {
						"$ref": "#/definitions/ProductAvailability"
					}
				}
			}
		},
		"BookingLegSeatProduct": {
			"type": "object",
			"required": [
				"canBeCancelled",
				"canBeRebooked",
				"canBeUpgraded",
				"canChangeName",
				"canChangeSeat",
				"description",
				"isCancelled",
				"isProvisional",
				"name",
				"passengerId",
				"productType",
				"tariffCode"
			],
			"properties": {
				"canBeCancelled": {
					"description": "",
					"type": "boolean"
				},
				"canBeRebooked": {
					"description": "",
					"type": "boolean"
				},
				"canBeUpgraded": {
					"description": "",
					"type": "boolean"
				},
				"canChangeName": {
					"description": "",
					"type": "boolean"
				},
				"canChangeSeat": {
					"description": "",
					"type": "boolean"
				},
				"cancelledReason": {
					"description": "Provides details as to why a booking was cancelled.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"cancelledRevision": {
					"type": "integer"
				},
				"confirmedOn": {
					"type": "string",
					"format": "date-time",
					"minLength": 0,
					"maxLength": 255
				},
				"createdRevision": {
					"type": "integer"
				},
				"description": {
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"inventoryClass": {
					"title": "Inventory Class Code",
					"description": "A code representing distinct set of seats or other inventory (e.g. bicycles, prams or meals) used to determine logical availability for a given tariff.",
					"type": "string",
					"minLength": 1,
					"maxLength": 2
				},
				"isCancelled": {
					"description": "",
					"type": "boolean"
				},
				"isProvisional": {
					"description": "",
					"type": "boolean"
				},
				"itemRef": {
					"title": "General Identifier",
					"description": "A code used to uniquely identify an item.",
					"type": "integer"
				},
				"name": {
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"passengerId": {
					"title": "Passenger Identifier",
					"description": "Used to uniquely identify a passenger",
					"type": "string",
					"pattern": "^passenger_[1-9][0-9]{0,2}$",
					"minLength": 0,
					"maxLength": 255
				},
				"productBookingId": {
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"productType": {
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"provisionalExpiryOn": {
					"type": "string",
					"format": "date-time",
					"minLength": 0,
					"maxLength": 255
				},
				"seat": {
					"$ref": "#/definitions/BookedSeat"
				},
				"seatProperties": {
					"description": "This allows consumers to specify 1 or more seat properties, which will enable the booking algorithm to take these into account when allocating a seat",
					"type": "array",
					"items": {
						"$ref": "#/definitions/SeatPropertyCode"
					}
				},
				"tariffCode": {
					"title": "Tariff Code",
					"description": "Tariff code associated to a product. Required for making a booking.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"ticketTypeCode": {
					"title": "Ticket Type Code",
					"description": "Ticket type code against which which the availability applies. Defines a product in combination with the route code.",
					"type": "string",
					"minLength": 3,
					"maxLength": 5
				},
				"updatedRevision": {
					"type": "integer"
				},
				"uuid": {
					"title": "Universally Unique Identifier (UUID)",
					"description": "A code used to uniquely identify an item.",
					"type": "string",
					"maxLength": 50,
					"minLength": 0
				}
			}
		},
		"ProductAvailabilitySearch": {
			"type": "object",
			"required": [
				"ticketTypeCode",
				"routeCode"
			],
			"properties": {
				"ticketTypeCode": {
					"title": "Ticket Type Code",
					"description": "Ticket type code against which which the availability applies. Defines a product in combination with the route code.",
					"type": "string",
					"minLength": 3,
					"maxLength": 5
				},
				"routeCode": {
					"title": "Route Code",
					"description": "Route code against which which the availability applies. Defines a product in combination with the ticket type code.",
					"type": "string",
					"minLength": 5,
					"maxLength": 5
				},
				"sequenceNumber": {
					"description": "If defined, indicates the order of allocation preference for the passengers. This sequence should have the lowest value for the product with the highest allocation preference.\n",
					"type": "integer"
				},
				"passengerIds": {
					"description": "Individual passenger ids this product is requested for. If this field is omitted, the product is requested for ALL passengers.\n",
					"type": "array",
					"minItems": 1,
					"items": {
						"$ref": "#/definitions/PassengerId"
					}
				}
			}
		},
		"ProductAvailability": {
			"type": "object",
			"properties": {
				"ticketTypeCode": {
					"title": "Ticket Type Code",
					"description": "Ticket type code against which which the availability applies. Defines a product in combination with the route code.",
					"type": "string",
					"minLength": 3,
					"maxLength": 5
				},
				"routeCode": {
					"title": "Route Code",
					"description": "Route code against which which the availability applies. Defines a product in combination with the ticket type code.",
					"type": "string",
					"minLength": 5,
					"maxLength": 5
				},
				"items": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/ItemAvailability"
					}
				}
			}
		},
		"ItemAvailability": {
			"type": "object",
			"properties": {
				"legId": {
					"description": "Unique identifier for a leg",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"legAvailability": {
					"description": "Provides an indication of the outcome of an availability check. For example (others may be added over time):\n- <b>FULL_AVAILABILITY</b>; available for all passengers\n- <b>PARTIAL_AVAILABILITY</b>; only available for some of the passengers\n- <b>NO_AVAILABILITY</b>; there is no availability\n- <b>NO_TARIFF</b>; returned when tariff conditions are not met due to booking horizon or sales retriction (within booking horizon but temporarily blocked from accepting further bookings)\n- <b>SERVICE_FULL</b>; the service is full\n",
					"enum": [
						"FULL_AVAILABILITY",
						"PARTIAL_AVAILABILITY",
						"NO_AVAILABILITY",
						"NO_TARIFF",
						"SERVICE_FULL"
					],
					"type": "string",
					"minLength": 9,
					"maxLength": 20
				},
				"tariffCode": {
					"title": "Tariff Code",
					"description": "Tariff code associated to a product. Required for making a booking.",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"inventoryClass": {
					"title": "Inventory Class Code",
					"description": "Inventory class this product is associated to. Required when assessing availability of different product combinations for multiple passengers.",
					"type": "string",
					"minLength": 1,
					"maxLength": 2
				},
				"inventoryClassType": {
					"title": "Inventory Class Type",
					"description": "The type of Inventory Class that will be allocated such that the configured type of allocation is suggested before a booking is made.",
					"enum": [
						"NON_SPECIFIC_SEAT",
						"SEAT_ONLY",
						"CARRIAGE_ONLY",
						"CARRIAGE_AND_SEAT"
					],
					"type": "string",
					"minLength": 9,
					"maxLength": 17
				},
				"passengerIds": {
					"description": "Defines passengers, by their id, which are allocated to this item",
					"type": "array",
					"minItems": 1,
					"items": {
						"$ref": "#/definitions/PassengerId"
					}
				},
				"cappedAvailability": {
					"description": "Indicates the remaining availability when less than or equal to the maximum number the requestor is permitted to know.",
					"type": "integer"
				}
			}
		},
		"UtnPutRequest": {
			"type": "object",
			"required": [
				"value"
			],
			"properties": {
				"value": {
					"type": "string",
					"maxLength": 16,
					"minLength": 0
				}
			}
		},
		"RbrPutRequest": {
			"type": "object",
			"required": [
				"value"
			],
			"properties": {
				"value": {
					"type": "string",
					"maxLength": 16,
					"minLength": 0
				}
			}
		},
		"StatusPutRequest": {
			"type": "object",
			"required": [
				"status"
			],
			"properties": {
				"status": {
					"enum": [
						"CONFIRM",
						"REVERT",
						"CANCEL"
					],
					"type": "string",
					"minLength": 6,
					"maxLength": 7
				}
			}
		},
		"SeatsPatchRequest": {
			"type": "array",
			"items": {
				"$ref": "#/definitions/SeatUpdate"
			}
		},
		"PassengersPatchRequest": {
			"type": "array",
			"items": {
				"$ref": "#/definitions/PassengerUpdate"
			}
		},
		"LegsPatchRequest": {
			"type": "object",
			"required": [
				"legs"
			],
			"properties": {
				"legs": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/BookingLeg"
					}
				}
			}
		},
		"NotesPostRequest": {
			"type": "object",
			"required": [
				"noteContent"
			],
			"properties": {
				"noteContent": {
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				}
			}
		},
		"ReferencesGet200Response": {
			"type": "object",
			"required": [
				"bookingReferences"
			],
			"properties": {
				"bookingReferences": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/BookingReference"
					}
				}
			}
		},
		"DisabilitytypesGet200Response": {
			"type": "object",
			"required": [
				"disabilityTypes"
			],
			"properties": {
				"disabilityTypes": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/DisabilityType"
					}
				}
			}
		},
		"ReportTicketsDetails": {
			"type": "object",
			"properties": {
				"bookingRef": {
					"title": "Booking Reference",
					"description": "A unique identifier for a booking.",
					"type": "string",
					"maxLength": 16,
					"minLength": 0
				},
				"boardLocation": {
					"title": "Board Location",
					"description": "A three character code used to unique identify a location. CRS codes act as a map between TIPLOCs used in timetables and NLCs used in fares and are made known to the public as a handy shortcut for finding a location.",
					"type": "string",
					"pattern": "^[0-9A-Z]{3}$",
					"minLength": 3,
					"maxLength": 3
				},
				"boardLocationName": {
					"title": "Board Location Name",
					"description": "Name of the boarding station",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"alightLocation": {
					"title": "Alight Location",
					"description": "A three character code used to unique identify a location. CRS codes act as a map between TIPLOCs used in timetables and NLCs used in fares and are made known to the public as a handy shortcut for finding a location.",
					"type": "string",
					"pattern": "^[0-9A-Z]{3}$",
					"minLength": 3,
					"maxLength": 3
				},
				"alightLocationName": {
					"title": "Alight Station Location Name",
					"description": "Name of the Alight station",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"statusCode": {
					"title": "Status Code",
					"description": "The type of passenger, expressed using the standard fare status codes (e.g. 000 = Adult, 001 = Child, etc.).",
					"type": "string",
					"minLength": 3,
					"maxLength": 3
				},
				"coachId": {
					"title": "Coach Id",
					"description": "The name of the Coach",
					"type": "string",
					"minLength": 1,
					"maxLength": 5
				},
				"seatId": {
					"title": "Seat Id",
					"description": "The number of the seat",
					"type": "string",
					"minLength": 1,
					"maxLength": 5
				},
				"firstName": {
					"title": "First Name",
					"description": "First name of the passenger",
					"type": "string",
					"maxLength": 50,
					"minLength": 0
				},
				"lastName": {
					"title": "Last Name",
					"description": "Last name of the passenger",
					"type": "string",
					"maxLength": 50,
					"minLength": 0
				},
				"userId": {
					"title": "User Id",
					"description": "User Id of the agent who sold the ticket",
					"type": "string",
					"minLength": 0,
					"maxLength": 255
				},
				"ticketTypeCode": {
					"title": "Ticket Type Code",
					"description": "The code of the product",
					"type": "string",
					"minLength": 3,
					"maxLength": 5
				},
				"inventoryClass": {
					"title": "Inventory Class",
					"description": "Inventory Class of the seat.",
					"type": "string",
					"minLength": 1,
					"maxLength": 2
				}
			}
		},
		"BookedSeat": {
			"type": "object",
			"required": [
				"coachId",
				"id"
			],
			"properties": {
				"coachId": {
					"title": "Equipment Unit Id",
					"description": "An identifier for an equipment unit (coach).",
					"type": "string",
					"minLength": 1,
					"maxLength": 5
				},
				"id": {
					"title": "Seat Identifier",
					"description": "A unique identifier for a seat within a coach.",
					"type": "string",
					"minLength": 1,
					"maxLength": 5
				}
			}
		},
		"PassengerId": {
			"title": "Passenger Identifier",
			"description": "Used to uniquely identify a passenger",
			"type": "string",
			"pattern": "^passenger_[1-9][0-9]{0,2}$",
			"minLength": 0,
			"maxLength": 255
		},
		"Errors": {
			"title": "Error Array",
			"type": "object",
			"properties": {
				"errors": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/Error"
					}
				}
			}
		},
		"Error": {
			"title": "RDG Error Object",
			"type": "object",
			"properties": {
				"code": {
					"title": "Error Code",
					"type": "string",
					"description": "A unique (by service) code for an error"
				},
				"message": {
					"title": "Error Message",
					"type": "string",
					"description": "Short description of an error"
				},
				"timestamp": {
					"title": "Error Timestamp",
					"type": "string",
					"format": "date-time",
					"description": "Timestamp of an error"
				},
				"context": {
					"title": "Context",
					"description": "Additional context in relation to the notice.",
					"type": "object",
					"patternProperties": {
						"[a-zA-Z0-9_]*": {
							"type": "string"
						}
					}
				}
			}
		}
	}
}