openapi: 3.0.1
info:
  title: Aviation Data Hub API - Container Vertical
  description: Aviation Data Hub acts as a central data repository for all functions, which affect the efficient functioning of an airport. Data can be ingested from various sources via standardized interfaces. The way of getting data out of it is similar; there are standardized REST and MQTT interfaces to fetch the data. The data structure is based on industry standards such as IATA's AIDM and ACI's ACRIS combined with decades of Siemens Logistics industry knowledge.
  contact:
    name: Siemens Logistics GmbH
    url: https://www.siemens-logistics.com
    email: adh-devportal@siemens-logistics.com
  license:
    name: Property of Siemens Logistics GmbH
  version: 20.2.0
tags:
  - name: Container Tag Store
    externalDocs:
      description: The container tag store contains methods to access and insert or modify container tag data.
      url: https://devportal.aviationdatahub.siemens.cloud/en/container-vertical/overview
paths:
  /containertags:
    get:
      tags:
        - Container Tag Store
      summary: Query container tags based on given search criteria.
      description: If no query parameter is set the search will be reduced to the last 24 hours. If no maxResult is set a maximum of 1000 records will be returned.
      operationId: queryContainertags
      parameters:
        - name: tag
          in: query
          description: The tag number of the container tag.
          required: false
          schema:
            type: string
        - name: carrier
          in: query
          description: Iata code of the operating carrier. 2-digit code is expected.
          required: false
          schema:
            type: string
        - name: flight-number
          in: query
          description: The (numeric) flight number of operating airline.
          required: false
          schema:
            type: string
        - name: operational-suffix
          in: query
          description: Operational suffix of flight segment. Used to distinguish two flights having the same flight number and departing from their respective origin stations on the same date.
          required: false
          schema:
            type: string
        - name: origin-date
          in: query
          description: The day of operation, i.e. local day of schedule off-block time in UTC at first departure airport of flight.
          required: false
          schema:
            type: string
        - name: origin-iata-code
          in: query
          description: The iata code of an airport as origin airport of a flight leg the container is booked on.
          required: false
          schema:
            type: string
        - name: destination-iata-code
          in: query
          description: The iata code of an airport as destination airport of a flight leg the container is booked on.
          required: false
          schema:
            type: string
        - name: created-from
          in: query
          description: "Object creation time by ADH: the start point of the interval in UTC (included). e.g. 2020-01-31T12:30:00.000Z."
          required: false
          schema:
            type: string
        - name: created-to
          in: query
          description: "Object creation time by ADH: the end point of the interval in UTC (excluded). e.g. 2020-01-31T12:30:00.000Z."
          required: false
          schema:
            type: string
        - name: updated-from
          in: query
          description: "Last object modification time by ADH: the start point of the interval in UTC (included). e.g. 2020-01-31T12:30:00.000Z."
          required: false
          schema:
            type: string
        - name: updated-to
          in: query
          description: "Last object modification time by ADH: the end point of the interval in UTC (excluded). e.g. 2020-01-31T12:30:00.000Z."
          required: false
          schema:
            type: string
        - name: secondary-identifier
          in: query
          description: A secondary identifier given to the container tag.
          required: false
          schema:
            type: string
        - name: tag-id
          in: query
          description: The unique tag-id provided by adh.
          required: false
          schema:
            type: string
        - name: max-results
          in: query
          description: The maximum number of results.
          required: false
          schema:
            type: integer
            format: int32
      responses:
        "200":
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ContainerTag"
        "400":
          description: "Bad Request: e.g. invalid parameter."
          content:
            application/json: {}
        "401":
          description: "Unauthorized: please login first."
        "403":
          description: "Forbidden: not allowed to perform this request."
  /containertags/events:
    get:
      tags:
        - Container Tag Store
      summary: Query container events based on given search criteria.
      description: If no query parameter is set the search will be reduced to the last 24 hours. If no maxResult is set a maximum of 1000 records will be returned.
      operationId: queryContainerEvents
      parameters:
        - name: tag
          in: query
          description: The tag number of the container tag.
          required: false
          schema:
            type: string
        - name: from
          in: query
          description: The start point of the interval in UTC. e.g. 2020-01-31T12:30:00.000Z. If used the from and the to parameter has to be set.
          required: false
          schema:
            type: string
        - name: to
          in: query
          description: The end point of the interval in UTC. e.g. 2020-01-31T12:30:00.000Z. If used the from and the to parameter has to be set.
          required: false
          schema:
            type: string
        - name: carrier
          in: query
          description: IATA code of the operating carrier.
          required: false
          schema:
            type: string
        - name: Flight-number
          in: query
          description: The (numeric part of) flight number of operating airline.
          required: false
          schema:
            type: string
        - name: operational-suffix
          in: query
          description: Used to distinguish two flights having the same flight number and departing from their respective Origin Stations on the same date.
          required: false
          schema:
            type: string
        - name: origin-date
          in: query
          description: The day of operation, i.e. local day of schedule off-block time in UTC at first departure airport of flight. e.g. 2020-01-31T12:30:00.000Z.
          required: false
          schema:
            type: string
        - name: origin-iata-code
          in: query
          description: The IATA code of the departure airport.
          required: false
          schema:
            type: string
        - name: destination-iata-code
          in: query
          description: The IATA code of the arrival airport.
          required: false
          schema:
            type: string
        - name: event-type
          in: query
          description: "The event type: "
          required: false
          schema:
            enum:
              - CONTAINERIZATION
              - MOVEMENT
              - REGISTRATION
              - SECURITY
              - STORAGE
        - name: event-function
          in: query
          description: "The event function: "
          required: false
          schema:
            enum:
              - LOAD
              - OFFLOAD
              - REMOVE
              - ACQUIRE
              - TRACK
              - DELIVER
              - REGISTER
              - SCREEN
              - CLOSE
              - OPEN
              - SEAL
              - UNSEAL
              - RECEIPT
              - PUT_AWAY
              - WITHDRAW
        - name: secondary-identifier
          in: query
          description: A secondary identifier given to the container tag.
          required: false
          schema:
            type: string
        - name: tag-id
          in: query
          description: One or more bag-tag-ids. If searching for events of a bagTag pass in bag-tag-id and all merged-bag-tag-id to find all events, even merged ones.
          required: false
          schema:
            type: array
            items:
              type: string
        - name: location
          in: query
          description: Location of the event to search for.
          required: false
          schema:
            type: string
        - name: source
          in: query
          description: Source of the event to search for.
          required: false
          schema:
            type: string
        - name: max-results
          in: query
          description: The maximum number of results.
          required: false
          schema:
            type: integer
            format: int32
      responses:
        "200":
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ContainerEvent"
        "400":
          description: "Bad Request: e.g. invalid parameter."
          content:
            application/json: {}
        "401":
          description: "Unauthorized: please login first."
        "403":
          description: "Forbidden: not allowed to perform this request."
  /containertags/{id}/events:
    get:
      tags:
        - Container Tag Store
      summary: Query container events based on given search criteria.
      description: If no query parameter is set the search will be reduced to the last 24 hours. If no maxResult is set a maximum of 1000 records will be returned.
      operationId: queryContainerEventsForContainerTag
      parameters:
        - name: id
          in: path
          description: The unique container tag-id provided by adh.
          required: true
          schema:
            type: string
        - name: tag
          in: query
          description: The tag number of the container tag.
          required: false
          schema:
            type: string
        - name: from
          in: query
          description: The start point of the interval in UTC. e.g. 2020-01-31T12:30:00.000Z. If used the from and the to parameter has to be set.
          required: false
          schema:
            type: string
        - name: to
          in: query
          description: The end point of the interval in UTC. e.g. 2020-01-31T12:30:00.000Z. If used the from and the to parameter has to be set.
          required: false
          schema:
            type: string
        - name: carrier
          in: query
          description: IATA code of the operating carrierv.
          required: false
          schema:
            type: string
        - name: flight-number
          in: query
          description: The (numeric part of) flight number of operating airlinev.
          required: false
          schema:
            type: string
        - name: operational-suffix
          in: query
          description: Used to distinguish two flights having the same flight number and departing from their respective Origin Stations on the same date.
          required: false
          schema:
            type: string
        - name: origin-date
          in: query
          description: The day of operation, i.e. local day of schedule off-block time in UTC at first departure airport of flight. e.g. 2020-01-31T12:30:00.000Z.
          required: false
          schema:
            type: string
        - name: origin-iata-code
          in: query
          description: The IATA code of the departure airport.
          required: false
          schema:
            type: string
        - name: destination-iata-code
          in: query
          description: The IATA code of the arrival airport.
          required: false
          schema:
            type: string
        - name: event-type
          in: query
          description: "The event type: "
          required: false
          schema:
            enum:
              - CONTAINERIZATION
              - MOVEMENT
              - REGISTRATION
              - SECURITY
              - STORAGE
        - name: event-function
          in: query
          description: "The event function: "
          required: false
          schema:
            enum:
              - LOAD
              - OFFLOAD
              - REMOVE
              - ACQUIRE
              - TRACK
              - DELIVER
              - REGISTER
              - SCREEN
              - CLOSE
              - OPEN
              - SEAL
              - UNSEAL
              - RECEIPT
              - PUT_AWAY
              - WITHDRAW
        - name: secondary-identifier
          in: query
          description: A secondary identifier given to the container tag.
          required: false
          schema:
            type: string
        - name: location
          in: query
          description: Location of the event to search for.
          required: false
          schema:
            type: string
        - name: source
          in: query
          description: Source of the event to search for.
          required: false
          schema:
            type: string
        - name: max-results
          in: query
          description: The maximum number of results.
          required: false
          schema:
            type: integer
            format: int32
      responses:
        "200":
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ContainerEvent"
        "400":
          description: "Bad Request: e.g. invalid parameter."
          content:
            application/json: {}
        "401":
          description: "Unauthorized: please login first."
        "403":
          description: "Forbidden: not allowed to perform this request."
  /containertags/events/containerization:
    post:
      tags:
        - Container Tag Store
      summary: Post a container containerization event.
      description: Transfers a container containerization event to ADH. This may change the state of the container tag. New data is processed asynchronously and may need some time to be updated.
      operationId: postContainerContainerizationEvent
      requestBody:
        description: A ContainerContainerizationEvent JSON structure.
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ContainerContainerizationEvent"
        required: true
      responses:
        "200":
          description: default response
        "400":
          description: "Bad Request: e.g. invalid parameter."
          content:
            application/json: {}
        "401":
          description: "Unauthorized: please login first."
        "403":
          description: "Forbidden: not allowed to perform this request."
  /containertags/events/movement:
    post:
      tags:
        - Container Tag Store
      summary: Post a container movement event.
      description: Transfers a container movement event to ADH. This may change the state of the container tag. New data is processed asynchronously and may need some time to be updated.
      operationId: postContainerMovementEvent
      requestBody:
        description: A ContainerMovementEvent JSON structure.
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ContainerMovementEvent"
        required: true
      responses:
        "200":
          description: default response
        "400":
          description: "Bad Request: e.g. invalid parameter."
          content:
            application/json: {}
        "401":
          description: "Unauthorized: please login first."
        "403":
          description: "Forbidden: not allowed to perform this request."
  /containertags/events/registration:
    post:
      tags:
        - Container Tag Store
      summary: Post a container registration event.
      description: Transfers a container registration event to ADH. This may change the state of the container tag. New data is processed asynchronously and may need some time to be updated.
      operationId: postContainerRegistrationEvent
      requestBody:
        description: A ContainerRegistrationEvent JSON structure.
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ContainerRegistrationEvent"
        required: true
      responses:
        "200":
          description: default response
        "400":
          description: "Bad Request: e.g. invalid parameter."
          content:
            application/json: {}
        "401":
          description: "Unauthorized: please login first."
        "403":
          description: "Forbidden: not allowed to perform this request."
  /containertags/events/security:
    post:
      tags:
        - Container Tag Store
      summary: Post a container security event.
      description: Transfers a container security event to ADH. This may change the state of the container tag. New data is processed asynchronously and may need some time to be updated.
      operationId: postContainerSecurityEvent
      requestBody:
        description: A ContainerSecurityEvent JSON structure.
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ContainerSecurityEvent"
        required: true
      responses:
        "200":
          description: default response
        "400":
          description: "Bad Request: e.g. invalid parameter."
          content:
            application/json: {}
        "401":
          description: "Unauthorized: please login first."
        "403":
          description: "Forbidden: not allowed to perform this request."
  /containertags/events/storage:
    post:
      tags:
        - Container Tag Store
      summary: Post a container storage event.
      description: Transfers a container storage event to ADH. This may change the state of the container tag. New data is processed asynchronously and may need some time to be updated.
      operationId: postContainerStorageEvent
      requestBody:
        description: A ContainerStorageEvent JSON structure.
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ContainerStorageEvent"
        required: true
      responses:
        "200":
          description: default response
        "400":
          description: "Bad Request: e.g. invalid parameter."
          content:
            application/json: {}
        "401":
          description: "Unauthorized: please login first."
        "403":
          description: "Forbidden: not allowed to perform this request."
  /containertags/{id}:
    get:
      tags:
        - Container Tag Store
      summary: Query bag tag by unique bag-tag-id provided by adh.
      description: In case of merged bag tags, the bag-tag where it is merged to is returned.
      operationId: getContainerTagREST
      parameters:
        - name: id
          in: path
          description: The unique container tag-id provided by adh.
          required: true
          schema:
            type: string
      responses:
        "200":
          description: "Ok: Default response."
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ContainerTag"
        "400":
          description: "Bad Request: e.g. invalid parameter."
          content:
            application/json: {}
        "401":
          description: "Unauthorized: please login first."
        "403":
          description: "Forbidden: not allowed to perform this request."
        "404":
          description: "Not Found: container tag with given id not found."
