openapi: 3.0.3 info: title: 'OGC API - Processes - Part 1: Core' version: 1.0.0 description: |- 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. OpenAPI definition that conforms to the conformance classes "Core", "GeoJSON", "HTML" and "OpenAPI 3.0" of the standard "OGC API - Features - Part 1: Core". 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: '#/components/responses/LandingPage' # '500': # $ref: '#/components/responses/ServerError' # /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: '#/components/responses/ConformanceDeclaration' # '500': # $ref: '#/components/responses/ServerError' /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: - Processes responses: '200': $ref: '#/components/responses/ProcessList' '/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: - Processes parameters: - $ref: '#/components/parameters/processIdPathParam' responses: '200': $ref: '#/components/responses/ProcessDescription' '404': $ref: '#/components/responses/NotFound' /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: - Processes responses: '200': $ref: '#/components/responses/JobList' '404': $ref: '#/components/responses/NotFound' '/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: - Processes parameters: - $ref: '#/components/parameters/processIdPathParam' requestBody: description: Mandatory execute request JSON required: true content: application/json: schema: $ref: '#/components/schemas/execute' responses: '200': $ref: '#/components/responses/ExecuteSync' '201': $ref: '#/components/responses/ExecuteAsync' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' callbacks: jobCompleted: '{$request.body#/subscriber/successUri}': post: requestBody: content: application/json: schema: $ref: '#/components/schemas/results' 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: - Processes parameters: - $ref: '#/components/parameters/jobId' responses: '200': $ref: '#/components/responses/Status' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' 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: - Processes parameters: - $ref: '#/components/parameters/jobId' responses: '200': $ref: '#/components/responses/Status' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' '/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: - Processes parameters: - $ref: '#/components/parameters/jobId' responses: '200': $ref: '#/components/responses/Results' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' servers: - description: Example server url: 'http://example.org/ogcapi' components: responses: Status: description: The status of a job. content: application/json: schema: $ref: '#/components/schemas/statusInfo' NotFound: description: The requested URI was not found. content: application/json: schema: $ref: '#/components/schemas/exception' text/html: schema: type: string Results: description: The results of a job. content: application/json: schema: $ref: '#/components/schemas/results' JobList: description: A list of jobs for this process. content: application/json: schema: $ref: '#/components/schemas/jobList' LandingPage: description: |- The landing page provides links to the API definition (link relations `service-desc` and `service-doc`), the Conformance declaration (path `/conformance`, link relation `http://www.opengis.net/def/rel/ogc/1.0/conformance`), and to other resources. content: application/json: schema: $ref: '#/components/schemas/landingPage' text/html: schema: type: string NotAllowed: description: The method is not allowed at the path. content: application/json: schema: $ref: '#/components/schemas/exception' text/html: schema: type: string ServerError: description: A server error occurred. content: application/json: schema: $ref: '#/components/schemas/exception' text/html: schema: type: string ProcessList: description: Information about the available processes content: application/json: schema: $ref: '#/components/schemas/processList' ExecuteSync: description: Result of synchronous execution content: /*: schema: oneOf: - type: string - type: number - type: integer - type: object nullable: true - type: array - type: boolean - type: string format: binary - $ref: '#/components/schemas/results' description: 'Negotiate synchronous execution, response=document,any txMode and no. outputs' NotSupported: description: None of the requested media types is supported at the path. content: application/json: schema: $ref: '#/components/schemas/exception' text/html: schema: type: string ExecuteSyncRawRef: description: 'Response when negotiate synchronous execution, response=raw, transmissionMode=reference and for any number of output values.' headers: Link: schema: type: string description: One or more Link headers pointing to each raw output. ExecuteAsync: description: Started asynchronous execution. Created job. headers: Location: schema: type: string description: URL to check the status of the execution/job. Preference-Applied: schema: type: string description: The preference applied to execute the process asynchronously (see. RFC 2740). content: application/json: schema: $ref: '#/components/schemas/statusInfo' swagger: ProcessDescription: description: A process description. content: application/json: schema: $ref: '#/components/schemas/swagger/process' examples: processDecription: summary: A Process Description example externalValue: ../../../examples/json/ProcessDescription.json InvalidParameter: description: A query parameter has an invalid value. content: application/json: schema: $ref: '#/components/schemas/exception' text/html: schema: type: string ProcessDescription: description: A process description. content: application/json: schema: $ref: '#/components/schemas/process' examples: processDecription: summary: A Process Description example externalValue: ../../examples/json/ProcessDescription.json ConformanceDeclaration: description: |- The URIs of all conformance classes supported by the server. To support "generic" clients that want to access multiple OGC API - Processes implementations - and not "just" a specific API / server, the server declares the conformance classes it implements and conforms to. content: application/json: schema: $ref: '#/components/schemas/confClasses' example: conformsTo: - 'http://www.opengis.net/spec/ogcapi-processes/1.0/conf/core' text/html: schema: type: string schemas: bbox: type: object required: - bbox properties: bbox: type: array oneOf: - minItems: 4 maxItems: 4 - minItems: 6 maxItems: 6 items: type: number crs: type: string format: uri default: 'http://www.opengis.net/def/crs/OGC/1.3/CRS84' enum: - 'http://www.opengis.net/def/crs/OGC/1.3/CRS84' - 'http://www.opengis.net/def/crs/OGC/0/CRS84h' confClasses: type: object required: - conformsTo properties: conformsTo: type: array items: type: string example: 'http://www.opengis.net/spec/ogcapi-processes-1/1.0/conf/core' statusCode: type: string nullable: false enum: - accepted - running - successful - failed - dismissed inlineOrRefData: oneOf: - $ref: '#/components/schemas/inputValueNoObject' - $ref: '#/components/schemas/qualifiedInputValue' - $ref: '#/components/schemas/link' schema: oneOf: - $ref: '#/components/schemas/reference' - type: object properties: title: type: string multipleOf: type: number minimum: 0 exclusiveMinimum: true maximum: type: number exclusiveMaximum: type: boolean default: false minimum: type: number exclusiveMinimum: type: boolean default: false maxLength: type: integer minimum: 0 minLength: type: integer minimum: 0 default: 0 pattern: type: string format: regex maxItems: type: integer minimum: 0 minItems: type: integer minimum: 0 default: 0 uniqueItems: type: boolean default: false maxProperties: type: integer minimum: 0 minProperties: type: integer minimum: 0 default: 0 required: type: array items: type: string minItems: 1 uniqueItems: true enum: type: array items: {} minItems: 1 uniqueItems: false type: type: string enum: - array - boolean - integer - number - object - string not: oneOf: - $ref: '#/components/schemas/schema' - $ref: '#/components/schemas/reference' allOf: type: array items: oneOf: - $ref: '#/components/schemas/schema' - $ref: '#/components/schemas/reference' oneOf: type: array items: oneOf: - $ref: '#/components/schemas/schema' - $ref: '#/components/schemas/reference' anyOf: type: array items: oneOf: - $ref: '#/components/schemas/schema' - $ref: '#/components/schemas/reference' items: oneOf: - $ref: '#/components/schemas/schema' - $ref: '#/components/schemas/reference' properties: type: object additionalProperties: oneOf: - $ref: '#/components/schemas/schema' - $ref: '#/components/schemas/reference' additionalProperties: oneOf: - $ref: '#/components/schemas/schema' - $ref: '#/components/schemas/reference' - type: boolean default: true description: type: string format: type: string default: {} nullable: type: boolean default: false readOnly: type: boolean default: false writeOnly: type: boolean default: false example: {} deprecated: type: boolean default: false contentMediaType: type: string contentEncoding: type: string contentSchema: type: string additionalProperties: false binaryInputValue: type: string format: byte outputDescription: allOf: - $ref: '#/components/schemas/descriptionType' - type: object required: - schema properties: schema: $ref: '#/components/schemas/schema' jobList: type: object required: - jobs - links properties: jobs: type: array items: $ref: '#/components/schemas/statusInfo' links: type: array items: $ref: '#/components/schemas/link' descriptionType: type: object properties: title: type: string description: type: string keywords: type: array items: type: string metadata: type: array items: $ref: '#/components/schemas/metadata' additionalParameters: allOf: - $ref: '#/components/schemas/metadata' - type: object properties: parameters: type: array items: $ref: '#/components/schemas/additionalParameter' inputValue: oneOf: - $ref: '#/components/schemas/inputValueNoObject' - type: object jobControlOptions: type: string enum: - sync-execute - async-execute - dismiss reference: type: object required: - $ref properties: $ref: type: string format: uri-reference metadata: type: object properties: title: type: string role: type: string href: type: string processList: type: object required: - processes - links properties: processes: type: array items: $ref: '#/components/schemas/processSummary' links: type: array items: $ref: '#/components/schemas/link' link: type: object required: - href properties: href: type: string rel: type: string example: service type: type: string example: application/json hreflang: type: string example: en title: type: string qualifiedInputValue: allOf: - $ref: '#/components/schemas/format' - type: object required: - value properties: value: $ref: '#/components/schemas/inputValue' transmissionMode: type: string enum: - value - reference default: - value inputDescription: allOf: - $ref: '#/components/schemas/descriptionType' - type: object required: - schema properties: minOccurs: type: integer default: 1 maxOccurs: oneOf: - type: integer default: 1 - type: string enum: - unbounded schema: $ref: '#/components/schemas/schema' execute: type: object properties: inputs: additionalProperties: oneOf: - $ref: '#/components/schemas/inlineOrRefData' - type: array items: $ref: '#/components/schemas/inlineOrRefData' outputs: additionalProperties: $ref: '#/components/schemas/output' response: type: string enum: - raw - document default: - raw subscriber: $ref: '#/components/schemas/subscriber' format: type: object properties: mediaType: type: string encoding: type: string schema: oneOf: - type: string format: url - type: object processSummary: allOf: - $ref: '#/components/schemas/descriptionType' - type: object required: - id - version properties: id: type: string version: type: string jobControlOptions: type: array items: $ref: '#/components/schemas/jobControlOptions' outputTransmission: type: array items: $ref: '#/components/schemas/transmissionMode' links: type: array items: $ref: '#/components/schemas/link' inputValueNoObject: oneOf: - type: string - type: number - type: integer - type: boolean - type: array - $ref: '#/components/schemas/binaryInputValue' - $ref: '#/components/schemas/bbox' statusInfo: type: object required: - jobID - status - type properties: processID: type: string type: type: string enum: - process jobID: type: string status: $ref: '#/components/schemas/statusCode' message: type: string created: type: string format: date-time started: type: string format: date-time finished: type: string format: date-time updated: type: string format: date-time progress: type: integer minimum: 0 maximum: 100 links: type: array items: $ref: '#/components/schemas/link' results: additionalProperties: $ref: '#/components/schemas/inlineOrRefData' landingPage: type: object required: - links properties: title: type: string example: Example processing server description: type: string example: Example server implementing the OGC API - Processes 1.0 Standard links: type: array items: $ref: '#/components/schemas/link' exception: title: Exception Schema description: JSON schema for exceptions based on RFC 7807 type: object required: - type properties: type: type: string title: type: string status: type: integer detail: type: string instance: type: string additionalProperties: true subscriber: description: |- Optional URIs for callbacks for this job. Support for this parameter is not required and the parameter may be removed from the API definition, if conformance class **'callback'** is not listed in the conformance declaration under `/conformance`. type: object required: - successUrl properties: successUri: type: string format: uri inProgressUri: type: string format: uri failedUri: type: string format: uri swagger: schema: oneOf: - $ref: '#/components/schemas/reference' - type: object properties: title: type: string multipleOf: type: number minimum: 0 exclusiveMinimum: true maximum: type: number exclusiveMaximum: type: boolean default: false minimum: type: number exclusiveMinimum: type: boolean default: false maxLength: type: integer minimum: 0 minLength: type: integer minimum: 0 default: 0 pattern: type: string format: regex maxItems: type: integer minimum: 0 minItems: type: integer minimum: 0 default: 0 uniqueItems: type: boolean default: false maxProperties: type: integer minimum: 0 minProperties: type: integer minimum: 0 default: 0 required: type: array items: type: string minItems: 1 uniqueItems: true enum: type: array items: {} minItems: 1 uniqueItems: false type: type: string enum: - array - boolean - integer - number - object - string properties: type: object additionalProperties: type: boolean default: true additionalProperties: type: boolean default: true description: type: string format: type: string default: {} nullable: type: boolean default: false readOnly: type: boolean default: false writeOnly: type: boolean default: false example: {} deprecated: type: boolean default: false contentMediaType: type: string contentEncoding: type: string contentSchema: type: string additionalProperties: false outputDescription: allOf: - $ref: '#/components/schemas/descriptionType' - type: object required: - schema properties: schema: $ref: '#/components/schemas/schema' inputDescription: allOf: - $ref: '#/components/schemas/descriptionType' - type: object required: - schema properties: minOccurs: type: integer default: 1 maxOccurs: oneOf: - type: integer default: 1 - type: string enum: - unbounded schema: $ref: '#/components/schemas/schema' process: allOf: - $ref: '#/components/schemas/processSummary' - type: object properties: inputs: additionalProperties: $ref: '#/components/schemas/inputDescription' outputs: additionalProperties: $ref: '#/components/schemas/outputDescription' process: allOf: - $ref: '#/components/schemas/processSummary' - type: object properties: inputs: additionalProperties: $ref: '#/components/schemas/inputDescription' outputs: additionalProperties: $ref: '#/components/schemas/outputDescription' output: type: object properties: format: $ref: '#/components/schemas/format' transmissionMode: $ref: '#/components/schemas/transmissionMode' additionalParameter: type: object required: - name - value properties: name: type: string value: type: array items: oneOf: - type: string - type: number - type: integer - type: array items: {} - type: object parameters: type: name: type in: query required: false schema: type: array items: type: string enum: - process jobId: name: jobId in: path description: local identifier of a job required: true schema: type: string maxDuration: name: maxDuration in: query required: false schema: type: array items: type: integer datetime: name: datetime in: query required: false schema: type: string limit: name: limit in: query required: false schema: type: integer minimum: 1 maximum: 1000 default: 10 minDuration: name: minDuration in: query required: false schema: type: array items: type: integer status: name: status in: query required: false schema: type: array items: $ref: '#/components/schemas/statusCode' processIdPathParam: name: processID in: path required: true schema: type: string processIdQueryParam: name: processID in: query required: false schema: type: array items: type: string