{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/entur/main/json-schema/entur-seating-offer-debug-response-schema.json",
  "title": "SeatingOfferDebugResponse",
  "x-generated": "2026-10-09",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/entur-seating-manager-openapi.yml#/components/schemas/SeatingOfferDebugResponse",
  "required": [
    "capactiyOnly",
    "createdAt",
    "createdBy",
    "datedServiceJourneyId",
    "datedServiceJourneyVersion",
    "departureDateTime",
    "elements",
    "inactive",
    "lineId",
    "manualMaterial",
    "organisationId",
    "seatingOfferStatus",
    "serviceJourneyId",
    "stopPlaces",
    "transportType",
    "updatedBy"
  ],
  "type": "object",
  "properties": {
    "datedServiceJourneyId": {
      "type": "string",
      "description": "The netex id of the `datedServiceJourney`"
    },
    "datedServiceJourneyVersion": {
      "type": "integer",
      "description": "The version of the `datedServiceJourney`",
      "format": "int32"
    },
    "organisationId": {
      "type": "integer",
      "description": "The organisation id this seating offer is operated by.",
      "format": "int64"
    },
    "replacesNetexId": {
      "type": [
        "string",
        "null"
      ],
      "description": "Netex id for the previous material used for this seating offer. If `null` the material on this dated service journey has never been changed."
    },
    "seatingOfferStatus": {
      "type": "string",
      "description": "Describes the seating offer status",
      "enum": [
        "ACTIVE",
        "CANCELLED",
        "TO_BE_REPLACED",
        "REPLACED_MATERIAL",
        "REPLACED_DSJ",
        "SEAT_USAGES_DELETED",
        "REMOVED",
        "DEPRECATED",
        "REPLACED"
      ]
    },
    "serviceJourneyId": {
      "type": "string",
      "description": "The netex id of the `serviceJourney`"
    },
    "departureDateTime": {
      "type": "string",
      "description": "The time of departure from the first station.",
      "format": "date-time"
    },
    "lineId": {
      "type": "string",
      "description": "The netex id of the `line`"
    },
    "createdAt": {
      "type": "string",
      "description": "When this seating offer was initially created",
      "format": "date-time"
    },
    "createdBy": {
      "type": "integer",
      "description": "The organisation id this seating offer was created by.",
      "format": "int64"
    },
    "updatedAt": {
      "type": [
        "string",
        "null"
      ],
      "description": "The last time this seating offer was updated. If `null` the seating offer has not been updated",
      "format": "date-time"
    },
    "updatedBy": {
      "type": [
        "integer",
        "null"
      ],
      "description": "The organisation id that last updated this seating offer.",
      "format": "int64"
    },
    "inactive": {
      "type": "boolean",
      "description": "Whether this seating offer is closed for sale or not"
    },
    "manualMaterial": {
      "type": "boolean",
      "description": "Whether the material for this seating offer was set manually."
    },
    "capactiyOnly": {
      "type": "boolean",
      "description": "Whether the seating offer has real RollingStock material or is meant for capacity only."
    },
    "transportType": {
      "type": "string",
      "description": "The type of transport this seating offer is for.",
      "enum": [
        "BUS",
        "REPLACEMENT_BUS",
        "TRAIN",
        "FERRY",
        "OTHER"
      ]
    },
    "elements": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/ElementDebugResponse"
      }
    },
    "stopPlaces": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/StopPlaceWithTimesResponseV1"
      }
    }
  },
  "$defs": {
    "ElementDebugResponse": {
      "required": [
        "carriageIdentifier",
        "elementParts",
        "netexId",
        "seats",
        "series",
        "seriesVersion"
      ],
      "type": "object",
      "properties": {
        "series": {
          "type": "string",
          "description": "Rolling stock series of the corresponding element."
        },
        "seriesVersion": {
          "type": "integer",
          "description": "Rolling stock version of the corresponding element.",
          "format": "int32"
        },
        "carriageIdentifier": {
          "type": "string",
          "description": "Carriage identifier for the element in the train."
        },
        "netexId": {
          "type": "string",
          "description": "Netex id of the element."
        },
        "seatmapKey": {
          "type": [
            "string",
            "null"
          ],
          "description": "Seatmap key of the basic element. This can be used as a lookup in the seatmap service."
        },
        "elementParts": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ElementPartResponseV1"
          }
        },
        "seats": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SeatDebugResponse"
          }
        }
      }
    },
    "ElementPartResponseV1": {
      "required": [
        "destinationStopPlace",
        "direction",
        "materialCompositionNetexId",
        "originStopPlace",
        "sequenceNumber"
      ],
      "type": "object",
      "properties": {
        "originStopPlace": {
          "$ref": "#/$defs/StopPlaceWithTimesResponseV1"
        },
        "destinationStopPlace": {
          "$ref": "#/$defs/StopPlaceWithTimesResponseV1"
        },
        "materialCompositionNetexId": {
          "type": "string",
          "description": "Netex id for corresponding material composition."
        },
        "sequenceNumber": {
          "type": "integer",
          "description": "Sequence number of the element in this material composition.",
          "format": "int32"
        },
        "direction": {
          "type": "string",
          "description": "Direction of the element in this material composition.",
          "enum": [
            "FORWARDS",
            "BACKWARDS",
            "UNKNOWN"
          ]
        }
      },
      "description": "Information about one element in one material composition."
    },
    "SeatDebugResponse": {
      "required": [
        "column",
        "elementCarriageIdentifier",
        "properties",
        "row",
        "seatGroups",
        "seatNumber",
        "seatUsages"
      ],
      "type": "object",
      "properties": {
        "seatNumber": {
          "type": "string",
          "description": "The seat number of the seat."
        },
        "elementCarriageIdentifier": {
          "type": "string",
          "description": "The carriage identifier of the carriage containing the seat."
        },
        "row": {
          "type": [
            "integer",
            "null"
          ],
          "description": "The row in the carriage containing the seat.",
          "format": "int32"
        },
        "column": {
          "type": [
            "integer",
            "null"
          ],
          "description": "The column in the carriage containing the seat.",
          "format": "int32"
        },
        "properties": {
          "$ref": "#/$defs/SeatingPropertiesResponseV1"
        },
        "seatGroups": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SeatGroupDebugResponse"
          }
        },
        "seatUsages": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SeatUsageDebugResponse"
          }
        }
      }
    },
    "SeatGroupDebugResponse": {
      "required": [
        "name",
        "seatGroupType"
      ],
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the seat group."
        },
        "seatGroupType": {
          "type": "string",
          "description": "The type of the seat group.",
          "enum": [
            "OTHER",
            "TABLE_GROUP",
            "COMPARTMENT",
            "COMPANION"
          ]
        },
        "label": {
          "type": [
            "string",
            "null"
          ],
          "description": "The label of the seat group."
        }
      }
    },
    "SeatUsageDebugResponse": {
      "required": [
        "createdAt",
        "elementClosureReferences",
        "fromSequenceNumber",
        "seatNumberClosureReferences",
        "toSequenceNumber"
      ],
      "type": "object",
      "properties": {
        "fromSequenceNumber": {
          "type": "integer",
          "description": "The sequence nr of the stop place that this seat usage is from.",
          "format": "int32"
        },
        "toSequenceNumber": {
          "type": "integer",
          "description": "The sequence nr of the stop place that this seat usage is to.",
          "format": "int32"
        },
        "reservationLineReference": {
          "type": [
            "string",
            "null"
          ],
          "description": "The reference of the reservation line that has reserved this seat usage. Null if unreserved.",
          "format": "uuid"
        },
        "elementClosureReferences": {
          "type": "array",
          "description": "The references of element closures affecting this seat usage.",
          "items": {
            "type": "string",
            "description": "The references of element closures affecting this seat usage."
          }
        },
        "seatNumberClosureReferences": {
          "type": "array",
          "description": "The references of seat closures affecting this seat usage.",
          "items": {
            "type": "string",
            "description": "The references of seat closures affecting this seat usage."
          }
        },
        "createdAt": {
          "type": "string",
          "description": "When this seat usage was initially created.",
          "format": "date-time"
        },
        "updatedAt": {
          "type": [
            "string",
            "null"
          ],
          "description": "When this seat usage was las updated. Null if never updated after creation.",
          "format": "date-time"
        },
        "updatedBy": {
          "type": [
            "integer",
            "null"
          ],
          "description": "The organisation id that last updated this seat usage.",
          "format": "int64"
        }
      }
    },
    "SeatingPropertiesResponseV1": {
      "type": "object",
      "properties": {
        "fareClass": {
          "type": [
            "string",
            "null"
          ],
          "description": "Fare class of the seat. Netex enumeration.",
          "enum": [
            "UNKNOWN",
            "FIRST_CLASS",
            "SECOND_CLASS",
            "THIRD_CLASS",
            "PREFERENTE",
            "PREMIUM_CLASS",
            "BUSINESS_CLASS",
            "STANDARD_CLASS",
            "TURISTA",
            "ECONOMY_CLASS",
            "ANY"
          ]
        },
        "groupBooking": {
          "type": [
            "string",
            "null"
          ],
          "description": "Group booking permission of the seat. Netex enumeration.",
          "enum": [
            "GROUPS_ALLOWED",
            "GROUPS_NOT_ALLOWED",
            "GROUPS_ALLOWED_WITH_RESERVATION",
            "GROUP_BOOKINGS_RESTRICTED",
            "UNKNOWN"
          ]
        },
        "accommodationFacility": {
          "type": [
            "string",
            "null"
          ],
          "description": "Accommodation property of the seat. Netex enumeration.",
          "enum": [
            "UNKNOWN",
            "SEATING",
            "FOLDING_SEAT",
            "SLEEPER",
            "SINGLE_SLEEPER",
            "DOUBLE_SLEEPER",
            "SPECIAL_SLEEPER",
            "COUCHETTE",
            "SINGLE_COUCHETTE",
            "DOUBLE_COUCHETTE",
            "SPECIAL_SEATING",
            "RECLINING_SEATS",
            "BABY_COMPARTMENT",
            "FAMILY_CARRIAGE",
            "RECREATION_AREA",
            "PANORAMA_COACH",
            "PULLMAN_COACH",
            "PUSHCHAIR",
            "WHEELCHAIR",
            "STANDING"
          ]
        },
        "seatAttachment": {
          "type": [
            "string",
            "null"
          ],
          "description": "Attachment of the seat. Netex enumeration.",
          "enum": [
            "REVERSIBLE",
            "FIXED",
            "FOLDING",
            "REMOVABLE",
            "OTHER"
          ]
        },
        "seatPosition": {
          "type": [
            "string",
            "null"
          ],
          "description": "Position of the seat. Netex enumeration.",
          "enum": [
            "WINDOW",
            "AISLE",
            "MIDDLE",
            "UPPER_BERTH",
            "MIDDLE_BERTH",
            "LOWER_BERTH",
            "OTHER"
          ]
        },
        "relativeDirection": {
          "type": [
            "string",
            "null"
          ],
          "description": "Relative direction of the seat. Netex enumeration.",
          "enum": [
            "BOTH",
            "FORWARDS",
            "BACKWARDS"
          ]
        },
        "nuisanceFacilities": {
          "uniqueItems": true,
          "type": "array",
          "description": "Set of possible nuisance factors of the seat. Netex enumerations.",
          "items": {
            "type": "string",
            "description": "Set of possible nuisance factors of the seat. Netex enumerations.",
            "enum": [
              "UNKNOWN",
              "SMOKING",
              "NO_SMOKING",
              "FAMILY_AREA",
              "CHILDFREE_AREA",
              "ANIMALS_ALLOWED",
              "NO_ANIMALS",
              "BREASTFEEDING_FRIENDLY",
              "MOBILE_PHONE_USE_ZONE",
              "MOBILE_PHONE_FREE_ZONE"
            ]
          }
        },
        "passengerCommsFacilities": {
          "uniqueItems": true,
          "type": "array",
          "description": "Set of possible communication facilities available for passenger in the seat. Netex enumerations.",
          "items": {
            "type": "string",
            "description": "Set of possible communication facilities available for passenger in the seat. Netex enumerations.",
            "enum": [
              "UNKNOWN",
              "FREE_WIFI",
              "PUBLIC_WIFI",
              "POWER_SUPPLY_SOCKETS",
              "TELEPHONE",
              "AUDIO_ENTERTAINMENT",
              "VIDEO_ENTERTAINMENT",
              "BUSINESS_SERVICES",
              "INTERNET",
              "POST_OFFICE",
              "POST_BOX"
            ]
          }
        },
        "sanitaryFacilities": {
          "uniqueItems": true,
          "type": "array",
          "description": "Set of possible sanitary facilities available for passenger in the seat. Netex enumerations.",
          "items": {
            "type": "string",
            "description": "Set of possible sanitary facilities available for passenger in the seat. Netex enumerations.",
            "enum": [
              "NONE",
              "TOILET",
              "WHEELCHAIR_ACCESS_TOILET",
              "SHOWER",
              "WASHING_AND_CHANGE_FACILITIES",
              "BABY_CHANGE",
              "WHEELCHAIR_BABY_CHANGE",
              "SHOE_SHINER",
              "OTHER"
            ]
          }
        },
        "mobilityFacilities": {
          "uniqueItems": true,
          "type": "array",
          "description": "Set of possible mobility facilities available for passenger in the seat. Netex enumerations.",
          "items": {
            "type": "string",
            "description": "Set of possible mobility facilities available for passenger in the seat. Netex enumerations.",
            "enum": [
              "UNKNOWN",
              "LOW_FLOOR",
              "STEP_FREE_ACCESS",
              "SUITABLE_FOR_PUSHCHAIRS",
              "SUITABLE_FOR_WHEELCHAIRS",
              "SUITABLE_FOR_HEAVILIY_DISABLED",
              "BOARDING_ASSISTANCE",
              "ONBOARD_ASSISTANCE",
              "UNACCOMPANIED_MINOR_ASSISTANCE",
              "TACTILE_PLATFORM_EDGES",
              "TACTILE_GUIDING_STRIPS"
            ]
          }
        },
        "baggageType": {
          "uniqueItems": true,
          "type": "array",
          "description": "Set of possible baggage types possible for passenger in the seat. Netex enumerations.",
          "items": {
            "type": "string",
            "description": "Set of possible baggage types possible for passenger in the seat. Netex enumerations.",
            "enum": [
              "HANDBAG",
              "HAND_LUGGAGE",
              "SMALL_SUITCASE",
              "SUITCASE",
              "TRUNK",
              "OVERSIZE_ITEM",
              "BICYCLE",
              "MOTORCYCLE",
              "SPORTING_EQUIPMENT",
              "SKIS",
              "MUSICAL_INSTRUMENT",
              "PUSH_CHAIR",
              "WHEELCHAIR",
              "MOTORIZED_WHEELCHAIR",
              "LARGE_MOTORIZED_WHEELCHAIR",
              "SMALL_ANIMAL",
              "ANIMAL",
              "GAME",
              "OTHER"
            ]
          }
        }
      },
      "description": "Properties of a seat. They describe both physical and logical properties of a seat.Physical properties are for example position of the seat.Logical properties describe properties that the operator use when selling the seat. For example fare class."
    },
    "StopPlaceWithTimesResponseV1": {
      "required": [
        "arrivalDateTime",
        "departureDateTime",
        "nsrCode",
        "sequenceNr"
      ],
      "type": "object",
      "properties": {
        "nsrCode": {
          "type": "string",
          "description": "Stop Place id defined by National StopPlace registry."
        },
        "departureDateTime": {
          "type": "string",
          "description": "Time of departure from this stop. Set to time of arrival on last stop.",
          "format": "date-time"
        },
        "arrivalDateTime": {
          "type": "string",
          "description": "Time of arrival on this stop. Set to time of departure on first stop.",
          "format": "date-time"
        },
        "sequenceNr": {
          "type": "integer",
          "description": "The ordering of the station in the journey.",
          "format": "int32"
        }
      },
      "description": "Destination stop place for this element in this material composition."
    }
  }
}