Open Geospatial Consortium (OGC) Record API
access to a single record
access to a single record
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-record-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 Record 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 Record 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: Record
description: access to a single record
paths:
/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'
servers:
- url: https://example.org/data
description: Production server
- url: https://example.org/data-dev
description: Development server
components:
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
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.'
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
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
description: A human readable description for the concept.
url:
type: string
format: uri
description: A URI providing further description of the concept.
scheme:
type: string
description: 'An identifier for the knowledge organization system used
to classify the resource. It is recommended that the
identifier be a resolvable URI. The list of schemes used
in a searchable catalog can be determined by inspecting
the server''s OpenAPI document or, if the server implements
CQL2, by exposing a queryable (e.g. named `scheme`) and
enumerating the list of schemes in the queryable''s schema
definition.'
parameters:
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
recordId:
name: recordId
in: path
description: local identifier of a record
required: true
schema:
type: string
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
catalogId:
name: catalogId
in: path
description: local identifier of a catalog
required: true
schema:
type: string
responses:
Record:
description: 'Fetch the record with id `recordId` in the record collection
with id `collectionId`'
content:
application/geo+json:
schema:
$ref: '#/components/schemas/recordGeoJSON'
text/html:
schema:
type: string
NotFound:
description: 'The requested resource does not exist on the server. For example,
a path parameter had an incorrect value.'
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
NotAcceptable:
description: 'Content negotiation failed. For example, the `Accept` header submitted
in the request did not support any of the media types supported by the
server for the requested resource.'
content:
application/json:
schema:
$ref: '#/components/schemas/exception'
text/html:
schema:
type: string
BadRequest:
description: A client error occurred.
content:
application/json:
schema:
$ref: '#/components/schemas/exception'
text/html:
schema:
type: string
securitySchemes:
openIdConnect:
type: openIdConnect
openIdConnectUrl: https://accounts.google.com/.well-known/openid-configuration
x-refined-from:
- 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