Open Geospatial Consortium (OGC) Records API
access to records
access to records
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/ogc-records-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Ogc Records API
version: 1.0.0
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/
description: 'Operations tagged Records across 3 of this provider''s published API definitions: ogc-records-part1-1-0-openapi-ogcapi-records-1-example-all-in-one.yaml, ogc-records-part1-1-0-openapi-ogcapi-records-1-example-ref-buildingblocks-bundle.yaml, ogc-records-part1-1-0-openapi-ogcapi-records-1-example-ref-schema-repo.yaml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://example.org/data
description: Production server
- url: https://example.org/data-dev
description: Development server
security:
- openIdConnect: []
tags:
- name: Records
description: access to records
paths:
/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'
servers:
- url: https://example.org/data
description: Production server
- url: https://example.org/data-dev
description: Development server
components:
parameters:
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
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
datetime:
description: "Imported from OGC API - Features - Part 1: Core\nSee: https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/parameters/datetime.yaml\n\nEither a date-time or an interval. Date and time expressions adhere to\nRFC 3339. Intervals may be bounded or half-bounded (double-dots at\nstart or end).\n\nExamples:\n\n* A date-time: \"2018-02-12T23:20:50Z\"\n* A bounded interval: \"2018-02-12T00:00:00Z/2018-03-18T12:31:12Z\"\n* Half-bounded intervals: \"2018-02-12T00:00:00Z/..\" or\n \"../2018-03-18T12:31:12Z\"\n\nOnly features that have a temporal property that intersects the value\nof `datetime` are selected.\n\nIf a feature has multiple temporal properties, it is the decision of the\nserver whether only a single temporal property is used to determine\nthe extent or all relevant temporal properties."
name: datetime
in: query
required: false
schema:
type: string
style: form
explode: false
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
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
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
profile:
name: profile
in: query
description: "One or more identifiers that provide information about additional\nsemantics (constraints, conventions, extensions), in addition to \nthose defined by the media type, that are associated with the\ntarget resource."
required: false
schema:
type: array
items:
type: string
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
catalogId:
name: catalogId
in: path
description: local identifier of a catalog
required: true
schema:
type: string
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
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
schemas:
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
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
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
linkBase:
type: object
properties:
rel:
type: string
description: The type or semantics of the relation.
type:
type: string
description: 'A hint indicating what the media type of the
result of dereferencing the link should be.'
hreflang:
type: string
description: 'A hint indicating what the language of the
result of dereferencing the link should be.'
title:
type: string
description: 'Used to label the destination of a link
such that it can be used as a human-readable
identifier.'
length:
type: integer
profile:
type: array
description: "One or more identifiers that provide information about additional\nsemantics (constraints, conventions, extensions), in addition to \nthose defined by the media type, that are associated with the\ntarget resource."
items:
type: string
created:
type: string
description: 'Date of creation of the resource pointed to
by the link.'
format: date-time
updated:
type: string
description: 'Most recent date on which the resource pointed
to by the link was changed.'
format: date-time
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'
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
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
roles:
description: 'The list of duties, job functions or permissions assigned by the system
and associated with the context of this member.'
type: array
minItems: 1
items:
type: string
linkTemplate:
allOf:
- $ref: '#/components/schemas/linkBase'
- type: object
required:
- uriTemplate
properties:
uriTemplate:
type: string
description: 'Supplies a resolvable URI to a remote resource
(or resource fragment).'
varBase:
type: string
description: 'The base URI to which the variable name can be
appended to retrieve the definition of the
variable as a JSON Schema fragment.'
format: uri-reference
variables:
type: object
description: 'This object contains one key per substitution
variable in the templated URL. Each key defines
the schema of one substitution variable using a
JSON Schema fragment and can thus include things
like the data type of the variable, enumerations,
minimum values, maximum values, etc.'
recordCollectionGeoJSON:
allOf:
- $ref: '#/components/schemas/featureCollectionGeoJSON'
- type: object
properties:
features:
type: array
items:
$ref: '#/components/schemas/recordGeoJSON'
linkTemplates:
type: array
items:
$ref: '#/components/schemas/linkTemplate'
language:
type: object
description: The language used for textual values in this record.
required:
- code
properties:
code:
type: string
description: The language tag as per RFC-5646.
name:
type: string
minLength: 1
description: The untranslated name of the language.
alternate:
type: string
description: 'The name of the language in another well-understood language,
usually English.'
dir:
type: string
description: 'The direction for text in this language. The default, `ltr`
(left-to-right), represents the most common situation.
However, care should be taken to set the value of `dir`
appropriately if the language direction is not `ltr`.
Other values supported are `rtl` (right-to-left), `ttb`
(top-to-bottom), and `btt` (bottom-to-top).'
enum:
- ltr
- rtl
- ttb
- btt
default: ltr
license:
type: string
description: 'A legal document under which the resource is made available.
If the resource is being made available under a common license
then use an SPDX license id (https://spdx.org/licenses/).
If the resource is being made available under multiple common
licenses then use an SPDX license expression v2.3 string
(https://spdx.github.io/spdx-spec/v2.3/SPDX-license-expressions/)
If the resource is being made available under one or more licenses
that haven''t been assigned an SPDX identifier or one or more custom
licenses then use a string value of ''other'' and include one or more
links (rel="license") in the `link` section of the record to the
file(s) that contains the text of the license(s).
There is also the case of a resource that is private or unpublished
and is thus unlicensed; in this case do not register such a resource
in the catalog in the first place since there is no point in making
such a resource discoverable.'
exception:
description: 'Imported from OGC API - Features - Part 1: Core
See: https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/exception.yaml'
type: object
required:
- code
properties:
code:
type: string
description:
type: string
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
- 'null'
id:
oneOf:
- type: string
- type: integer
links:
type: array
items:
$ref: '#/components/schemas/link'
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'
link:
type: object
allOf:
- $ref: '#/components/schemas/linkBase'
- type: object
required:
- href
properties:
href:
type: string
format: uri
contact:
type: object
description: 'Identification of, and means of communication with, person responsible
for the resource.'
anyOf:
- required:
- name
- required:
- organization
properties:
identifier:
type: string
description: A value uniquely identifying a contact.
name:
type: string
description: The name of the responsible person.
position:
type: string
description: 'The name of the role or position of the responsible person taken
from the organization''s formal organizational hierarchy or chart.'
organization:
type: string
description: Organization/affiliation of the contact.
logo:
description: 'Graphic identifying a contact. The link relation should be `icon`
and the media type should be an image media type.'
allOf:
- $ref: '#/components/schemas/link'
- type: object
required:
- rel
- type
properties:
rel:
enum:
- icon
phones:
type: array
description: Telephone numbers at which contact can be made.
items:
type: object
required:
- value
properties:
value:
type: string
description: The value is the phone number itself.
pattern: ^\+[1-9]{1}[0-9]{3,14}$
roles:
$ref: '#/components/schemas/roles'
emails:
type: array
description: Email addresses at which contact can be made.
items:
type: object
required:
- value
properties:
value:
type: string
description: The value is the email number itself.
format: email
roles:
$ref: '#/components/schemas/roles'
addresses:
type: array
description: Physical location at which contact can be made.
items:
type: object
properties:
deliveryPoint:
type: array
description: Address lines for the location.
items:
type: string
city:
type: string
description: City for the location.
administrativeArea:
type: string
description: State or province of the location.
postalCode:
type: string
description: ZIP or other postal code.
country:
type: string
description: Country of the physical address. ISO 3166-1 is recommended.
roles:
$ref: '#/components/schemas/roles'
links:
type: array
description: On-line information about the contact.
items:
allOf:
- $ref: '#/components/schemas/link'
- type: object
required:
- type
hoursOfService:
type: string
description: Time period when the contact can be contacted.
contactInstructions:
type: string
description: 'Supplemental instructions on how or when to contact the
responsible party.'
roles:
$ref: '#/components/schemas/roles'
recordCommonProperties:
type: object
properties:
created:
type: string
description: The date this record was created in the server.
format: date-time
updated:
type: string
description: The most recent date on which the record was changed.
format: date-time
type:
type: string
description: 'The nature or genre of the resource. The value
should be a code, convenient for filtering
records. Where available, a link to the canonical
URI of the record type resource will be added to
the ''links'' property.'
title:
type: string
description: A human-readable name given to the resource.
description:
type: string
description: A free-text account of the resource.
keywords:
type: array
description: 'The topic or topics of the resource. Typically
represented using free-form keywords, tags, key
phrases, or classification codes.'
items:
type: string
themes:
type: array
description: 'A knowledge organization system used to classify
the resource.'
minItems: 1
items:
$ref: '#/components/schemas/theme'
language:
$ref: '#/components/schemas/language'
languages:
type: array
description: 'This list of languages in which this record is
available.'
items:
$ref: '#/components/schemas/language'
resourceLanguages:
type: array
description: 'The list of languages in which the resource
described by this record is available.'
items:
$ref: '#/components/schemas/language'
externalIds:
type: array
description: 'An identifier for the resource assigned by an
external (to the catalog) entity.'
items:
type: object
properties:
scheme:
type: string
description: 'A reference to an authority or identifier
for a knowledge organization system from
which the external identifier was obtained.
It is recommended that the identifier be a
resolvable URI.'
value:
type: string
description: The value of the identifier.
required:
- value
formats:
type: array
description: A list of available distributions of the resource.
items:
$ref: '#/components/schemas/format'
contacts:
type: array
description: 'A list of contacts qualified by their role(s) in
association to the record or the resource described
by the record.'
items:
$ref: '#/components/schemas/contact'
license:
$ref: '#/components/schemas/license'
rights:
type: string
description: 'A statement that concerns all rights not addressed
by the license such as a copyright statement.'
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
recordGeoJSON:
type: object
required:
- id
- type
- geometry
- properties
properties:
id:
oneOf:
- type: string
- type: integer
description: A unique identifier of the catalog record.
type:
type: string
enum:
- Feature
time:
oneOf:
- type:
- object
- 'null'
- $ref: '#/components/schemas/time'
geometry:
oneOf:
- type:
- object
- 'null'
- $ref: '#/components/schemas/geometryGeoJSON'
conformsTo:
type: array
description: The extensions/conformance classes used in this record.
items:
type: string
properties:
oneOf:
- type:
- object
- 'null'
- allOf:
- type: object
- $ref: '#/components/schemas/recordCommonProperties'
links:
type: array
items:
$ref: '#/components/schemas/link'
linkTemplates:
type: array
items:
$ref: '#/components/schemas/linkTemplate'
format:
type: object
anyOf:
- required:
- name
- required:
- mediaType
properties:
name:
type: string
mediaType:
type: string
time:
type: object
properties:
date:
type: string
pattern: ^\d{4}-\d{2}-\d{2}$
timestamp:
type: string
pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z$
interval:
type: array
minItems: 2
maxItems: 2
items:
oneOf:
- type: string
pattern: ^\d{4}-\d{2}-\d{2}$
- type: string
pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z$
- type: string
enum:
- ..
resolution:
type: string
description: 'Minimum time period resolvable in the dataset, as an ISO 8601
duration'
theme:
type: object
required:
- concepts
- scheme
properties:
concepts:
type: array
description: 'One or more entity/concept identifiers from this knowledge
system. it is recommended that a resolvable URI be used for
each entity/concept identifier.'
minItems: 1
items:
type: object
required:
- id
properties:
id:
type: string
description: An identifier for the concept.
title:
type: string
description: A human readable title for the concept.
description:
type: string
des
# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/ogc/refs/heads/main/openapi/ogc-records-api-openapi.yml