{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/digitraffic-fi/json-schema/digitraffic-fi-passenger-information-messages-schema.json",
  "title": "PassengerInformationMessages",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/digitraffic-fi-passenger-information-api-openapi.yml#/components/schemas/PassengerInformationMessages",
  "type": "array",
  "items": {
    "$ref": "#/$defs/PassengerInformationMessage"
  },
  "$defs": {
    "PassengerInformationAudio": {
      "type": "object",
      "properties": {
        "text": {
          "$ref": "#/$defs/PassengerInformationTextContent"
        },
        "deliveryRules": {
          "type": "object",
          "properties": {
            "startDateTime": {
              "type": "string",
              "description": "Audio delivery start date"
            },
            "weekDays": {
              "type": "array",
              "description": "Days of week on which audio is delivered",
              "items": {
                "type": "string",
                "enum": [
                  "MONDAY",
                  "TUESDAY",
                  "WEDNESDAY",
                  "THURSDAY",
                  "FRIDAY",
                  "SATURDAY",
                  "SUNDAY"
                ]
              }
            },
            "deliveryType": {
              "type": "string",
              "description": "NOW: the message is delivered at the time of insertion \n DELIVERY_AT: the message is delivered on the date-time _deliveryAt_ \n REPEAT_EVERY: the message is delivered from _startDateTime_ at _startTime_ to _endDateTime_ at _endTime_ evaluating the repetition conditions and _weekDays_ conditions \n ON_SCHEDULE: the message is delivered for a specific vehicle journey when a scheduling date happens at a station (e.g. estimated arrival time) \n ON_EVENT: the message is delivered for a vehicle journey when an event specified in _eventType_ (e.g. ARRIVING) happens for a station defined in _stations_",
              "enum": [
                "NOW",
                "DELIVERY_AT",
                "REPEAT_EVERY",
                "ON_EVENT",
                "ON_SCHEDULE"
              ]
            },
            "startTime": {
              "type": "string",
              "description": "Audio delivery start time"
            },
            "deliveryAt": {
              "type": "string",
              "description": "Date and time on which message is delivered when _deliveryType_ is DELIVERY_AT"
            },
            "repeatEvery": {
              "type": "integer",
              "description": "Period of time in minutes between repetitions of message when  _deliveryType_ is REPEAT_EVERY"
            },
            "endTime": {
              "type": "string",
              "description": "Audio delivery end time"
            },
            "eventType": {
              "type": "string",
              "description": "Event type on which message is delivered when _deliveryType_ is ON_EVENT",
              "enum": [
                "ARRIVING",
                "DEPARTING"
              ]
            },
            "endDateTime": {
              "type": "string",
              "description": "Audio delivery end date"
            },
            "repetitions": {
              "type": "integer",
              "description": "Number of times message is repeated on each occurrence when  _deliveryType_ is REPEAT_EVERY"
            }
          }
        }
      },
      "description": "PassengerInformation message audio content schema"
    },
    "PassengerInformationMessage": {
      "required": [
        "creationDateTime",
        "endValidity",
        "id",
        "startValidity",
        "version"
      ],
      "type": "object",
      "properties": {
        "trainDepartureDate": {
          "type": "string",
          "description": "Date of departure as a local date for train to which message relates"
        },
        "endValidity": {
          "type": "string",
          "description": "Message validity end date and time"
        },
        "startValidity": {
          "type": "string",
          "description": "Message validity start date and time"
        },
        "id": {
          "type": "string"
        },
        "stations": {
          "type": "array",
          "description": "List of stations where message is delivered",
          "items": {
            "type": "string"
          }
        },
        "trainNumber": {
          "type": "string",
          "description": "Number of train to which message relates"
        },
        "audio": {
          "$ref": "#/$defs/PassengerInformationAudio"
        },
        "video": {
          "$ref": "#/$defs/PassengerInformationVideo"
        },
        "version": {
          "type": "number"
        },
        "creationDateTime": {
          "type": "string",
          "description": "Date and time when message version was created"
        }
      },
      "description": "PassengerInformation message schema"
    },
    "PassengerInformationTextContent": {
      "type": "object",
      "properties": {
        "fi": {
          "type": "string",
          "description": "Message text content in Finnish"
        },
        "sv": {
          "type": "string",
          "description": "Message text content in Swedish"
        },
        "en": {
          "type": "string",
          "description": "Message text content in English"
        }
      },
      "description": "PassengerInformation message text content schema"
    },
    "PassengerInformationVideo": {
      "type": "object",
      "properties": {
        "text": {
          "$ref": "#/$defs/PassengerInformationTextContent"
        },
        "deliveryRules": {
          "type": "object",
          "properties": {
            "startDateTime": {
              "type": "string",
              "description": "Video delivery start date"
            },
            "weekDays": {
              "type": "array",
              "description": "Days of week on which video is delivered",
              "items": {
                "type": "string",
                "enum": [
                  "MONDAY",
                  "TUESDAY",
                  "WEDNESDAY",
                  "THURSDAY",
                  "FRIDAY",
                  "SATURDAY",
                  "SUNDAY"
                ]
              }
            },
            "deliveryType": {
              "type": "string",
              "description": "CONTINUOS_VISUALIZATION: the message is delivered from _startDateTime_ (at _startTime_ if exists) to _endDateTime_ (at _endTime_ if exists) \n WHEN: the message is delivered  from  _startDateTime_ to _endDateTime_ only in the time interval between _startTime_ and _endTime_ for each day in _weekDays_",
              "enum": [
                "WHEN",
                "CONTINUOS_VISUALIZATION"
              ]
            },
            "startTime": {
              "type": "string",
              "description": "Video delivery start time"
            },
            "endTime": {
              "type": "string",
              "description": "Video delivery end time"
            },
            "endDateTime": {
              "type": "string",
              "description": "Video delivery end date"
            }
          }
        }
      },
      "description": "PassengerInformation message video content schema"
    }
  }
}