Digitraffic (Fintraffic) · Schema
Train
TransportationOpen DataGovernmentTrafficRailwaysMaritimeRoadsFinlandReal-Time
Properties
| Name | Type | Description |
|---|---|---|
| trainNumber | integer | Identifies the train inside a single departure date |
| departureDate | string | Date of the train's first departure |
| operatorUICCode | integer | Official UIC code of the operator |
| operatorShortCode | string | Short code of the operator |
| trainType | string | |
| trainCategory | string | |
| commuterLineID | string | |
| runningCurrently | boolean | Is the train running currently or does it have actual times |
| cancelled | boolean | Is the train wholly cancelled |
| deleted | boolean | Is the train deleted which means cancelled 10 days before its departure date |
| version | integer | When was train last modified |
| timetableType | string | Is the train ADHOC or REGULAR. REGULAR trains are run for example every monday, ADHOC trains are one-time trains |
| timetableAcceptanceDate | string | When was this train accepted to run on Finnish railways by the FTA |
| timeTableRows | array |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/digitraffic-fi/json-schema/digitraffic-fi-train-schema.json",
"title": "Train",
"x-generated": "2026-11-11",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/digitraffic-fi-rail-api-openapi.yml#/components/schemas/Train",
"required": [
"departureDate",
"trainNumber"
],
"type": "object",
"properties": {
"trainNumber": {
"type": "integer",
"description": "Identifies the train inside a single departure date",
"format": "int64"
},
"departureDate": {
"type": "string",
"description": "Date of the train's first departure",
"format": "date"
},
"operatorUICCode": {
"type": "integer",
"description": "Official UIC code of the operator",
"format": "int32"
},
"operatorShortCode": {
"type": "string",
"description": "Short code of the operator"
},
"trainType": {
"type": "string"
},
"trainCategory": {
"type": "string"
},
"commuterLineID": {
"type": "string"
},
"runningCurrently": {
"type": "boolean",
"description": "Is the train running currently or does it have actual times"
},
"cancelled": {
"type": "boolean",
"description": "Is the train wholly cancelled"
},
"deleted": {
"type": "boolean",
"description": "Is the train deleted which means cancelled 10 days before its departure date"
},
"version": {
"type": "integer",
"description": "When was train last modified",
"format": "int64"
},
"timetableType": {
"type": "string",
"description": "Is the train ADHOC or REGULAR. REGULAR trains are run for example every monday, ADHOC trains are one-time trains",
"enum": [
"REGULAR",
"ADHOC"
]
},
"timetableAcceptanceDate": {
"type": "string",
"description": "When was this train accepted to run on Finnish railways by the FTA",
"format": "date-time"
},
"timeTableRows": {
"type": "array",
"items": {
"$ref": "#/$defs/TimeTableRow"
}
}
},
"$defs": {
"Cause": {
"title": "Cause",
"required": [
"categoryCode",
"categoryName",
"validFrom"
],
"type": "object",
"properties": {
"passengerTerm": {
"$ref": "#/$defs/PassengerTerm"
},
"categoryCode": {
"type": "string",
"description": "Official code"
},
"categoryName": {
"type": "string",
"description": "Official name"
},
"validFrom": {
"type": "string",
"description": "Start date when this category code is used",
"format": "date"
},
"validTo": {
"type": "string",
"description": "End date when this code is used. Empty means category is used until further notice",
"format": "date"
},
"id": {
"type": "integer",
"format": "int32"
},
"detailedCategoryCode": {
"type": "string"
},
"detailedCategoryName": {
"type": "string"
},
"thirdCategoryCode": {
"type": "string"
},
"thirdCategoryName": {
"type": "string"
},
"description": {
"type": "string",
"description": "Detailed description"
},
"categoryCodeId": {
"type": "integer",
"format": "int32"
},
"detailedCategoryCodeId": {
"type": "integer",
"format": "int32"
},
"thirdCategoryCodeId": {
"type": "integer",
"format": "int32"
}
},
"description": "Details why a train is not on schedule. Train-responses only have ids and codes populated."
},
"PassengerTerm": {
"title": "PassengerTerm",
"type": "object",
"properties": {
"fi": {
"type": "string",
"description": "Finnish passenger friendly term for the code"
},
"en": {
"type": "string",
"description": "English passenger friendly term for the code"
},
"sv": {
"type": "string",
"description": "Swedish passenger friendly term for the code"
}
}
},
"TimeTableRow": {
"title": "TimeTableRow",
"required": [
"scheduledTime",
"type"
],
"type": "object",
"properties": {
"stationShortCode": {
"type": "string"
},
"stationUICCode": {
"type": "integer",
"format": "int32"
},
"countryCode": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"ARRIVAL",
"DEPARTURE"
]
},
"trainStopping": {
"type": "boolean",
"description": "Does the train actual stop on the station"
},
"commercialStop": {
"type": [
"boolean",
"null"
],
"description": "Is the stop 'commercial' ie. loading/unloading of passengers or cargo"
},
"cancelled": {
"type": "boolean",
"description": "Is the schedule part cancelled"
},
"scheduledTime": {
"type": "string",
"description": "Scheduled time for departure/arrival of the train",
"format": "date-time"
},
"estimateSource": {
"type": "string",
"description": "Source for the estimate",
"enum": [
"LIIKE_USER",
"MIKU_USER",
"LIIKE_AUTOMATIC",
"UNKNOWN",
"COMBOCALC"
]
},
"unknownDelay": {
"type": [
"boolean",
"null"
],
"description": "Set if the train is delayed, but it is impossible to estimate for how long"
},
"unknownTrack": {
"type": [
"boolean",
"null"
],
"description": "Set if the track is not known"
},
"actualTime": {
"type": [
"string",
"null"
],
"description": "Actual time when train departured or arrived on the station",
"format": "date-time"
},
"differenceInMinutes": {
"type": "integer",
"description": "Difference between schedule and actual time in minutes",
"format": "int64"
},
"causes": {
"uniqueItems": true,
"type": "array",
"items": {
"$ref": "#/$defs/Cause"
}
},
"stopSector": {
"type": [
"string",
"null"
]
},
"commercialTrack": {
"type": "string",
"description": "Track where the train stops"
},
"liveEstimateTime": {
"type": "string",
"description": "Estimated time for departure/arrival of the train",
"format": "date-time"
},
"trainReady": {
"$ref": "#/$defs/TrainReady"
}
},
"description": "A part of train's schedule"
},
"TrainReady": {
"title": "TrainReady",
"type": "object",
"properties": {
"source": {
"type": "string",
"description": "How was the permission given",
"enum": [
"PHONE",
"LIIKE",
"UNKNOWN",
"KUPLA"
]
},
"accepted": {
"type": "boolean",
"description": "Was the permission given"
},
"timestamp": {
"type": "string",
"description": "When was the permission given",
"format": "date-time"
}
},
"description": "Operator has to ask permission (=TrainReady) to leave certain stations"
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/digitraffic-fi-train"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.