# info.title
pycsw OGC CITE demo and Reference Implementation

# info.description
pycsw is an OARec and OGC CSW server implementation written in Python. pycsw fully implements the OGC API - Records and OpenGIS Catalogue Service Implementation Specification (Catalogue Service for the Web). Initial development started in 2010 (more formally announced in 2011). The project is certified OGC Compliant, and is an OGC Reference Implementation. Since 2015, pycsw is an official OSGeo Project. pycsw allows for the publishing and discovery of geospatial metadata via numerous APIs (CSW 2/CSW 3, OpenSearch, OAI-PMH, SRU). Existing repositories of geospatial metadata can also be exposed, providing a standards-based metadata and catalogue component of spatial data infrastructures. pycsw is Open Source, released under an MIT license, and runs on all major platforms (Windows, Linux, Mac OS X)

# components.parameters.bbox.description
Only records 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)

The coordinate reference system of the values is WGS 84 long/lat
(http://www.opengis.net/def/crs/OGC/1.3/CRS84) unless a different
coordinate reference system is specified in the parameter `bbox-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 record 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.

# components.parameters.datetime.description
Either a date-time or an interval, open or closed. Date and time
expressions adhere to RFC 3339. Open intervals are expressed using
double-dots.

Examples:

* A date-time: "2018-02-12T23:20:50Z"
* A closed interval: "2018-02-12T00:00:00Z/2018-03-18T12:31:12Z"
* Open intervals: "2018-02-12T00:00:00Z/.." or "../2018-03-18T12:31:12Z"

Only records that have a temporal property that intersects the value of
`datetime` are selected.  It is left to the decision of the server
whether only a single temporal property is used to determine the extent
or all relevant temporal properties.

# components.parameters.limit.description
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.

# components.parameters.q.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 description
of the server.   Implementations should, however, apply the q
operator to the title, description and keywords keys/fields/properties.

# components.parameters.type.description
The optional type parameter supports searching by resource type.  Only
records whose type, as indicated by the value of the type core
queryable, is equal to one of the listed values shall be selected.

# components.parameters.externalId.description
The optional externalId parameter supports searching by an identifier
that was not assigned by the catalogue (i.e. an external identifier).
Only records with an external identifer, as indicated by the value of
the externalId core queryable array, that is equal to one of the listed
values shall be selected.

# components.parameters.offset.description
The optional offset parameter indicates the index within the result set from which the server shall begin presenting results in the response document.  The first element has an index of 0 (default).

# components.parameters.filter.description
The optional filter parameter specifies a CQL2 expression to be used for enhanced filtering

# components.parameters.filter-lang.description
The optional filter-lang parameter specifies the predicate language of the filter being applied

# components.parameters.vendorSpecificParameters.description
Additional "free-form" parameters that are not explicitly defined

# components.schemas.collectionInfo.properties.id.description
identifier of the collection used, for example, in URIs

# components.schemas.collectionInfo.properties.description.description
a description of the records in the collection

# components.schemas.collectionInfo.properties.itemType.description
indicator about the type of the items in the collection (the
default value is 'record' for OAPIR).

# components.schemas.collectionInfo.properties.crs.description
the list of coordinate reference systems supported by the service

# components.schemas.exception.description
information about the exception; an error code plus an optional
description.

# components.schemas.extent.description
The extent of the records 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.

# components.schemas.extent.properties.spatial.description
The spatial extent of the records in the collection.

# components.schemas.extent.properties.spatial.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. If multiple
areas are provided, the union of the bounding boxes describes
the spatial extent.

# components.schemas.extent.properties.spatial.properties.bbox.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)

The coordinate reference system of the values is WGS 84
long/lat (http://www.opengis.net/def/crs/OGC/1.3/CRS84)
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 record 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.

# components.schemas.extent.properties.spatial.properties.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 this is the only supported
coordinate reference system. Extensions may support additional
coordinate reference systems and add additional enum values.

# components.schemas.extent.properties.temporal.description
The temporal extent of the records in the collection.

# components.schemas.extent.properties.temporal.properties.interval.description
One or more time intervals that describe the temporal extent of
the dataset. The value `null` is supported and indicates an
open time interval. In the Core only a single time interval is
supported. Extensions may support multiple intervals. If
multiple intervals are provided, the union of the intervals
describes the temporal extent.

# components.schemas.extent.properties.temporal.properties.interval.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.

# components.schemas.extent.properties.temporal.properties.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.

# components.schemas.recordGeoJSON.properties.id.description
A unique identifier of the catalogue record.

# components.schemas.recordGeoJSON.properties.properties.properties.recordUpdated.description
The most recent date on which the record was changed.

# components.schemas.recordGeoJSON.properties.properties.properties.title.description
A human-readable name given to the resource.

# components.schemas.recordGeoJSON.properties.properties.properties.keywords.description
The topic or topics of the resource. Typically represented
using keywords, tags, key phrases, or classification codes.
Recommended best practice is to use a controlled vocabulary.

# components.schemas.recordGeoJSON.properties.properties.properties.keywordsCodespace.description
A reference to a controlled vocabulary used for the keywords.

# components.schemas.recordGeoJSON.properties.properties.properties.language.description
The natural language used for textual values (e.g. titles,
descriptions, etc.) of the resource. ISO 639-1/639-2 codes
should be used.

# components.schemas.recordGeoJSON.properties.properties.properties.externalId.description
An identifier for the resource assigned by an external (to
the catalogue) entity.

# components.schemas.recordGeoJSON.properties.properties.properties.updated.description
Most recent date on which the resource was changed.

# components.schemas.recordGeoJSON.properties.properties.properties.publisher.description
Link to the entity making the resource available. Recommended
best practice is to use a VCard
(see http://www.w3.org/TR/vcard-rdf/).

# components.schemas.recordGeoJSON.properties.properties.properties.themes.description
A knowledge organization system used to classify the resource.

# components.schemas.recordGeoJSON.properties.properties.properties.themes.items.properties.scheme.description
An identifier for the knowledge organization system used
to classify the resource.  It is recommended that the
identifier by a resolvable URI.

# components.schemas.recordGeoJSON.properties.properties.properties.themes.items.properties.concepts.description
One or more entity/concept identifers from this
knowledge system. it is recommended that a resolvable
URI be used for each entity/concept identifier.

# components.schemas.recordGeoJSON.properties.properties.properties.formats.description
A list of available distributions of the resource.

# components.schemas.recordGeoJSON.properties.properties.properties.contactPoint.description
Link to relevant contact information.  Recommended best
practice is to use a VCard
(see http://www.w3.org/TR/vcard-rdf/).

# components.schemas.recordGeoJSON.properties.properties.properties.license.description
A legal document under which the resource is made available.

# components.schemas.recordGeoJSON.properties.properties.properties.rights.description
A statement that concerns all rights not addresses by the
license such as a copyright statement.

# components.schemas.recordGeoJSON.properties.properties.properties.associations.description
A list of links for accessing the resource (e.g. download
link, access link) in one of the supported distribution
formats and/or links to other resources associated with
this resource.

# components.schemas.recordGeoJSON.properties.links.description
A list of links for navigating the API (e.g. prev, next, etc.).

# components.schemas.numberMatched.description
The number of records of the record type that match the selection
parameters like `bbox`.

# components.schemas.numberReturned.description
The number of records in the record collection.

A server may omit this information in a response, if the information
about the number of records is not known or difficult to compute.

If the value is provided, the value shall be identical to the number
of items in the "records" array.

# components.schemas.sortable.properties.description.description
a human-readable narrative describing the sortable

# components.schemas.sortable.properties.language.description
the language used for the title and description

# components.schemas.timeStamp.description
This property indicates the time and date when the response was
generated.

# components.schemas.queryable.properties.description.description
a human-readable narrative describing the queryable

# components.schemas.queryable.properties.language.description
the language used for the title and description

# components.schemas.queryable.properties.queryable.description
the token that may be used in a CQL predicate

# components.schemas.queryable.properties.title.description
a human readable title for the queryable

# components.schemas.queryable.properties.type-ref.description
a reference to the formal definition of the type

# components.responses.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 `conformance`), and the Record
Collections (path `/collections`, link relation
`data`).

# components.responses.ConformanceDeclaration.description
The URIs of all conformance classes supported by the server.

To support "generic" clients that want to access multiple
OGC API Records implementations - and not "just" a specific
API / server, the server declares the conformance
classes it implements and conforms to.

# components.responses.Collections.description
The record collections shared by this API.

Catalogues are organized as one or more record collections. This
resource provides information about and access to these collections.

The response contains the list of record collections (itemType=record).
For each record collection, a link to the items in the collection
(path `/collections/{collectionId}/items`, link relation `items`) as
well as key information about the collection. This information
includes...

* A local identifier for the collection that is unique for the +
  catalogue;
* A list of coordinate reference systems (CRS) in which geometries +
  may be returned by the server. The first CRS is the default +
  coordinate reference system (the default is always WGS 84 with axis +
  order longitude/latitude);
* An optional title and description for the collection;
* An optional extent that can be used to provide an indication of the +
  spatial and temporal extent of the collection - typically derived +
  from the data;
* An optional indicator about the type of the items in the collection +
  (the default value, if the indicator is not provided, is 'record').

# components.responses.Collection.description
Information about the record collection with id `collectionId`.

The response contains a link to the items in the collection
(path `/collections/{collectionId}/items`, link relation `items`)
as well as key information about the collection. This information
includes:

* A local identifier for the collection that is unique for the +
  catalogue;
* A list of coordinate reference systems (CRS) in which geometries +
  may be returned by the server. The first CRS is the default +
  coordinate reference system (the default is always WGS 84 with +
  axis order longitude/latitude);
* An optional title and description for the collection;
* An optional extent that can be used to provide an indication of +
  the spatial and temporal extent of the collection - typically +
  derived from the data;
* An optional indicator about the type of the items in the collection +
  (the default value, if the indicator is not provided, is 'record').

# components.responses.Records.description
The response is a document consisting of records in the collection.
The records included in the response are determined by the server
based on the query parameters of the request. To support access to
larger collections without overloading the client, the API supports
paged access with links to the next page, if more records are selected
that the page size.

The `bbox` and `datetime` parameter can be used to select only a
subset of the records in the collection (the records that are in the
bounding box or time interval). The `bbox` parameter matches all records
in the collection that are not associated with a location, too. The
`datetime` parameter matches all records in the collection that are
not associated with a time stamp or interval, too.

The `limit` parameter may be used to control the subset of the
selected records that should be returned in the response, the page size.
Each page may include information about the number of selected and
returned records (`numberMatched` and `numberReturned`) as well as
links to support paging (link relation `next`).

The XML representation of the response document is an ATOM feed.

# components.responses.Record.description
Fetch the record with id `recordId` in the record collection
with id `collectionId`.  The XML representation of a record
is an ATOM entry.

# components.responses.OpenSearchDescriptionDocument.description
description document for OpenSearch clients

# components.responses.NotFound.description
The requested resource does not exist on the server. For example,
a path parameter had an incorrect value.

# components.responses.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.

# servers[].description
pycsw is an OARec and OGC CSW server implementation written in Python. pycsw fully implements the OGC API - Records and OpenGIS Catalogue Service Implementation Specification (Catalogue Service for the Web). Initial development started in 2010 (more formally announced in 2011). The project is certified OGC Compliant, and is an OGC Reference Implementation. Since 2015, pycsw is an official OSGeo Project. pycsw allows for the publishing and discovery of geospatial metadata via numerous APIs (CSW 2/CSW 3, OpenSearch, OAI-PMH, SRU). Existing repositories of geospatial metadata can also be exposed, providing a standards-based metadata and catalogue component of spatial data infrastructures. pycsw is Open Source, released under an MIT license, and runs on all major platforms (Windows, Linux, Mac OS X)