description: |-
  The extent of the data in the collection. In the Core only spatial and temporal
  extents are specified. Extensions may add additional members to represent other
  extents, for example, thermal or pressure ranges.

  The first item in the array describes the overall extent of
  the data. All subsequent items describe more precise extents,
  e.g., to identify clusters of data.
  Clients only interested in the overall extent will only need to
  access the first item in each array.
type: object
properties:
  spatial:
    description: The spatial extent of the data in the collection.
    type: object
    properties:
      bbox:
        description: |-
          One or more bounding boxes that describe the spatial extent of the dataset.
          In the Core only a single bounding box is supported.

          Extensions may support additional areas.
          The first bounding box describes the overall spatial
          extent of the data. All subsequent bounding boxes describe
          more precise bounding boxes, e.g., to identify clusters of data.
          Clients only interested in the overall spatial extent will
          only need to access the first item in each array.
        type: array
        minItems: 1
        items:
          description: |-
            Each bounding box is provided as four or six numbers, depending on
            whether the coordinate reference system includes a vertical axis
            (height or depth):

            * Lower left corner, coordinate axis 1
            * Lower left corner, coordinate axis 2
            * Minimum value, coordinate axis 3 (optional)
            * Upper right corner, coordinate axis 1
            * Upper right corner, coordinate axis 2
            * Maximum value, coordinate axis 3 (optional)

            If the value consists of four numbers, the coordinate reference system is
            WGS 84 longitude/latitude (http://www.opengis.net/def/crs/OGC/1.3/CRS84)
            unless a different coordinate reference system is specified in a parameter `bbox-crs`.

            If the value consists of six numbers, the coordinate reference system is WGS 84
            longitude/latitude/ellipsoidal height (http://www.opengis.net/def/crs/OGC/0/CRS84h)
            unless a different coordinate reference system is specified in a parameter `bbox-crs`.

            For WGS 84 longitude/latitude the values are in most cases the sequence of
            minimum longitude, minimum latitude, maximum longitude and maximum latitude.
            However, in cases where the box spans the antimeridian the first value
            (west-most box edge) is larger than the third value (east-most box edge).

            If the vertical axis is included, the third and the sixth number are
            the bottom and the top of the 3-dimensional bounding box.

            If a feature has multiple spatial geometry properties, it is the decision of the
            server whether only a single spatial geometry property is used to determine
            the extent or all relevant geometries.
          type: array
          oneOf:
          - minItems: 4
            maxItems: 4
          - minItems: 6
            maxItems: 6
          items:
            type: number
          example:
            - -180
            - -90
            - 180
            - 90
      crs:
        description: |-
          Coordinate reference system of the coordinates in the spatial extent
          (property `bbox`). The default reference system is WGS 84 longitude/latitude.
          In the Core the only other supported coordinate reference system is
          WGS 84 longitude/latitude/ellipsoidal height for coordinates with height.
          Extensions may support additional coordinate reference systems and add
          additional enum values.
        type: string
        enum:
          - 'http://www.opengis.net/def/crs/OGC/1.3/CRS84'
          - 'http://www.opengis.net/def/crs/OGC/0/CRS84h'
        default: 'http://www.opengis.net/def/crs/OGC/1.3/CRS84'
      grid:
        description: |-
           Provides information about the limited availability of data within the collection organized
           as a grid (regular or irregular) along each spatial dimension.
        type: array
        minItems: 2
        maxItems: 3
        items:
          type: object
          properties:
            coordinates:
              description: |-
                List of coordinates along the dimension for which data organized as an irregular grid in the collection is available
                (e.g., 2, 10, 80, 100).
              type: array
              minItems: 1
              items:
                oneOf:
                  - type: string
                    nullable: true
                  - type: number
              example: [2, 10, 80, 100]
            cellsCount:
              description: |-
                Number of samples available along the dimension for data organized as a regular grid.
                For values representing the whole area of contiguous cells spanning _resolution_ units along the dimension, this will be (_upperBound_ - _lowerBound_) / _resolution_.
                For values representing infinitely small point cells spaced by _resolution_ units along the dimension, this will be (_upperBound_ - _lowerBound_) / _resolution_ + 1.
              type: integer
              example: 50
            resolution:
              description: |-
                Resolution of regularly gridded data along the dimension in the collection
              oneOf:
                - type: string
                  nullable: true
                - type: number
              example: 0.0006866455078
  temporal:
    description: |-
      The temporal extent of the features in the collection.
    type: object
    properties:
      interval:
        description: |-
          One or more time intervals that describe the temporal extent of the dataset.
          In the Core only a single time interval is supported.

          Extensions may support multiple intervals.
          The first time interval describes the overall
          temporal extent of the data. All subsequent time intervals describe
          more precise time intervals, e.g., to identify clusters of data.
          Clients only interested in the overall extent will only need
          to access the first item in each array.
        type: array
        minItems: 1
        items:
          description: |-
            Begin and end times of the time interval. The timestamps are in the
            temporal coordinate reference system specified in `trs`. By default
            this is the Gregorian calendar.

            The value `null` for start or end time is supported and indicates a half-bounded time interval.
          type: array
          minItems: 2
          maxItems: 2
          items:
            type: string
            format: date-time
            nullable: true
          example:
            - '2011-11-11T12:22:11Z'
            - null
      trs:
        description: |-
          Coordinate reference system of the coordinates in the temporal extent
          (property `interval`). The default reference system is the Gregorian calendar.
          In the Core this is the only supported temporal coordinate reference system.
          Extensions may support additional temporal coordinate reference systems and add
          additional enum values.
        type: string
        enum:
          - 'http://www.opengis.net/def/uom/ISO-8601/0/Gregorian'
        default: 'http://www.opengis.net/def/uom/ISO-8601/0/Gregorian'
      grid:
        type: object
        description: |-
           Provides information about the limited availability of data within the collection organized as a grid (regular or irregular) along the temporal dimension.
        properties:
          coordinates:
            description: |-
              List of coordinates along the temporal dimension for which data organized as an irregular grid in the collection is available
              (e.g., "2017-11-14T09:00Z","2017-11-14T12:00Z","2017-11-14T15:00Z","2017-11-14T18:00Z","2017-11-14T21:00Z").
            type: array
            minItems: 1
            items:
              type: string
              nullable: true
            example:
              - ["2020-11-12T12:15Z","2020-11-12T12:30Z","2020-11-12T12:45Z"]
          cellsCount:
            description: |-
              Number of samples available along the temporal dimension for data organized as a regular grid.
              For values representing the whole area of contiguous cells spanning _resolution_ units along the dimension, this will be (_upperBound_ - _lowerBound_) / _resolution_.
              For values representing infinitely small point cells spaced by _resolution_ units along the dimension, this will be (_upperBound_ - _lowerBound_) / _resolution_ + 1.
            type: integer
            example: 50
          resolution:
            description: |-
              Resolution of regularly gridded data along the temporal dimension in the collection
            oneOf:
              - type: string
                nullable: true
              - type: number
            example: "PT1H"
