# =================================================================
#
# Authors: Tom Kralidis <tomkralidis@gmail.com>
#
# Copyright (c) 2019 Tom Kralidis
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation
# files (the "Software"), to deal in the Software without
# restriction, including without limitation the rights to use,
# copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following
# conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
#
# =================================================================

components:
  parameters:
    f:
      description: The optional f parameter indicates the output format which the
        server shall provide as part of the response document.  The default format
        is GeoJSON.
      explode: false
      in: query
      name: f
      required: false
      schema:
        default: json
        enum:
        - json
        - html
        type: string
      style: form
    sortby:
      name: sortby
      in: query
      required: false
      schema:
        type: array
        minItems: 1
        items:
          type: string
          pattern: "[+|-][A-Za-z_][A-Za-z_0-9]*"
      explode: false
      style: form
    offset:
      description: The optional offset parameter indicates the index within the
        result set from which the server shall begin presenting results in the response
        document.  The first element has an index of 0 (default).
      explode: false
      in: query
      name: offset
      required: false
      schema:
        default: 0
        minimum: 0
        type: integer
      style: form
  responses:
    '200':
      description: successful operation
    default:
      content:
        application/json:
          schema:
            $ref: https://raw.githubusercontent.com/opengeospatial/ogcapi-processes/master/core/openapi/schemas/exception.yaml
      description: Unexpected error
info:
  contact:
    email: you@example.org
    name: Organization Name
    url: https://pygeoapi.io
  description: pygeoapi provides an API to geospatial data
  license:
    name: CC-BY 4.0 license
    url: https://creativecommons.org/licenses/by/4.0/
  termsOfService: None
  title: pygeoapi default instance
  version: 3.0.2
  x-keywords:
  - geospatial
  - data
  - api
openapi: 3.0.2
paths:
  /:
    get:
      description: Landing page
      parameters:
      - $ref: '#/components/parameters/f'
      responses:
        '200':
          $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/LandingPage
        '400':
          $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/InvalidParameter
        '500':
          $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/ServerError
      summary: Landing page
      tags:
      - server
  /openapi:
    get:
      description: This document
      parameters:
      - $ref: '#/components/parameters/f'
      responses:
        '200':
          $ref: '#/components/responses/200'
        '400':
          $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/InvalidParameter
        default:
          $ref: '#/components/responses/default'
      summary: This document
      tags:
      - server
  /collections:
    get:
      description: Feature Collections
      parameters:
      - $ref: '#/components/parameters/f'
      responses:
        '200':
          $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/Collections
        '400':
          $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/InvalidParameter
        '500':
          $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/ServerError
      summary: Feature Collections
      tags:
      - server
  /collections/obs:
    get:
      description: My cool observations
      parameters:
      - $ref: '#/components/parameters/f'
      responses:
        '200':
          $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/Collection
        '400':
          $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/InvalidParameter
        '404':
          $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/NotFound
        '500':
          $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/ServerError
      summary: Get feature collection metadata
      tags:
      - obs
  /collections/obs/items:
    get:
      description: My cool observations
      parameters:
      - description: The optional f parameter indicates the output format which the
          server shall provide as part of the response document.  The default format
          is GeoJSON.
        explode: false
        in: query
        name: f
        required: false
        schema:
          default: json
          enum:
          - json
          - html
          - csv
          type: string
        style: form
      - $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/parameters/bbox
      - $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/parameters/limit
      - $ref: '#/components/parameters/sortby'
      - $ref: '#/components/parameters/offset'
      responses:
        '200':
          $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/Features
        '400':
          $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/InvalidParameter
        '404':
          $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/NotFound
        '500':
          $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/ServerError
      summary: Get Observations features
      tags:
      - obs
  /collections/obs/items/{featureId}:
    get:
      description: My cool observations
      parameters:
      - $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/parameters/featureId
      - $ref: '#/components/parameters/f'
      responses:
        '200':
          $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/Feature
        '400':
          $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/InvalidParameter
        '404':
          $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/NotFound
        '500':
          $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/ServerError
      summary: Get Observations feature by id
      tags:
      - obs
  /conformance:
    get:
      description: API conformance definition
      parameters:
      - $ref: '#/components/parameters/f'
      responses:
        '200':
          $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/ConformanceDeclaration
        '400':
          $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/InvalidParameter
        '500':
          $ref: http://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/ogcapi-features-1.yaml#/components/responses/ServerError
      summary: API conformance definition
      tags:
      - server
  /processes:
    get:
      description: Processes
      parameters:
      - $ref: '#/components/parameters/f'
      responses:
        '200':
          $ref: '#/components/responses/200'
        default:
          $ref: '#/components/responses/default'
      summary: Processes
      tags:
      - server
  /processes/hello-world:
    get:
      description: Hello World process
      parameters:
      - $ref: '#/components/parameters/f'
      responses:
        '200':
          $ref: '#/components/responses/200'
        default:
          $ref: '#/components/responses/default'
      summary: Get process metadata
      tags:
      - hello-world
  /processes/hello-world/jobs:
    get:
      description: Hello World process
      responses:
        '200':
          $ref: '#/components/responses/200'
        default:
          $ref: '#/components/responses/default'
      summary: Retrieve job list for process
      tags:
      - hello-world
    post:
      description: Hello World process
      parameters: []
      requestBody:
        content:
          application/json:
            example:
              inputs:
              - id: name
                type: text/plain
                value: hi there
            schema:
              $ref: https://raw.githubusercontent.com/opengeospatial/ogcapi-processes/master/core/openapi/schemas/execute.yaml
        description: Mandatory execute request JSON
        required: true
      responses:
        '200':
          $ref: '#/components/responses/200'
        default:
          $ref: '#/components/responses/default'
      summary: Process Hello World process execution
      tags:
      - hello-world
servers:
- description: pygeoapi provides an API to geospatial data
  url: http://localhost:5000/
tags:
- description: pygeoapi provides an API to geospatial data
  externalDocs:
    description: information
    url: http://example.org
  name: server
- description: My cool observations
  name: obs
- description: Hello World process
  name: hello-world

