description: A Domain, which defines a set of positions and their extent in one
  or more referencing systems
type: object
properties:
  type:
    type: string
    enum: 
      - Domain
  domainType:
    type: string
  axes:
    type: object
    oneOf:
      - description: "Grid domain: x and y are required, z and t optional"
        properties:
          x:
            $ref: numericAxis.yaml
          y:
            $ref: numericAxis.yaml
          z:
            $ref: numericAxis.yaml
          t:
            $ref: stringValuesAxis.yaml
        required:
          - x
          - y
      - description: "Trajectory domain: mandatory composite axis and optional z axis"
        properties:
          axes:
            properties:
              composite:
                $ref: tupleValuesAxis.yaml
              z:
                $ref: numericAxis.yaml
            required:
              - composite

  referencing:
    type: array
    items:
      $ref: referenceSystemConnection.yaml
required:
  - type
  - axes
