Commit 5d2875dd authored by Ignacio Dominguez Martinez-Casanueva's avatar Ignacio Dominguez Martinez-Casanueva
Browse files

Add GeoJSON Geometry schemas

parent 8c0a91aa
Loading
Loading
Loading
Loading
+144 −31
Original line number Diff line number Diff line
@@ -2507,7 +2507,11 @@ components:
      style: form
      explode: true
      schema:
        type: string # TODO
        oneOf:
          - $ref: '#/components/schemas/Geometry.position'
          - $ref: '#/components/schemas/Geometry.positionArray'
          - $ref: '#/components/schemas/Geometry.lineString'
          - $ref: '#/components/schemas/Geometry.polygon'
      required: false
    Query.count:
      name: count
@@ -2617,12 +2621,12 @@ components:
        schema:
          type: string
          enum:
            - 'Point'
            - 'MultiPoint'
            - 'LineString'
            - 'MultiLineString'
            - 'Polygon'
            - 'MultiPolygon'
            - Point
            - MultiPoint
            - LineString
            - MultiLineString
            - Polygon
            - MultiPolygon
        required: false
    Query.geoproperty:
      name: geoproperty
@@ -2634,7 +2638,7 @@ components:
      explode: true
      schema:
        type: string
        default: 'location'
        default: location
      required: false
    Query.georel:
      name: georel
@@ -2648,27 +2652,28 @@ components:
        oneOf:
          - type: string
            enum:
              - 'equals'
              - 'disjoint'
              - 'intersects'
              - 'within'
              - 'contains'
              - 'overlaps'
              - equals
              - disjoint
              - intersects
              - within
              - contains
              - overlaps
          - type: string
            pattern: "^near;((maxDistance==\\d+)|(minDistance==\\d+))$"
            pattern: ^near;((maxDistance==\\d+)|(minDistance==\\d+))$
      required: false
    Query.kind:
      name: kind
      in: query
      description: Can be either "Cached", "Hosted", or "ImplicitlyCreated".
      description: |
        Can be either "Cached", "Hosted", or "ImplicitlyCreated".
      style: form
      explode: true
      schema:
        type: string
        enum:
          - 'Cached'
          - 'Hosted'
          - 'ImplicitlyCreated'
          - Cached
          - Hosted
          - ImplicitlyCreated
      required: false
    Query.lang:
      name: lang
@@ -2781,7 +2786,8 @@ components:
    Query.q:
      name: q
      in: query
      description: Query as per clause 4.9.
      description: |
        Query as per clause 4.9.
      style: form
      explode: true
      schema:
@@ -2800,7 +2806,8 @@ components:
    Query.scopeQ:
      name: scopeQ
      in: query
      description: Scope query (see clause 4.19).
      description: |
        Scope query (see clause 4.19).
      style: form
      explode: true
      schema:
@@ -2852,7 +2859,8 @@ components:
    Query.type:
      name: type
      in: query
      description: Selection of Entity Types as per clause 4.17.
      description: |
        Selection of Entity Types as per clause 4.17.
      style: form
      explode: true
      schema:
@@ -3312,9 +3320,7 @@ components:
          enum:
            - GeoProperty
        value:
          description: |
            Geolocation encoded as GeoJSON.
          type: object
          $ref: '#/components/schemas/Geometry'
        observedAt:
          description: |
            Timestamp. See clause 4.8.
@@ -3427,11 +3433,11 @@ components:
        location:
          description: |
            Location for which the Context Source may be able to provide information.
          $ref: '#/components/schemas/GeoProperty'
          $ref: '#/components/schemas/Geometry'
        observationSpace:
          $ref: '#/components/schemas/GeoProperty'
          $ref: '#/components/schemas/Geometry'
        operationSpace:
          $ref: '#/components/schemas/GeoProperty'
          $ref: '#/components/schemas/Geometry'
        expiresAt:
          description: |
            Provides an expiration date. When passed the Context Source Registration
@@ -3712,7 +3718,6 @@ components:
        - required:
          - type
          - notification

    GeoQuery:
      description: |
        5.2.13 represents a geoquery used for Subscriptions.
@@ -4322,10 +4327,12 @@ components:
          enum:
            - Feature
        geometry:
          description: Null if no matching GeoProperty.
          description: |
            Null if no matching GeoProperty.
          $ref: '#/components/schemas/GeoProperty'
        properties:
          description: List of attributes as mandated by clause 5.2.31.
          description: |
            List of attributes as mandated by clause 5.2.31.
          $ref: '#/components/schemas/FeatureProperties'
        '@context':
          description: |
@@ -4593,6 +4600,112 @@ components:
        - notifiedAt
        - data
        - triggerReason
    ######
    # Geometry schemas
    #
    Geometry.position:
      description: |
        A single position.
      type: array
      minItems: 2
      maxItems: 2
      items:
        type: number
      additionalProperties: false
    Geometry.positionArray:
      description: |
        An array of positions.
      type: array
      items:
        $ref: '#/components/schemas/Geometry.position'
    Geometry.lineString:
      description: |
        An array of two or more positions.
      allOf:
        - $ref: '#/components/schemas/Geometry.positionArray'
        - minItems: 2
    Geometry.linearRing:
      description: |
        An array of four positions where the first equals the last.
      allOf:
        - $ref: '#/components/schemas/Geometry.positionArray'
        - minItems: 4
    Geometry.polygon:
      description: |
        An array of linear rings.
      type: array
      items:
        $ref: '#/components/schemas/Geometry.linearRing'
    Geometry.Point:
      type: object
      properties:
        type:
          type: string
          enum:
            - Point
        coordinates:
          $ref: '#/components/schemas/Geometry.position'
    Geometry.MultiPoint:
      type: object
      properties:
        type:
          type: string
          enum:
            - MultiPoint
        coordinates:
          $ref: '#/components/schemas/Geometry.positionArray'
    Geometry.Polygon:
      type: object
      properties:
        type:
          type: string
          enum:
            - Polygon
        coordinates:
          $ref: '#/components/schemas/Geometry.polygon'
    Geometry.LineString:
      type: object
      properties:
        type:
          type: string
          enum:
            - LineString
        coordinates:
          $ref: '#/components/schemas/Geometry.lineString'
    Geometry.MultiLineString:
      type: object
      properties:
        type:
          type: string
          enum:
            - MultiLineString
        coordinates:
          type: array
          items:
            $ref: '#/components/schemas/Geometry.lineString'
    Geometry.MultiPolygon:
      type: object
      properties:
        type:
          type: string
          enum:
            - MultiPolygon
        coordinates:
          type: array
          items:
            $ref: '#/components/schemas/Geometry.lineString'
    Geometry:
      description: |
        A valid GeoJSON geometry object.
      oneOf:
        - $ref: '#/components/schemas/Geometry.Point'
        - $ref: '#/components/schemas/Geometry.MultiPoint'
        - $ref: '#/components/schemas/Geometry.Polygon'
        - $ref: '#/components/schemas/Geometry.LineString'
        - $ref: '#/components/schemas/Geometry.MultiLineString'
        - $ref: '#/components/schemas/Geometry.MultiPolygon'
    #
    ######
    # Took "ProblemDetails" schema from ETSI NFV OAS
    ProblemDetails:
      description: |