openapi: 3.0.3
info:
  title: "A sample API conforming to the standard OGC API - Processes - Part 1 : Core"
  version: 1.0.0
  description: |-
    This document is an API definition document provided alongside the OGC API - Processes standard. The OGC API - Processes Standard specifies a processing interface to communicate over a RESTful protocol using JavaScript Object Notation (JSON) encodings. The specification allows for the wrapping of computational tasks into executable processes that can be offered by a server and be invoked by a client application.
  contact:
    name: "Open Geospatial Consortium (OGC)"
    email: standards-team@ogc.org
    url: 'https://www.ogc.org/contacts'
  license:
    name: OGC license
    url: "http://www.ogc.org/legal/"
paths:
  /:
    get:
      summary: landing page of this API
      description: >-
         The landing page provides links to the:
           * The APIDefinition (no fixed path),
           * The Conformance statements (path /conformance),
           * The processes metadata (path /processes),
           * The endpoint for job monitoring (path /jobs).

         For more information, see [Section 7.2](https://docs.ogc.org/is/18-062/18-062.html#sc_landing_page).
      operationId: getLandingPage
      tags:
        - Capabilities
      responses:
        200:
          $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/responses/LandingPage.yaml"
        500:
          $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/responses/ServerError.yaml"
  /conformance:
    get:
      summary: information about standards that this API conforms to
      description: |
         A list of all conformance classes, specified in a standard, that the server conforms to.

         | Conformance class | URI |
         |-----------|-------|
         |Core|http://www.opengis.net/spec/ogcapi-processes-1/1.0/conf/core|
         |OGC Process Description|http://www.opengis.net/spec/ogcapi-processes-1/1.0/conf/ogc-process-description|
         |JSON|http://www.opengis.net/spec/ogcapi-processes-1/1.0/conf/json|
         |HTML|http://www.opengis.net/spec/ogcapi-processes-1/1.0/conf/html|
         |OpenAPI Specification 3.0|http://www.opengis.net/spec/ogcapi-processes-1/1.0/conf/oas30|
         |Job list|http://www.opengis.net/spec/ogcapi-processes-1/1.0/conf/job-list|
         |Callback|http://www.opengis.net/spec/ogcapi-processes-1/1.0/conf/callback|
         |Dismiss|http://www.opengis.net/spec/ogcapi-processes-1/1.0/conf/dismiss|

         For more information, see [Section 7.4](https://docs.ogc.org/is/18-062/18-062.html#sc_conformance_classes).
      operationId: getConformanceClasses
      tags:
        - ConformanceDeclaration
      responses:
        200:
          $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/responses/ConformanceDeclaration.yaml"
        500:
          $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/responses/ServerError.yaml"
  /processes:
    get:
      summary: retrieve the list of available processes
      description: |
         The list of processes contains a summary of each process the OGC API - Processes offers, including the link to a more detailed description of the process.

         For more information, see [Section 7.9](https://docs.ogc.org/is/18-062/18-062.html#sc_process_list).
      operationId: getProcesses
      tags:
        - ProcessList
      responses:
        200:
          $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/responses/ProcessList.yaml"
  /processes/{processID}:
    get:
      summary: retrieve a process description
      description:  |
         The process description contains information about inputs and outputs and a link to the execution-endpoint for the process. The Core does not mandate the use of a specific process description to specify the interface of a process. That said, the Core requirements class makes the following recommendation:

         Implementations SHOULD consider supporting the OGC process description.

         For more information, see [Section 7.10](https://docs.ogc.org/is/18-062/18-062.html#sc_process_description).
      operationId: getProcessDescription
      tags:
        - ProcessDescription
      parameters:
        - $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/parameters/processIdPathParam.yaml"
      responses:
        200:
          $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/responses/ProcessDescription.yaml"
        404:
          $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/responses/NotFound.yaml"
  /jobs:
    get:
      summary: retrieve the list of jobs.
      description: |
        Lists available jobs.

        For more information, see [Section 11](https://docs.ogc.org/is/18-062/18-062.html#sc_job_list).
      operationId: getJobs
      tags:
        - JobList
      responses:
        200:
          $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/responses/JobList.yaml"
        404:
          $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/responses/NotFound.yaml"
  /processes/{processID}/execution:
    post:
      summary: execute a process.
      description: |
        Create a new job.

        For more information, see [Section 7.11](https://docs.ogc.org/is/18-062/18-062.html#sc_create_job).
      operationId: execute
      tags:
        - Execute
      parameters:
        - $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/parameters/processIdPathParam.yaml"
      requestBody:
        description: Mandatory execute request JSON
        required: true
        content:
          application/json:
            schema:
              $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/schemas/execute.yaml"
      responses:
        200:
          $ref: 'https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/responses/ExecuteSync.yaml'
        201:
          $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/responses/ExecuteAsync.yaml"
        404:
          $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/responses/NotFound.yaml"
        500:
          $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/responses/ServerError.yaml"
      callbacks:
        jobCompleted:
          "{$request.body#/subscriber/successUri}":
            post:
              requestBody:
                content:
                  application/json:
                    schema:
                      $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/schemas/results.yaml"
              responses:
                200:
                  description: Results received successfully
  /jobs/{jobId}:
    get:
      summary: retrieve the status of a job
      description: |
        Shows the status of a job.

         For more information, see [Section 7.12](https://docs.ogc.org/is/18-062/18-062.html#sc_retrieve_status_info).
      operationId: getStatus
      tags:
        - Status
      parameters:
        - $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/parameters/jobId.yaml"
      responses:
        200:
          $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/responses/Status.yaml"
        404:
          $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/responses/NotFound.yaml"
        500:
          $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/responses/ServerError.yaml"
    delete:
      summary: cancel a job execution, remove a finished job
      description: |
        Cancel a job execution and remove it from the jobs list.

        For more information, see [Section 13](https://docs.ogc.org/is/18-062/18-062.html#Dismiss).
      operationId: dismiss
      tags:
        - Dismiss
      parameters:
        - $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/parameters/jobId.yaml"
      responses:
        200:
          $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/responses/Status.yaml"
        404:
          $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/responses/NotFound.yaml"
        500:
          $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/responses/ServerError.yaml"
  /jobs/{jobId}/results:
    get:
      summary: retrieve the result(s) of a job
      description: |
        Lists available results of a job. In case of a failure, lists exceptions instead.

        For more information, see [Section 7.13](https://docs.ogc.org/is/18-062/18-062.html#sc_retrieve_job_results).
      operationId: getResult
      tags:
        - Result
      parameters:
        - $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/parameters/jobId.yaml"
      responses:
        200:
          $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/responses/Results.yaml"
        404:
          $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/responses/NotFound.yaml"
        500:
          $ref: "https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/responses/ServerError.yaml"
servers:
  - description: Example server
    url: http://example.org/ogcapi
