{ "swagger": "2.0", "info": { "title": "Disruptions", "version": "v2" }, "paths": { "/api/v2/stations/disruptions": { "get": { "description": "The service endpoint requires authentication for every API request.", "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": "crsCode", "description": "CRS Code Query Parameter. Can be between 1 and 10 CRS codes, separated by commas", "required": true, "in": "query", "type": "string" }, { "name": "client_secret", "description": "The client_secret of the API consumer/ requester", "required": true, "in": "header", "type": "string" } ], "responses": { "200": { "description": "", "examples": { "application/json": [ { "crsCode": "VIC", "disruptions": [ { "source": "iptis_bulletin", "isServiceDisruption": false, "isAlert": false, "isCleared": false, "id": "1386918", "description": "The rail replacement bus pick up / drop off point for London Victoria station is on Bridge Place outside the Hilton Hotel.", "startDateTime": "2025-02-10T10:23:00", "expiryDateTime": "2026-12-31T23:59:00", "displayStartDateTime": "00:00:00", "displayEndDateTime": "23:59:59", "category": "Information", "severity": "P2", "affectedStation": [ { "stationName": "London Victoria", "crsCode": "VIC", "tiploc": "VICTRIE", "type": "Any", "action": "Change" } ], "affectedOperators": [ { "tocName": "London South Eastern Railwy", "tocCode": "SE" } ], "transportModes": [ "BUS" ] }, { "source": "knowledgebase_incident", "id": "F32D47D6E21E4AD4A92A26DA1DCDE824", "version": "20260206112048", "summary": "Disruption through Selhurst expected until 14:00", "description": "You may be entitled to compensation if you experience a delay in completing your journey today. Please keep your train ticket and make a note of your journey, as both will be required to support any claim.

", "status": "Active", "isAlert": false, "isPlanned": false, "affectedOperators": [ { "tocCode": "GX", "tocName": "Gatwick Express" }, { "tocCode": "SN", "tocName": "Southern" } ], "affectedRoutes": [ { "routeDetails": "

Gatwick Express between London Victoria and Brighton

Southern between London Victoria and Reigate / East Grinstead / Ore / Littlehampton / Eastbourne / Bognor Regis / Portsmouth Harbour

" } ], "startDateTime": "2026-02-06T11:01:00.000+00:00", "createdDateTime": "2026-02-06T11:01:32.954Z", "lastModifiedDateTime": "2026-02-06T11:20:48.379Z", "lastChangedBy": "NRE CMS Editor", "disruptionLinks": [ { "uri": "https://www.nationalrail.co.uk/service-disruptions/selhurst-20260206/", "label": "Incident detail page" } ] }, { "source": "darwin_stationmessage", "category": "Train service", "severity": "Minor", "summary": "\nTrains running through Selhurst may be delayed by up to 15 minute or revised. Latest information can be found in Status and Disruptions.", "description": "P2 #Selhurst", "creationTime": "2026-02-06T11:26:29.7890392+00:00" } ], "stationAlerts": "

The information screens at the entrance to platform 1 at London Victoria are being upgraded. Please use the main departure boards on the concourse or the National Rail app for travel information.

" } ] }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/DisruptionsGet200Response" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/Errors" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/Errors" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/Errors" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/Errors" } }, "405": { "description": "Method Not Allowed", "schema": { "$ref": "#/definitions/Errors" } } } } }, "/api/v2/stations/disruptions/incidents": { "get": { "description": "The service endpoint requires authentication for every API request.", "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": "crsCode", "description": "CRS Code Query Parameter. Can be between 1 and 10 CRS codes, separated by commas", "required": true, "in": "query", "type": "string" }, { "name": "client_secret", "description": "The client_secret of the API consumer/ requester", "required": true, "in": "header", "type": "string" } ], "responses": { "200": { "description": "", "examples": { "application/json": [ { "crsCode": "VIC", "disruptions": [ { "source": "knowledgebase_incident", "id": "F32D47D6E21E4AD4A92A26DA1DCDE824", "version": "20260206112048", "summary": "Disruption through Selhurst expected until 14:00", "description": "You may be entitled to compensation if you experience a delay in completing your journey today. Please keep your train ticket and make a note of your journey, as both will be required to support any claim.

", "status": "Active", "isAlert": false, "isPlanned": false, "affectedOperators": [ { "tocCode": "GX", "tocName": "Gatwick Express" }, { "tocCode": "SN", "tocName": "Southern" } ], "affectedRoutes": [ { "routeDetails": "

Gatwick Express between London Victoria and Brighton

Southern between London Victoria and Reigate / East Grinstead / Ore / Littlehampton / Eastbourne / Bognor Regis / Portsmouth Harbour

" } ], "startDateTime": "2026-02-06T11:01:00.000+00:00", "createdDateTime": "2026-02-06T11:01:32.954Z", "lastModifiedDateTime": "2026-02-06T11:20:48.379Z", "lastChangedBy": "NRE CMS Editor", "disruptionLinks": [ { "uri": "https://www.nationalrail.co.uk/service-disruptions/selhurst-20260206/", "label": "Incident detail page" } ] } ] } ] }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/IncidentsGet200Response" } }, "400": { "description": "Bad Request", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "401": { "description": "Unauthorized", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "403": { "description": "Forbidden", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "404": { "description": "Not Found", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "405": { "description": "Method Not Allowed", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } } } } }, "/api/v2/stations/disruptions/stationMessages": { "get": { "description": "The service endpoint requires authentication for every API request.", "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": "crsCode", "description": "CRS Code Query Parameter. Can be between 1 and 10 CRS codes, separated by commas", "required": true, "in": "query", "type": "string" }, { "name": "client_secret", "description": "The client_secret of the API consumer/ requester", "required": true, "in": "header", "type": "string" } ], "responses": { "200": { "description": "", "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/StationmessagesGet200Response" } }, "400": { "description": "Bad Request", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "401": { "description": "Unauthorized", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "403": { "description": "Forbidden", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "404": { "description": "Not Found", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "405": { "description": "Method Not Allowed", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } } } } }, "/api/v2/tocs/{tocCode}/serviceIndicators": { "get": { "operationId": "Service Indicator by TOC", "description": "The service endpoint requires authentication for every API request.", "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": "tocCode", "required": true, "in": "path", "type": "string", "pattern": "^[A-Z]{2}$" }, { "name": "client_secret", "description": "The client_secret of the API consumer/ requester", "required": true, "in": "header", "type": "string" } ], "responses": { "200": { "description": "", "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/ServiceIndicator" } }, "400": { "description": "Bad Request", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "401": { "description": "Unauthorized", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "404": { "description": "Returns 404 in case of no results.", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "403": { "description": "Forbidden", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "405": { "description": "Method Not Allowed", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } } } } }, "/api/v2/tocs/serviceIndicators": { "get": { "operationId": "Service Indicators by TOCs", "description": "The service endpoint requires authentication for every API request.", "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": "tocCode", "description": "TOC Codes. Can be between 1 and 10 TOC code, separated by commas", "required": false, "in": "query", "type": "string" }, { "name": "client_secret", "description": "The client_secret of the API consumer/ requester", "required": true, "in": "header", "type": "string" } ], "responses": { "200": { "description": "", "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/ServiceindicatorsGet200Response" } }, "400": { "description": "Bad Request", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "401": { "description": "Unauthorized", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "403": { "description": "Forbidden", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "404": { "description": "Not Found", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "405": { "description": "Method Not Allowed", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } } } } }, "/api/v2/disruptions/incidents/{incidentNumber}": { "get": { "description": "The service endpoint requires authentication for every API request.", "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": "incidentNumber", "required": true, "in": "path", "type": "string" }, { "name": "client_secret", "description": "The client_secret of the API consumer/ requester", "required": true, "in": "header", "type": "string" } ], "responses": { "200": { "description": "", "examples": { "application/json": [ { "crsCode": "VIC", "disruptions": [ { "source": "knowledgebase_incident", "id": "F32D47D6E21E4AD4A92A26DA1DCDE824", "version": "20260206112048", "summary": "Disruption through Selhurst expected until 14:00", "description": "You may be entitled to compensation if you experience a delay in completing your journey today. Please keep your train ticket and make a note of your journey, as both will be required to support any claim.

", "status": "Active", "isAlert": false, "isPlanned": false, "affectedOperators": [ { "tocCode": "GX", "tocName": "Gatwick Express" }, { "tocCode": "SN", "tocName": "Southern" } ], "affectedRoutes": [ { "routeDetails": "

Gatwick Express between London Victoria and Brighton

Southern between London Victoria and Reigate / East Grinstead / Ore / Littlehampton / Eastbourne / Bognor Regis / Portsmouth Harbour

" } ], "startDateTime": "2026-02-06T11:01:00.000+00:00", "createdDateTime": "2026-02-06T11:01:32.954Z", "lastModifiedDateTime": "2026-02-06T11:20:48.379Z", "lastChangedBy": "NRE CMS Editor", "disruptionLinks": [ { "uri": "https://www.nationalrail.co.uk/service-disruptions/selhurst-20260206/", "label": "Incident detail page" } ] } ] } ] }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Disruption" } }, "400": { "description": "Bad Request", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "401": { "description": "Unauthorized", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "403": { "description": "Forbidden", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "404": { "description": "Returns 404 in case of no results.", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "405": { "description": "Method Not Allowed", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } } } } }, "/api/v2/disruptions/incidents/search": { "post": { "description": "The service endpoint requires authentication for every API request.", "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": "client_secret", "description": "The client_secret of the API consumer/ requester", "required": true, "in": "header", "type": "string" }, { "x-amf-mediaType": "application/json", "in": "body", "name": "generated", "schema": { "$ref": "#/definitions/IncidentsSearch" } } ], "responses": { "200": { "description": "", "examples": { "application/json": [ { "crsCode": "VIC", "disruptions": [ { "source": "knowledgebase_incident", "id": "F32D47D6E21E4AD4A92A26DA1DCDE824", "version": "20260206112048", "summary": "Disruption through Selhurst expected until 14:00", "description": "You may be entitled to compensation if you experience a delay in completing your journey today. Please keep your train ticket and make a note of your journey, as both will be required to support any claim.

", "status": "Active", "isAlert": false, "isPlanned": false, "affectedOperators": [ { "tocCode": "GX", "tocName": "Gatwick Express" }, { "tocCode": "SN", "tocName": "Southern" } ], "affectedRoutes": [ { "routeDetails": "

Gatwick Express between London Victoria and Brighton

Southern between London Victoria and Reigate / East Grinstead / Ore / Littlehampton / Eastbourne / Bognor Regis / Portsmouth Harbour

" } ], "startDateTime": "2026-02-06T11:01:00.000+00:00", "createdDateTime": "2026-02-06T11:01:32.954Z", "lastModifiedDateTime": "2026-02-06T11:20:48.379Z", "lastChangedBy": "NRE CMS Editor", "disruptionLinks": [ { "uri": "https://www.nationalrail.co.uk/service-disruptions/selhurst-20260206/", "label": "Incident detail page" } ] } ] } ] }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/SearchPost200Response" } }, "400": { "description": "Bad Request", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "401": { "description": "Unauthorized", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "403": { "description": "Forbidden", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "404": { "description": "Not Found", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "405": { "description": "Method Not Allowed", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } } } } }, "/api/v2/bulletins/search": { "post": { "description": "The service endpoint requires authentication for every API request.", "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": "client_secret", "description": "The client_secret of the API consumer/ requester", "required": true, "in": "header", "type": "string" }, { "x-amf-mediaType": "application/json", "in": "body", "name": "generated", "schema": { "$ref": "#/definitions/SearchPostRequest" } } ], "responses": { "200": { "description": "", "examples": { "application/json": [ { "source": "iptis_bulletin", "isServiceDisruption": true, "isAlert": false, "isCleared": false, "id": "1522339", "description": "The lifts serving platforms 3 and 4 are currently out of order at Cardiff Central station.", "startDateTime": "2026-02-06T07:17:00", "expiryDateTime": "2026-02-13T02:00:00", "displayStartDateTime": "00:00:00", "displayEndDateTime": "23:59:59", "category": "Accessibility", "severity": "P0", "affectedStation": [ { "stationName": "Cardiff Central", "crsCode": "CDF", "tiploc": "CRDFCEN", "type": "Any", "action": "Change" } ] } ] }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/SearchPost200Response" } }, "400": { "description": "Bad Request", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "401": { "description": "Unauthorized", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "403": { "description": "Forbidden", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "404": { "description": "Not Found", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "405": { "description": "Method Not Allowed", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } } } } }, "/api/v2/bulletins/getLatest": { "get": { "description": "Get URL to download all bulletins", "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": "client_secret", "description": "The client_secret of the API consumer/ requester", "required": true, "in": "header", "type": "string" } ], "responses": { "200": { "description": "", "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/BulletinsGet200Response" } }, "400": { "description": "Bad Request", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "401": { "description": "Unauthorized", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "403": { "description": "Forbidden", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "404": { "description": "Not Found", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } }, "405": { "description": "Method Not Allowed", "headers": { "x-correlation-id": { "x-amf-required": true, "description": "Specify the transaction identifier received from the request or added by the API otherwise", "type": "string" } }, "x-amf-mediaType": "application/json", "schema": { "$ref": "#/definitions/Errors" } } } } } }, "definitions": { "BulletinsGet200Response": { "type": "object", "properties": { "bulletinURL": { "type": "string", "minLength": 3, "maxLength": 255, "example": "https://fred.com" } } }, "CrsCode": { "title": "CRS Code", "type": "string", "pattern": "^[A-Z0-9]{3}$", "minLength": 3, "maxLength": 3 }, "AllDisruptions": { "title": "All Disruptions Response", "type": "object", "required": [ "crsCode" ], "properties": { "crsCode": { "title": "CRS Code", "type": "string", "pattern": "^[A-Z0-9]{3}$", "minLength": 0, "maxLength": 3 }, "disruptions": { "type": "array", "items": { "$ref": "#/definitions/Disruption" } }, "stationAlerts": { "type": "string", "minLength": 0, "maxLength": 255 } } }, "DisruptionByStation": { "title": "Disruption By StationCRS", "type": "object", "required": [ "crsCode" ], "properties": { "crsCode": { "title": "CRS Code", "type": "string", "pattern": "^[A-Z0-9]{3}$", "minLength": 0, "maxLength": 3 }, "disruptions": { "type": "array", "items": { "$ref": "#/definitions/Disruption" } } } }, "StationMessages": { "title": "Station Message", "type": "object", "properties": { "crsCode": { "title": "CRS Code", "type": "string", "pattern": "^[A-Z0-9]{3}$", "minLength": 3, "maxLength": 3 }, "creationTime": { "type": "string", "format": "date-time", "minLength": 0, "maxLength": 255 }, "stationDisruptions": { "type": "array", "items": { "$ref": "#/definitions/StationDisruption" } }, "stationAlerts": { "type": "string", "minLength": 0, "maxLength": 255 } } }, "ServiceIndicator": { "title": "TOC Service Indicator", "type": "object", "properties": { "tocCode": { "type": "string", "pattern": "^[A-Z]{2}$", "minLength": 2, "maxLength": 2 }, "tocName": { "type": "string", "minLength": 0, "maxLength": 255 }, "tocStatus": { "type": "string", "minLength": 0, "maxLength": 255 }, "tocStatusImage": { "type": "string", "minLength": 0, "maxLength": 255 }, "tocStatusDescription": { "type": "string", "minLength": 0, "maxLength": 255 }, "tocTwitterAccount": { "type": "string", "minLength": 0, "maxLength": 255 }, "tocAdditionalInfo": { "type": "string", "minLength": 0, "maxLength": 255 }, "tocCustomAdditionalInfo": { "type": "string", "minLength": 0, "maxLength": 255 }, "tocServiceGroup": { "type": "array", "items": { "$ref": "#/definitions/ServiceGroup" } } } }, "IncidentsSearch": { "description": "Incidents Search", "type": "object", "required": [ "startDate", "endDate" ], "properties": { "startDate": { "type": "string", "minLength": 0, "maxLength": 255, "pattern": "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$" }, "endDate": { "type": "string", "minLength": 0, "maxLength": 255, "pattern": "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$" }, "isPlanned": { "type": "boolean" }, "tocCodes": { "type": "array", "maxItems": 10, "uniqueItems": false, "items": { "$ref": "#/definitions/TocCode" } } } }, "StringType": { "type": "string", "minLength": 0, "maxLength": 255 }, "UID": { "type": "string", "pattern": "^[A-Z]{1}[0-9]{5}$", "minLength": 6, "maxLength": 6 }, "Tiploc": { "type": "string", "pattern": "^[A-Z0-9]{4,7}$", "minLength": 4, "maxLength": 7 }, "DisruptionsGet200Response": { "type": "array", "items": { "$ref": "#/definitions/AllDisruptions" } }, "IncidentsGet200Response": { "type": "array", "items": { "$ref": "#/definitions/DisruptionByStation" } }, "StationmessagesGet200Response": { "type": "array", "items": { "$ref": "#/definitions/StationMessages" } }, "ServiceindicatorsGet200Response": { "type": "array", "items": { "$ref": "#/definitions/ServiceIndicator" } }, "SearchPost200Response": { "type": "array", "items": { "$ref": "#/definitions/Disruption" } }, "SearchPostRequest": { "title": "Bulletins Search Request.", "description": "Bulletins will be filtered based on the filter criteria specified in bulletinRequest. If no filter needs to be applied, request body should be empty.", "type": "object", "additionalProperties": false, "properties": { "speakableText": { "type": "string", "maxLength": 256, "minLength": 0 }, "mode": { "type": "array", "maxItems": 4, "minItems": 1, "uniqueItems": false, "items": { "$ref": "#/definitions/StringType" } }, "trainId": { "type": "array", "maxItems": 10, "minItems": 1, "uniqueItems": false, "items": { "$ref": "#/definitions/UID" } }, "hasContextValue": { "type": "boolean" }, "stationCrs": { "type": "array", "maxItems": 10, "minItems": 1, "uniqueItems": false, "items": { "$ref": "#/definitions/CrsCode" } }, "isAlert": { "type": "boolean" }, "lineOfRoute": { "type": "array", "maxItems": 10, "minItems": 1, "uniqueItems": false, "items": { "$ref": "#/definitions/StringType" } }, "isCleared": { "type": "boolean" }, "serviceProviderName": { "type": "array", "maxItems": 10, "minItems": 1, "uniqueItems": false, "items": { "$ref": "#/definitions/StringType" } }, "stationTiploc": { "type": "array", "maxItems": 10, "minItems": 1, "uniqueItems": false, "items": { "$ref": "#/definitions/Tiploc" } }, "category": { "type": "string", "maxLength": 256, "minLength": 0 }, "severity": { "type": "string", "maxLength": 256, "minLength": 0 }, "isDisruption": { "type": "boolean" }, "serviceProviderCode": { "type": "array", "maxItems": 10, "minItems": 1, "uniqueItems": false, "items": { "$ref": "#/definitions/TocCode" } }, "effectiveAt": { "type": "string", "format": "date-time", "minLength": 0, "maxLength": 255 } } }, "TocCode": { "type": "string", "pattern": "^[A-Z]{2}$", "minLength": 2, "maxLength": 2 }, "Disruption": { "title": "Disruption", "description": "Disruption Canonical Data Model", "type": "object", "properties": { "source": { "enum": [ "darwin_stationmessage", "knowledgebase_incident", "iptis_bulletin" ], "type": "string", "minLength": 14, "maxLength": 22 }, "id": { "type": "string", "minLength": 0, "maxLength": 255 }, "version": { "type": "string", "minLength": 0, "maxLength": 255 }, "participantReference": { "type": "string", "minLength": 0, "maxLength": 255 }, "summary": { "type": "string", "minLength": 0, "maxLength": 255 }, "description": { "type": "string", "minLength": 0, "maxLength": 255 }, "status": { "enum": [ "Active", "Cleared" ], "type": "string", "minLength": 6, "maxLength": 7 }, "severity": { "enum": [ "High", "Low", "None" ], "type": "string", "minLength": 3, "maxLength": 4 }, "category": { "type": "string", "minLength": 0, "maxLength": 255 }, "isAlert": { "type": "boolean" }, "isServiceDisruption": { "type": "boolean" }, "isPlanned": { "type": "boolean" }, "isCleared": { "type": "boolean" }, "speakableText": { "type": "string", "minLength": 0, "maxLength": 255 }, "twitterHashing": { "type": "string", "minLength": 0, "maxLength": 255 }, "affectedOperators": { "type": "array", "items": { "$ref": "#/definitions/Operator" } }, "affectedRoutes": { "type": "array", "items": { "$ref": "#/definitions/Route" } }, "startDateTime": { "type": "string", "format": "date-time", "minLength": 0, "maxLength": 255 }, "expiryDateTime": { "type": "string", "format": "date-time", "minLength": 0, "maxLength": 255 }, "createdDateTime": { "type": "string", "format": "date-time", "minLength": 0, "maxLength": 255 }, "lastModifiedDateTime": { "type": "string", "format": "date-time", "minLength": 0, "maxLength": 255 }, "lastChangedBy": { "type": "string", "minLength": 0, "maxLength": 255 }, "disruptionLinks": { "type": "array", "items": { "$ref": "#/definitions/DisruptionUrl" } }, "affectedStation": { "$ref": "#/definitions/StationDetail" }, "transportModes": { "type": "array", "items": { "$ref": "#/definitions/StringType" } }, "trainId": { "type": "array", "items": { "$ref": "#/definitions/UID" } }, "url": { "type": "string", "minLength": 0, "maxLength": 255 }, "creationTime": { "type": "string", "minLength": 0, "maxLength": 255 }, "displayStartDateTime": { "type": "string", "minLength": 8, "maxLength": 8 }, "displayEndDateTime": { "type": "string", "minLength": 8, "maxLength": 8 } } }, "StationDisruption": { "title": "Station Disruption", "type": "object", "properties": { "source": { "enum": [ "darwin_stationmessage", "knowledgebase_incident", "iptis_bulletin" ], "type": "string", "minLength": 14, "maxLength": 22 }, "category": { "type": "string", "minLength": 0, "maxLength": 255 }, "severity": { "type": "string", "minLength": 0, "maxLength": 255 }, "message": { "type": "string", "minLength": 0, "maxLength": 255 }, "description": { "type": "string", "minLength": 0, "maxLength": 255 } } }, "ServiceGroup": { "title": "Service Group", "description": "Service Indicator - Service Group", "type": "object", "properties": { "name": { "type": "string", "minLength": 0, "maxLength": 255 }, "currentDisruption": { "type": "string", "minLength": 0, "maxLength": 255 }, "customDetail": { "type": "string", "minLength": 0, "maxLength": 255 }, "customURL": { "type": "string", "minLength": 0, "maxLength": 255 } } }, "StationDetail": { "title": "Affected Station", "type": "object", "properties": { "crsCode": { "title": "CRS Code", "type": "string", "pattern": "^[A-Z0-9]{3}$", "minLength": 3, "maxLength": 3 }, "stationName": { "type": "string", "minLength": 0, "maxLength": 255 }, "tiploc": { "type": "string", "minLength": 4, "maxLength": 7 }, "type": { "type": "string", "minLength": 0, "maxLength": 255 }, "action": { "type": "string", "minLength": 0, "maxLength": 255 } } }, "Operator": { "title": "Affected Operator", "type": "object", "properties": { "tocCode": { "title": "TOC Code", "type": "string", "pattern": "^[A-Z]{2}$", "minLength": 2, "maxLength": 2 }, "tocName": { "type": "string", "minLength": 0, "maxLength": 255 } } }, "Route": { "title": "Affected Route", "type": "object", "properties": { "routeDetails": { "type": "string", "minLength": 0, "maxLength": 255 }, "lineOfRoute": { "type": "string", "minLength": 0, "maxLength": 255 } } }, "DisruptionUrl": { "title": "Disruption Link", "type": "object", "properties": { "type": { "type": "string", "minLength": 0, "maxLength": 255 }, "uri": { "type": "string", "minLength": 0, "maxLength": 255 }, "label": { "type": "string", "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" } } } } } } }