components:
  schemas:
    AircraftCompartment:
      type: object
      properties:
        hold:
          type: string
        compartment:
          type: string
      description: Compartment and hold of container in aircraft. .
    ContainerContainerizationActivity:
      required:
        - function
        - source
        - timestamp
        - type
      type: object
      properties:
        type:
          type: string
          description: Type of activity, must match the type defined for the concrete subclass.
          enum:
            - CONTAINERIZATION
        timestamp:
          type: string
          description: Timestamp of event in UTC.
          format: date-time
        location:
          type: string
          description: Location id of event.
          example: TRA_14
        source:
          type: string
          description: System generating the event.
          example: TRA Scanner 12
        function:
          type: string
          description: Containerization function.
          enum:
            - LOAD
            - OFFLOAD
            - REMOVE
        aircraft-compartment:
          $ref: "#/components/schemas/AircraftCompartment"
        load-position:
          type: string
          description: Position of container in within compartment of aircraft.
          example: L2
      description: Entity for Container Containerization Business Activities.
    ContainerContainerizationEvent:
      required:
        - activity
        - event-type
        - segments
        - tag
      type: object
      description: Entity for Container Containerization Business Events.
      allOf:
        - $ref: "#/components/schemas/ContainerEvent"
        - type: object
          properties:
            event-type:
              type: string
              description: Type of event for the concrete subclass.
              enum:
                - CONTAINERIZATION
            activity:
              $ref: "#/components/schemas/ContainerContainerizationActivity"
    ContainerActivity:
      required:
        - source
        - timestamp
        - type
      type: object
      properties:
        type:
          type: string
          description: Type of activity, must match the type defined for the concrete subclass.
        timestamp:
          type: string
          description: Timestamp of event in UTC.
          format: date-time
        location:
          type: string
          description: Location id of event.
          example: TRA_14
        source:
          type: string
          description: System generating the event.
          example: TRA Scanner 12
      description: Details on a specific container activity on a container segment.
      discriminator:
        propertyName: type
        mapping:
          REGISTRATION: "#/components/schemas/ContainerRegistrationActivity"
          SECURITY: "#/components/schemas/ContainerSecurityActivity"
          MOVEMENT: "#/components/schemas/ContainerMovementActivity"
          STORAGE: "#/components/schemas/ContainerStorageActivity"
          CONTAINERIZATION: "#/components/schemas/ContainerContainerizationActivity"
      oneOf:
        - $ref: "#/components/schemas/ContainerRegistrationActivity"
        - $ref: "#/components/schemas/ContainerSecurityActivity"
        - $ref: "#/components/schemas/ContainerMovementActivity"
        - $ref: "#/components/schemas/ContainerStorageActivity"
        - $ref: "#/components/schemas/ContainerContainerizationActivity"
    ContainerEvent:
      required:
        - activity
        - event-type
        - segments
        - tag
      type: object
      properties:
        meta:
          $ref: "#/components/schemas/ContainerEventMeta"
        event-type:
          type: string
          description: Type of event, must match the type defined for the concrete subclass.
        tag-id:
          type: string
          description: Unique id for the container journey/usage for an unlimited period of time.
          example: EFGH-5678
        tag:
          type: string
          description: Tag number of the container for the current journey/usage .
          example: AKE12345678
        secondary-identifiers:
          uniqueItems: true
          type: array
          description: Additionally identifiers for the container journey/usage used by airports etc.
          items:
            $ref: "#/components/schemas/SecondaryIdentifier"
        segments:
          type: array
          description: Flight segment(s) for which the event occurred.
          items:
            $ref: "#/components/schemas/ContainerEventSegment"
        activity:
          $ref: "#/components/schemas/ContainerActivity"
      description: Entity for Container Business Events. Use concrete subclass.
      discriminator:
        propertyName: event-type
    ContainerEventMeta:
      type: object
      properties:
        created-at:
          type: string
          description: Timestamp when event was first created in DH, in case of REST call, the timestamp of REST call, in case iof entry be MQTT, first processing in DH.
          format: date-time
          readOnly: true
        created-by:
          $ref: "#/components/schemas/User"
        modified-count:
          type: integer
          description: Number of modifications in DH. Not set if never modified.
          format: int64
          readOnly: true
        modified-at:
          type: string
          description: Timestamp of last modification in DH, for Events this is the timestamp when enrichment was added, not set otherwise.
          format: date-time
          readOnly: true
        tag-id:
          type: string
          description: Unique id of the container tag in the data hub for an unlimited period of time.
          example: EFGH-5678
      description: Metadata added by ADH to events.
      readOnly: true
    ContainerEventSegment:
      required:
        - identifier
      type: object
      properties:
        sequence-number:
          type: integer
          description: Sequence number of segment.
          format: int32
        identifier:
          $ref: "#/components/schemas/FlightSegmentIdentifier"
      description: Description of container segment. For use in container events.
    ContainerMovementEvent:
      required:
        - activity
        - event-type
        - segments
        - tag
      type: object
      description: Entity for CONTAINER Movement Business Events.
      allOf:
        - $ref: "#/components/schemas/ContainerEvent"
        - type: object
          properties:
            event-type:
              type: string
              description: Type of event for the concrete subclass.
              enum:
                - MOVEMENT
            activity:
              $ref: "#/components/schemas/ContainerMovementActivity"
    ContainerRegistrationEvent:
      required:
        - activity
        - event-type
        - segments
        - tag
      type: object
      description: Entity for Container Registration Business Events.
      allOf:
        - $ref: "#/components/schemas/ContainerEvent"
        - type: object
          properties:
            event-type:
              type: string
              description: Type of event for the concrete subclass.
              enum:
                - REGISTRATION
            activity:
              $ref: "#/components/schemas/ContainerRegistrationActivity"
    ContainerRegistrationActivity:
      required:
        - function
        - source
        - timestamp
        - type
      type: object
      properties:
        type:
          type: string
          description: Type of activity, must match the type defined for the concrete subclass.
          enum:
            - REGISTRATION
        timestamp:
          type: string
          description: Timestamp of event in UTC.
          format: date-time
        location:
          type: string
          description: Location id of event.
          example: TRA_14
        source:
          type: string
          description: System generating the event.
          example: TRA Scanner 12
        function:
          type: string
          description: Registration function.
          enum:
            - REGISTER
        container-number:
          type: string
          description: Static unique identifier printed on the container.
        container-type:
          type: string
          description: Container type identifier
          example: ULD
        container-subtype:
          type: string
          description: Container subtype identifier
          example: AKE
        commodity-code:
          type: string
          description: Commodity Code.
          example: BTA1
      description: Entity for Container Registration Business Activities.
    ContainerSecurityEvent:
      required:
        - activity
        - event-type
        - segments
        - tag
      type: object
      description: Entity for Container Security Business Events.
      allOf:
        - $ref: "#/components/schemas/ContainerEvent"
        - type: object
          properties:
            event-type:
              type: string
              description: Type of event for the concrete subclass.
              enum:
                - SECURITY
            activity:
              $ref: "#/components/schemas/ContainerSecurityActivity"
    ContainerSecurityActivity:
      required:
        - function
        - source
        - timestamp
        - type
      type: object
      properties:
        type:
          type: string
          description: Type of activity, must match the type defined for the concrete subclass.
          enum:
            - SECURITY
        timestamp:
          type: string
          description: Timestamp of event in UTC.
          format: date-time
        location:
          type: string
          description: Location id of event.
          example: TRA_14
        source:
          type: string
          description: System generating the event.
          example: TRA Scanner 12
        function:
          type: string
          description: Security function.
          enum:
            - SCREEN
            - CLOSE
            - OPEN
            - SEAL
            - UNSEAL
      description: Entity for Container Security Business Activities.
    ContainerSegment:
      type: object
      properties:
        sequence-number:
          type: integer
          description: Sequence number of flight segment within container journey.
          format: int32
        identifier:
          $ref: "#/components/schemas/FlightSegmentIdentifier"
        tag:
          type: string
          description: Tag number of the uld tag used on this segment.
          example: A12345678
        activities:
          type: object
          properties:
            register:
              $ref: "#/components/schemas/ContainerRegistrationActivity"
            close:
              $ref: "#/components/schemas/ContainerSecurityActivity"
            deliver-at-mup:
              $ref: "#/components/schemas/ContainerMovementActivity"
            acquire-at-mup:
              $ref: "#/components/schemas/ContainerMovementActivity"
            deliver-at-store:
              $ref: "#/components/schemas/ContainerMovementActivity"
            receipt:
              $ref: "#/components/schemas/ContainerStorageActivity"
            put-away:
              $ref: "#/components/schemas/ContainerStorageActivity"
            withdraw:
              $ref: "#/components/schemas/ContainerStorageActivity"
            acquire-at-store:
              $ref: "#/components/schemas/ContainerMovementActivity"
            deliver-at-bay:
              $ref: "#/components/schemas/ContainerMovementActivity"
            load:
              $ref: "#/components/schemas/ContainerContainerizationActivity"
            offload:
              $ref: "#/components/schemas/ContainerContainerizationActivity"
            acquire-at-bay:
              $ref: "#/components/schemas/ContainerMovementActivity"
            deliver-at-transfer-lateral:
              $ref: "#/components/schemas/ContainerMovementActivity"
            deliver-at-reclaim-belt:
              $ref: "#/components/schemas/ContainerMovementActivity"
            open:
              $ref: "#/components/schemas/ContainerSecurityActivity"
            empty:
              type: boolean
            remove:
              $ref: "#/components/schemas/ContainerContainerizationActivity"
          additionalProperties:
            $ref: "#/components/schemas/ContainerActivity"
          description: Information on performed CONTAINER activities on an CONTAINER segment.
      description: Object holding a the state of a uld journey represented by container tag for a flight segment.
    ContainerStorageEvent:
      required:
        - activity
        - event-type
        - segments
        - tag
      type: object
      description: Entity for Container Storage Business Events.
      allOf:
        - $ref: "#/components/schemas/ContainerEvent"
        - type: object
          properties:
            event-type:
              type: string
              description: Type of event for the concrete subclass.
              enum:
                - STORAGE
            activity:
              $ref: "#/components/schemas/ContainerStorageActivity"
    ContainerStorageActivity:
      required:
        - function
        - source
        - timestamp
        - type
      type: object
      properties:
        type:
          type: string
          description: Type of activity, must match the type defined for the concrete subclass.
          enum:
            - STORAGE
        timestamp:
          type: string
          description: Timestamp of event in UTC.
          format: date-time
        location:
          type: string
          description: Location id of event.
          example: TRA_14
        source:
          type: string
          description: System generating the event.
          example: TRA Scanner 12
        function:
          type: string
          description: Storage function.
          enum:
            - RECEIPT
            - PUT_AWAY
            - WITHDRAW
        storage-position:
          type: string
          description: Position in storage.
          example: UL3
      description: Entity for Container Storage Business Events.
    ContainerMovementActivity:
      required:
        - function
        - location-type
        - source
        - timestamp
        - type
      type: object
      properties:
        type:
          type: string
          description: Type of activity, must match the type defined for the concrete subclass.
          enum:
            - MOVEMENT
        timestamp:
          type: string
          description: Timestamp of event in UTC.
          format: date-time
        location:
          type: string
          description: Location id of event.
          example: TRA_14
        source:
          type: string
          description: System generating the event.
          example: TRA Scanner 12
        function:
          type: string
          description: Movement function.
          enum:
            - ACQUIRE
            - TRACK
            - DELIVER
        location-type:
          type: string
          description: Location type.
          enum:
            - MUP
            - BAY
            - STORE
            - TRANSFER_LATERAL
            - RECLAIM_BELT
      description: Entity for CONTAINER Movement Business Activities.
    ContainerTag:
      type: object
      properties:
        meta:
          $ref: "#/components/schemas/ObjectMeta"
        tag-id:
          type: string
          description: Unique id of the container tag in the data hub for an unlimited period of time.
        tag:
          type: string
          description: Tag number of the container tag. Latest tag number in case of re-tagging.
        secondary-identifiers:
          uniqueItems: true
          type: array
          description: Additionally identifiers for the container tag, i.e. container journey, used by airports etc.
          items:
            $ref: "#/components/schemas/SecondaryIdentifier"
        container-type:
          type: string
          description: Container type identifier.
          example: ULD
        container-subtype:
          type: string
          description: Container subtype identifier
          example: AKE
        segments:
          uniqueItems: true
          type: array
          description: Container segments.
          items:
            $ref: "#/components/schemas/ContainerSegment"
      description: Object holding a the state of an container journey represented by ContainerTag.
    FlightSegmentIdentifier:
      required:
        - carrier
        - destination-iata-code
        - flight-number
        - identifier-string
        - origin-date
        - origin-iata-code
      type: object
      properties:
        carrier:
          type: string
          description: 2-digit IATA code of operating carrier.
          example: ZZ
        flight-number:
          type: string
          description: The flight number of the operating carrier. Should contain not more than 4 chars and must not include whitespaces
          example: "997"
        operational-suffix:
          type: string
          description: Used to distinguish two flights having the same flight number and departing from their respective origin stations on the same date.
          example: B
        origin-date:
          type: string
          description: UTC scheduled date of departure of the first leg of the flight. Must be between 2010-01-01 and 2210-01-01.
          format: date
        origin-iata-code:
          type: string
          description: 3-digit IATA code of origin airport.
          example: AAA
        destination-iata-code:
          type: string
          description: 3-digit IATA code of destination airport.
          example: ZZZ
        identifier-string:
          type: string
          description: Automatically generated unique flight ID using format CARRIERFLIGHTNUMBER-DATE-ORIGIN-DESTINATION.
      description: Object holding identifying information for a flight segment.
    ObjectMeta:
      type: object
      properties:
        created-at:
          type: string
          description: Timestamp when object was first created in DH.
          format: date-time
          readOnly: true
        created-by:
          $ref: "#/components/schemas/User"
        created-event-type:
          type: string
          description: Event-type of event which caused the object to be created.
          readOnly: true
        created-event-time:
          type: string
          description: Event-time of event which caused the object to be created.
          format: date-time
          readOnly: true
        modified-count:
          type: integer
          description: Number of modifications in DH.
          format: int64
          readOnly: true
        modified-at:
          type: string
          description: Timestamp of last modification in DH.
          format: date-time
          readOnly: true
        modified-by:
          $ref: "#/components/schemas/User"
        modified-event-type:
          type: string
          description: Event-type of event which caused the object to be modified.
          readOnly: true
        modified-event-time:
          type: string
          description: Event-time of event which caused the object to be modified.
          format: date-time
          readOnly: true
      description: Metadata of DH objects.
      readOnly: true
    SecondaryIdentifier:
      required:
        - created
        - identifier
        - source
      type: object
      properties:
        identifier:
          type: string
          description: Secondary identifier .
        created:
          type: string
          description: Timestamp of creation of secondary identifier in UTC.
          format: date-time
        source:
          type: string
          description: Source creating the secondary identifier.
      description: Additional identifiers for flight legs or segments used by airport systems etc.
    User:
      type: object
      properties:
        user-id:
          type: string
          description: Unique user id.
          readOnly: true
        user-name:
          type: string
          description: Readable user name
          readOnly: true
      description: Metadata of DH objects.
      readOnly: true
