openapi: 3.0.3
info:
title: "OGC API - Records - Part 1: Core"
version: '1.0.0'
description: |-
This is a sample OpenAPI definition that conforms to the conformance
classes of the "OGC API - Records - Part 1: Core" standard:
* Searchable Catalog
* Searchable Catalog - Sorting
* Local Resources Catalog
* Local Resources Catalog - Query Parameters
* Local Resources Catalog - Sorting
* OpenAPI 3.0
This example is a generic definition that uses path parameters to
describe all catalogs and records. The generic OpenAPI definition
does not provide any details on the catalogs or the record content.
This information is only available by accessing the catalog and its
records.
contact:
name: CubeWerx Inc.
email: pvretano@cubewerx.com
url: 'https://www.cubewerx.com'
license:
name: CC-BY 4.0 license
url: 'https://creativecommons.org/licenses/by/4.0/'
servers:
- url: 'https://example.org/data'
description: Production server
- url: 'https://example.org/data-dev'
description: Development server
tags:
- name: Capabilities
description: |-
essential characteristics of this API
- name: Conformance
description: |-
list of conformance classes implemented by this API
- name: Collections
description: |-
list of catalogs offered by this API
- name: Collection
description: |-
description of a catalog offered by this API
- name: Sortables
description: |-
list of record properties by which responses can be sorted
- name: Records
description: |-
access to records
- name: Record
description: |-
access to a single record
paths:
'/':
get:
tags:
- Capabilities
summary: landing page
description: |-
The landing page provides links to the API definition, the conformance
statements and to the record collections in this dataset.
operationId: getLandingPage
parameters:
- $ref: '#/components/parameters/language'
- $ref: '#/components/parameters/profile'
responses:
'200':
$ref: '#/components/responses/LandingPage'
'4XX':
$ref: '#/components/responses/BadRequest'
'406':
$ref: '#/components/responses/NotAcceptable'
'5XX':
$ref: '#/components/responses/ServerError'
'/conformance':
get:
tags:
- Conformance
summary: information about specifications that this API conforms to
description: |-
A list of all conformance classes specified in a standard that the
server conforms to.
operationId: getConformanceDeclaration
responses:
'200':
$ref: '#/components/responses/ConformanceDeclaration'
'4XX':
$ref: '#/components/responses/BadRequest'
'406':
$ref: '#/components/responses/NotAcceptable'
'5XX':
$ref: '#/components/responses/ServerError'
'/collections':
get:
tags:
- Collections
summary: the record collections
description: |-
Fetch list of catalogs offered by this API
operationId: getCollections
parameters:
- $ref: '#/components/parameters/bbox'
- $ref: '#/components/parameters/datetime'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/q'
- $ref: '#/components/parameters/type'
- $ref: '#/components/parameters/externalIds'
- $ref: '#/components/parameters/ids'
- $ref: '#/components/parameters/sortby'
- $ref: '#/components/parameters/language'
- $ref: '#/components/parameters/profile'
responses:
'200':
$ref: '#/components/responses/Catalogs'
'4XX':
$ref: '#/components/responses/BadRequest'
'406':
$ref: '#/components/responses/NotAcceptable'
'5XX':
$ref: '#/components/responses/ServerError'
'/collections/{catalogId}':
get:
tags:
- Collection
summary: |-
describe the record collection with id `catalogId`
description: |-
Fetch a detailed description of a catalog or collection of records
with id `catalogId`.
operationId: describeCollection
parameters:
- $ref: '#/components/parameters/catalogId'
- $ref: '#/components/parameters/language'
- $ref: '#/components/parameters/profile'
responses:
'200':
$ref: '#/components/responses/Catalog'
'4XX':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'406':
$ref: '#/components/responses/NotAcceptable'
'5XX':
$ref: '#/components/responses/ServerError'
'/collections/{catalogId}/sortables':
get:
tags:
- Sortables
summary: |-
get the list of sortable properties
description: |-
Fetch the list of properties which can be used to sort the getRecords
response.
operationId: getSortables
parameters:
- $ref: '#/components/parameters/catalogId'
- $ref: '#/components/parameters/language'
- $ref: '#/components/parameters/profile'
responses:
'200':
$ref: '#/components/responses/Sortables'
'4XX':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'406':
$ref: '#/components/responses/NotAcceptable'
'5XX':
$ref: '#/components/responses/ServerError'
'/collections/{catalogId}/items':
get:
tags:
- Records
summary: fetch records
description: |-
Fetch records from the record collection with id `catalogId`.
Every record in a dataset belongs to a collection. A dataset may
consist of multiple record collections. A record collection is often a
collection of records of a similar type, based on a common schema.
Use content negotiation to request HTML or GeoJSON.
operationId: getRecords
parameters:
- $ref: '#/components/parameters/catalogId'
- $ref: '#/components/parameters/bbox'
- $ref: '#/components/parameters/datetime'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/q'
- $ref: '#/components/parameters/type'
- $ref: '#/components/parameters/externalIds'
- $ref: '#/components/parameters/ids'
- $ref: '#/components/parameters/sortby'
- $ref: '#/components/parameters/language'
- $ref: '#/components/parameters/profile'
responses:
'200':
$ref: '#/components/responses/Records'
'4XX':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'406':
$ref: '#/components/responses/NotAcceptable'
'5XX':
$ref: '#/components/responses/ServerError'
'/collections/{catalogId}/items/{recordId}':
get:
tags:
- Record
summary: fetch a single record
description: |-
Fetch the record with id `recordId` from the record collection
with id `catalogId`.
Use content negotiation to request HTML or GeoJSON.
operationId: getRecord
parameters:
- $ref: '#/components/parameters/catalogId'
- $ref: '#/components/parameters/recordId'
- $ref: '#/components/parameters/language'
- $ref: '#/components/parameters/profile'
responses:
'200':
$ref: '#/components/responses/Record'
'4XX':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'406':
$ref: '#/components/responses/NotAcceptable'
'5XX':
$ref: '#/components/responses/ServerError'
components:
parameters:
bbox:
description: |-
Imported from OGC API - Features - Part 1: Core
See: https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/parameters/bbox.yaml'
Only features that have a geometry that intersects the bounding box are
selected. The 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
the 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 the parameter `bbox-crs`.
The query parameter `bbox-crs` is specified in
OGC API - Features - Part 2: Coordinate Reference Systems by Reference.
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.
name: bbox
in: query
required: false
schema:
type: array
oneOf:
- minItems: 4
maxItems: 4
- minItems: 6
maxItems: 6
items:
type: number
style: form
explode: false
catalogId:
name: catalogId
in: path
description: local identifier of a catalog
required: true
schema:
type: string
datetime:
description: |-
Imported from OGC API - Features - Part 1: Core
See: https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/parameters/datetime.yaml
Either a date-time or an interval. Date and time expressions adhere to
RFC 3339. Intervals may be bounded or half-bounded (double-dots at
start or end).
Examples:
* A date-time: "2018-02-12T23:20:50Z"
* A bounded interval: "2018-02-12T00:00:00Z/2018-03-18T12:31:12Z"
* Half-bounded intervals: "2018-02-12T00:00:00Z/.." or
"../2018-03-18T12:31:12Z"
Only features that have a temporal property that intersects the value
of `datetime` are selected.
If a feature has multiple temporal properties, it is the decision of the
server whether only a single temporal property is used to determine
the extent or all relevant temporal properties.
name: datetime
in: query
required: false
schema:
type: string
style: form
explode: false
externalIds:
name: externalIds
in: query
description: |-
The optional externalIds parameter allows a specific list of records,
identified by their external identifiers, to be fetched from a catalog.
Only records where one of their associated external identifiers equals
one of the values listed for this parameter shall appear in the
response.
required: false
schema:
type: array
items:
type: string
pattern: ([^:]+:)?[^:]+
explode: false
style: form
ids:
name: ids
in: query
description:
The optional ids parameter allows a specific list of records, identified
by their identifiers, to be fetched from a catalog. Only records whose
identifier matches one of the values listed for this parameter shall
appear in the response.
required: false
schema:
type: array
items:
type: string
explode: false
style: form
language:
name: language
in: query
description: |-
Optional way to query for specific languages for environments that can't
send HTTP headers in a simple way (e.g. a Web Browser).
The parameter accepts a comma-separated list of language identifiers,
optionally with priority per language.
This parameter value follows the specification of the `Accept-Language`
HTTP header.
schema:
type: array
items:
type: string
description: |-
The language tag as per RFC 5646, with optional priority parameter
`q` (0 - 1).
pattern: "^((?:(en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang))|((?:([A-Za-z]{2,3}(-(?:[A-Za-z]{3}(-[A-Za-z]{3}){0,2}))?)|[A-Za-z]{4}|[A-Za-z]{5,8})(-(?:[A-Za-z]{4}))?(-(?:[A-Za-z]{2}|[0-9]{3}))?(-(?:[A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3}))*(-(?:[0-9A-WY-Za-wy-z](-[A-Za-z0-9]{2,8})+))*(-(?:x(-[A-Za-z0-9]{1,8})+))?)|(?:x(-[A-Za-z0-9]{1,8})+))(?:;q=(?:1|1\\.0+|0|0\\.[0-9]+))?$"
explode: false
style: form
limit:
description: |-
Imported from OGC API - Features - Part 1: Core
See: https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/parameters/limit.yaml
The optional limit parameter limits the number of items that are
presented in the response document.
Only items are counted that are on the first level of the collection
in the response document.
Nested objects contained within the explicitly requested items shall
not be counted.
Minimum = 1. Maximum = 10000. Default = 10.
name: limit
in: query
required: false
schema:
type: integer
minimum: 1
maximum: 10000
default: 10
style: form
explode: false
profile:
name: profile
in: query
description: |-
One or more identifiers that provide information about additional
semantics (constraints, conventions, extensions), in addition to
those defined by the media type, that are associated with the
target resource.
required: false
schema:
type: array
items:
type: string
explode: false
style: form
q:
name: q
in: query
description: |-
The optional q parameter supports keyword searching. Only records
whose text fields contain one or more of the specified search terms
are selected. The specific set of text keys/fields/properties of a
record to which the q operator is applied is up to the discretion
of the server. Implementations should, however, apply the q
operator to the title, description and keywords keys/fields/properties.
required: false
schema:
type: array
items:
type: string
explode: false
style: form
recordId:
name: recordId
in: path
description: local identifier of a record
required: true
schema:
type: string
sortby:
name: sortby
in: query
description: |-
Specifies a comma-separated list of property names by which the
response shall be sorted. If the property name is preceded by a
plus (+) sign it indicates an ascending sort for that property.
If the property name is preceded by a minus (-) sign it indicates a
descending sort for that property. If the property is not preceded
by a plus or minus, then the default sort order implied is
ascending (+).
required: false
schema:
type: array
minItems: 1
items:
type: string
pattern: '[+|-]?[A-Za-z_].*'
explode: false
style: form
type:
name: type
in: query
description: |-
The optional type parameter allows a specific list of records,
identified by their resource type, to be fetched from a catalog.
Only records whose resource type matches one of the values listed
for this parameter shall appear in the response.
required: false
schema:
type: array
items:
type: string
explode: false
style: form
schemas:
f-collections:
description: |-
Imported from OGC API - Features - Part 1: Core
See: https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/collections.yaml
type: object
required:
- links
- collections
properties:
links:
type: array
items:
$ref: '#/components/schemas/link'
collections:
type: array
items:
$ref: '#/components/schemas/f-collection'
f-collection:
description: |-
Imported from OGC API - Features - Part 1: Core
See: https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/collection.yaml
type: object
required:
- id
- links
properties:
id:
description: identifier of the collection used, for example, in URIs
type: string
example: address
title:
description: human readable title of the collection
type: string
example: address
description:
description: a description of the features in the collection
type: string
example: An address.
links:
type: array
items:
$ref: '#/components/schemas/link'
example:
- href: http://data.example.com/buildings
rel: item
- href: http://example.com/concepts/buildings.html
rel: describedby
type: text/html
extent:
$ref: '#/components/schemas/f-extent'
itemType:
description: |-
indicator about the type of the items in the collection (the
default value is 'feature').
type: string
default: feature
crs:
description: |-
the list of coordinate reference systems supported by the service
type: array
items:
type: string
default:
- http://www.opengis.net/def/crs/OGC/1.3/CRS84
example:
- http://www.opengis.net/def/crs/OGC/1.3/CRS84
- http://www.opengis.net/def/crs/EPSG/0/4326
f-extent:
description: |-
Imported from OGC API - Features - Part 1: Core
See: https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/extent.yaml
The extent of the features 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.
An array of extents is provided for each extent type (spatial,
temporal). 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 extent in the array.
type: object
properties:
spatial:
description: |-
The spatial extent of the features 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 bounding box in the 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 `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 `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'
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 temporal extent will
only need to access the first time interval in the array (a
pair of lower and upper bound instants).
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` at start or end is supported and indicates
a half-bounded 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'
featureCollectionGeoJSON:
description: |-
Imported from OGC API - Features - Part 1: Core
See: https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/featureCollectionGeoJSON.yaml
type: object
required:
- type
- features
properties:
type:
type: string
enum:
- FeatureCollection
features:
type: array
items:
$ref: '#/components/schemas/featureGeoJSON'
links:
type: array
items:
$ref: '#/components/schemas/link'
timeStamp:
type: string
format: date-time
numberMatched:
type: integer
minimum: 0
numberReturned:
type: integer
minimum: 0
featureGeoJSON:
description: |-
Imported from OGC API - Features - Part 1: Core
See: https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/featureGeoJSON.yaml
type: object
required:
- type
- geometry
- properties
properties:
type:
type: string
enum:
- Feature
geometry:
$ref: '#/components/schemas/geometryGeoJSON'
properties:
type: object
nullable: true
id:
oneOf:
- type: string
- type: integer
links:
type: array
items:
$ref: '#/components/schemas/link'
geometryGeoJSON:
description: |-
Imported from OGC API - Features - Part 1: Core
See: https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/geometryGeoJSON.yaml
oneOf:
- $ref: '#/components/schemas/pointGeoJSON'
- $ref: '#/components/schemas/multipointGeoJSON'
- $ref: '#/components/schemas/linestringGeoJSON'
- $ref: '#/components/schemas/multilinestringGeoJSON'
- $ref: '#/components/schemas/polygonGeoJSON'
- $ref: '#/components/schemas/multipolygonGeoJSON'
- $ref: '#/components/schemas/geometrycollectionGeoJSON'
pointGeoJSON:
description: |-
Imported from OGC API - Features - Part 1: Core
See: https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/pointGeoJSON.yaml
type: object
required:
- type
- coordinates
properties:
type:
type: string
enum:
- Point
coordinates:
type: array
minItems: 2
items:
type: number
multipointGeoJSON:
description: |-
Imported from OGC API - Features - Part 1: Core
See: https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/multipointGeoJSON.yaml
type: object
required:
- type
- coordinates
properties:
type:
type: string
enum:
- MultiPoint
coordinates:
type: array
items:
type: array
minItems: 2
items:
type: number
linestringGeoJSON:
description: |-
Imported from OGC API - Features - Part 1: Core
See: https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/linestringGeoJSON.yaml
type: object
required:
- type
- coordinates
properties:
type:
type: string
enum:
- LineString
coordinates:
type: array
minItems: 2
items:
type: array
minItems: 2
items:
type: number
multilinestringGeoJSON:
description: |-
Imported from OGC API - Features - Part 1: Core
See: https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/multilinestringGeoJSON.yaml
type: object
required:
- type
- coordinates
properties:
type:
type: string
enum:
- MultiLineString
coordinates:
type: array
items:
type: array
minItems: 2
items:
type: array
minItems: 2
items:
type: number
polygonGeoJSON:
description: |-
Imported from OGC API - Features - Part 1: Core
See: https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/polygonGeoJSON.yaml
type: object
required:
- type
- coordinates
properties:
type:
type: string
enum:
- Polygon
coordinates:
type: array
items:
type: array
minItems: 4
items:
type: array
minItems: 2
items:
type: number
multipolygonGeoJSON:
description: |-
Imported from OGC API - Features - Part 1: Core
See: https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/multipolygonGeoJSON.yaml
type: object
required:
- type
- coordinates
properties:
type:
type: string
enum:
- MultiPolygon
coordinates:
type: array
items:
type: array
items:
type: array
minItems: 4
items:
type: array
minItems: 2
items:
type: number
geometrycollectionGeoJSON:
description: |-
Imported from OGC API - Features - Part 1: Core
See: https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/geometrycollectionGeoJSON.yaml
type: object
required:
- type
- geometries
properties:
type:
type: string
enum:
- GeometryCollection
geometries:
type: array
items:
$ref: '#/components/schemas/geometryGeoJSON'
exception:
d
# --- truncated at 32 KB (60 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/ogc/refs/heads/main/openapi/_original/ogc-records-part1-1-0-openapi-ogcapi-records-1-example-all-in-one.yaml