# info.description
OGC API Features implementation for geospatial data access

Compliance: OGC CITE 1117/1117 across 13 conformance suites — see docs/cite-status.md.

# info.x-honua-cite-compliance.summary
All 13 conformance suites pass at 100% on trunk.

# paths./.get.description
The landing page provides links to the API definition and other resources

# paths./api.get.summary
Get OpenAPI 3.0 specification for OGC API Features

# paths./api.get.description
Alias for the OpenAPI specification at /openapi.json

# paths./schemas/honua-ogcapi-features.xsd.get.summary
Get OGC API Features GML application schema

# paths./schemas/honua-ogcapi-features.xsd.get.description
Returns the XML Schema document used by Honua OGC API Features GML responses.

# paths./conformance.get.summary
Get OGC API Features conformance declaration

# paths./conformance.get.description
Conformance classes that this API conforms to

# paths./collections/{collectionId}/items.get.description
Get features from a collection with optional filtering

# paths./collections/{collectionId}/items.get.parameters[].description
Output format (json, geojson, gml, xml, csv, or html)

# paths./collections/{collectionId}/items.get.parameters[].description
Coordinate reference system URI for response geometry

# paths./collections/{collectionId}/items.get.parameters[].description
Temporal filter (RFC 3339 instant or interval)

# paths./collections/{collectionId}/items.post.description
Add a new feature to the specified collection

# paths./collections/{collectionId}/items.post.parameters[].description
Coordinate reference system URI for request geometry. Must be one of the collection-advertised CRSs.

# paths./collections/{collectionId}/items.post.responses.403.description
Authenticated caller is not authorized to create features in this collection

# paths./collections/{collectionId}/items/batch.post.description
Perform multiple create, update, or delete operations in a single request

# paths./collections/{collectionId}/items/batch.post.parameters[].description
Coordinate reference system URI applied to every GeoJSON feature in the batch payload. Must be one of the collection-advertised CRSs.

# paths./collections/{collectionId}/items/batch.post.responses.207.description
Batch operation completed with mixed results

# paths./collections/{collectionId}/items/batch.post.responses.403.description
Authenticated caller is not authorized to modify this collection

# paths./collections/{collectionId}.get.summary
Get OGC API Features collection metadata

# paths./collections/{collectionId}.get.description
Get detailed metadata for a specific collection

# paths./collections/{collectionId}/queryables.get.summary
Get queryable properties for a collection

# paths./collections/{collectionId}/queryables.get.description
Get JSON Schema describing queryable properties for filtering

# paths./collections/{collectionId}/queryables.get.parameters[].description
Output format (json, schemajson, schema+json, or html)

# paths./collections/{collectionId}/items/{featureId}.get.summary
Get a specific feature from a collection

# paths./collections/{collectionId}/items/{featureId}.get.description
Get a specific feature by its ID from a collection

# paths./collections/{collectionId}/items/{featureId}.get.parameters[].description
Output format (json, geojson, gml, xml, csv, or html)

# paths./collections/{collectionId}/items/{featureId}.get.parameters[].description
Coordinate reference system URI for response geometry

# paths./collections/{collectionId}/items/{featureId}.put.description
Replace an existing feature with new data

# paths./collections/{collectionId}/items/{featureId}.put.parameters[].description
Coordinate reference system URI for request geometry. Must be one of the collection-advertised CRSs.

# paths./collections/{collectionId}/items/{featureId}.put.parameters[].description
Strong ETag from a prior GET item response for optimistic concurrency control.

# paths./collections/{collectionId}/items/{featureId}.put.responses.403.description
Authenticated caller is not authorized to replace this feature

# paths./collections/{collectionId}/items/{featureId}.put.responses.412.description
ETag precondition failed - the feature has been modified since the provided ETag

# paths./collections/{collectionId}/items/{featureId}.patch.description
Apply a JSON Merge Patch document to update feature properties and/or geometry

# paths./collections/{collectionId}/items/{featureId}.patch.parameters[].description
Coordinate reference system URI for request geometry. Must be one of the collection-advertised CRSs.

# paths./collections/{collectionId}/items/{featureId}.patch.parameters[].description
Strong ETag from a prior GET item response for optimistic concurrency control.

# paths./collections/{collectionId}/items/{featureId}.patch.responses.403.description
Authenticated caller is not authorized to patch this feature

# paths./collections/{collectionId}/items/{featureId}.patch.responses.412.description
ETag precondition failed - the feature has been modified since the provided ETag

# paths./collections/{collectionId}/items/{featureId}.delete.description
Remove a feature from the specified collection

# paths./collections/{collectionId}/items/{featureId}.delete.responses.403.description
Authenticated caller is not authorized to delete this feature

# paths./collections/{collectionId}/h3.get.summary
H3 hexagonal grid aggregation for a collection

# paths./collections/{collectionId}/h3.get.description
Groups collection features into H3 cells at a configurable resolution and returns GeoJSON features with aggregate statistics per cell

# paths./collections/{collectionId}/h3.get.responses.200.description
H3 aggregation as GeoJSON FeatureCollection

# paths./collections/{collectionId}/h3.get.responses.501.description
H3 extension not available — the h3-pg PostgreSQL extension is not installed

# paths./collections/{collectionId}/h3.get.responses.503.description
H3 capability check failed — the database may be temporarily unreachable

# paths./collections/{collectionId}/clusters.post.summary
Spatial clustering for a collection (Pro)

# paths./collections/{collectionId}/clusters.post.description
Runs DBSCAN or K-Means clustering over the collection features and returns either per-feature cluster assignments or per-cluster convex hulls. `outStatistics` requires `returnHullPerCluster=true` (the aggregate columns only exist in the GROUP BY cluster-hull path); supplying both `returnHullPerCluster=false` and `outStatistics` returns HTTP 400. Pro-tier feature gated by ADR-0024.

# paths./collections/{collectionId}/clusters.post.requestBody.description
Clustering request payload (algorithm, parameters, and optional shared filters)

# paths./collections/{collectionId}/clusters.post.requestBody.content.application/json.schema.properties.algorithm.description
Clustering algorithm. When omitted, defaults to 'dbscan'.

# paths./collections/{collectionId}/clusters.post.requestBody.content.application/json.schema.properties.eps.description
DBSCAN neighborhood distance in meters. Required when algorithm is 'dbscan'.

# paths./collections/{collectionId}/clusters.post.requestBody.content.application/json.schema.properties.minPoints.description
DBSCAN minimum cluster size. Required when algorithm is 'dbscan'.

# paths./collections/{collectionId}/clusters.post.requestBody.content.application/json.schema.properties.k.description
K-Means cluster count. Required when algorithm is 'kmeans'.

# paths./collections/{collectionId}/clusters.post.requestBody.content.application/json.schema.properties.returnHullPerCluster.description
Return per-cluster convex hulls instead of per-feature assignments. Must be true when outStatistics is supplied — aggregate columns are only emitted in the hull-per-cluster GROUP BY path.

# paths./collections/{collectionId}/clusters.post.requestBody.content.application/json.schema.properties.outStatistics.description
Optional statistic definitions evaluated per cluster. Only honored when returnHullPerCluster=true; supplying outStatistics with returnHullPerCluster=false returns HTTP 400.

# paths./collections/{collectionId}/clusters.post.requestBody.content.application/json.schema.properties.where.description
ArcGIS SQL filter applied before clustering.

# paths./collections/{collectionId}/clusters.post.requestBody.content.application/json.schema.properties.objectIds.description
Comma-separated list of integer feature identifiers used to restrict the input set before clustering.

# paths./collections/{collectionId}/clusters.post.requestBody.content.application/json.schema.properties.geometry.description
GeoServices geometry filter applied before clustering. May be supplied as a GeoServices geometry JSON object or the equivalent serialized JSON string.

# paths./collections/{collectionId}/clusters.post.requestBody.content.application/json.schema.properties.geometryType.description
GeoServices geometry type for the geometry filter (for example esriGeometryPoint, esriGeometryEnvelope, or esriGeometryPolygon).

# paths./collections/{collectionId}/clusters.post.requestBody.content.application/json.schema.properties.inSR.description
Spatial reference for the geometry filter, expressed as a WKID, well-known text string, or spatial-reference JSON object understood by the FeatureServer spatial-reference resolver.

# paths./collections/{collectionId}/clusters.post.requestBody.content.application/json.schema.properties.spatialRel.description
GeoServices spatial relationship applied with geometry. Distance-based relationships are not supported on analytics endpoints because distance is operation-specific.

# paths./collections/{collectionId}/clusters.post.requestBody.content.application/json.schema.properties.time.description
FeatureServer time filter interval applied before clustering.

# paths./collections/{collectionId}/clusters.post.requestBody.content.application/json.schema.properties.timeRelation.description
FeatureServer temporal relationship used with the time filter.

# paths./collections/{collectionId}/clusters.post.responses.200.description
Cluster assignments or hulls as GeoJSON FeatureCollection

# paths./collections/{collectionId}/clusters.post.responses.400.description
Invalid clustering parameters or filter syntax

# paths./collections/{collectionId}/clusters.post.responses.501.description
Spatial analytics backend not available — the active feature-store provider does not ship a spatial analytics reader (for example, the DuckDB read-only provider). Permanent condition until providers are switched; not a transient failure.

# paths./collections/{collectionId}/spatial-join.post.summary
Spatial join against a target collection (Pro)

# paths./collections/{collectionId}/spatial-join.post.description
Joins features from the source collection against a join collection using a spatial predicate (intersects, contains, within, dwithin) and optionally aggregates carry fields and statistics. The join layer is identified by its integer layer id (the same value used as the OGC collection id). Pro-tier feature gated by ADR-0024.

# paths./collections/{collectionId}/spatial-join.post.requestBody.description
Spatial join request payload (join layer id, predicate, optional distance, carry fields, outStatistics, and shared filters)

# paths./collections/{collectionId}/spatial-join.post.requestBody.content.application/json.schema.properties.joinLayerId.description
Integer id of the layer to join against. Must differ from the source collection id.

# paths./collections/{collectionId}/spatial-join.post.requestBody.content.application/json.schema.properties.distance.description
Distance in meters. Required when predicate is 'dwithin'.

# paths./collections/{collectionId}/spatial-join.post.requestBody.content.application/json.schema.properties.carryFields.description
Comma-separated list of join-layer field names to aggregate onto each target row.

# paths./collections/{collectionId}/spatial-join.post.requestBody.content.application/json.schema.properties.where.description
ArcGIS SQL filter applied before the spatial join.

# paths./collections/{collectionId}/spatial-join.post.requestBody.content.application/json.schema.properties.objectIds.description
Comma-separated list of integer feature identifiers used to restrict the target input set before the spatial join.

# paths./collections/{collectionId}/spatial-join.post.requestBody.content.application/json.schema.properties.geometry.description
GeoServices geometry filter applied before the spatial join. May be supplied as a GeoServices geometry JSON object or the equivalent serialized JSON string.

# paths./collections/{collectionId}/spatial-join.post.requestBody.content.application/json.schema.properties.geometryType.description
GeoServices geometry type for the geometry filter (for example esriGeometryPoint, esriGeometryEnvelope, or esriGeometryPolygon).

# paths./collections/{collectionId}/spatial-join.post.requestBody.content.application/json.schema.properties.inSR.description
Spatial reference for the geometry filter, expressed as a WKID, well-known text string, or spatial-reference JSON object understood by the FeatureServer spatial-reference resolver.

# paths./collections/{collectionId}/spatial-join.post.requestBody.content.application/json.schema.properties.spatialRel.description
GeoServices spatial relationship applied with geometry. Distance-based relationships are not supported on analytics endpoints because distance is operation-specific.

# paths./collections/{collectionId}/spatial-join.post.requestBody.content.application/json.schema.properties.time.description
FeatureServer time filter interval applied before the spatial join.

# paths./collections/{collectionId}/spatial-join.post.requestBody.content.application/json.schema.properties.timeRelation.description
FeatureServer temporal relationship used with the time filter.

# paths./collections/{collectionId}/spatial-join.post.responses.200.description
Joined features as GeoJSON FeatureCollection

# paths./collections/{collectionId}/spatial-join.post.responses.501.description
Spatial analytics backend not available — the active feature-store provider does not ship a spatial analytics reader (for example, the DuckDB read-only provider). Permanent condition until providers are switched; not a transient failure.

# paths./collections/{collectionId}/buffer-aggregate.post.summary
Buffer + aggregate for a collection (Pro)

# paths./collections/{collectionId}/buffer-aggregate.post.description
Buffers features by a configurable radius and optionally dissolves overlapping buffers, groups by attributes, and emits aggregate statistics. `outStatistics` requires `dissolve=true` (the aggregate columns only exist in the dissolved group-by path); supplying both `dissolve=false` and `outStatistics` returns HTTP 400. Pro-tier feature gated by ADR-0024.

# paths./collections/{collectionId}/buffer-aggregate.post.requestBody.description
Buffer aggregate request payload (distance, unit, dissolve flag, optional groupByFields, outStatistics, and shared filters)

# paths./collections/{collectionId}/buffer-aggregate.post.requestBody.content.application/json.schema.properties.distance.description
Buffer radius. Interpreted in the supplied unit (default meters). The server enforces an operator-configured maximum after unit conversion.

# paths./collections/{collectionId}/buffer-aggregate.post.requestBody.content.application/json.schema.properties.unit.description
Unit of measure for distance. Aliases m/km/ft/mi are also accepted.

# paths./collections/{collectionId}/buffer-aggregate.post.requestBody.content.application/json.schema.properties.dissolve.description
Union overlapping buffers within each group. Must be true when outStatistics is supplied — the aggregate columns are only emitted in the dissolved GROUP BY path.

# paths./collections/{collectionId}/buffer-aggregate.post.requestBody.content.application/json.schema.properties.groupByFields.description
Comma-separated list of field names to group buffers by before dissolving.

# paths./collections/{collectionId}/buffer-aggregate.post.requestBody.content.application/json.schema.properties.where.description
ArcGIS SQL filter applied before the buffer aggregate operation.

# paths./collections/{collectionId}/buffer-aggregate.post.requestBody.content.application/json.schema.properties.objectIds.description
Comma-separated list of integer feature identifiers used to restrict the input set before buffer aggregation.

# paths./collections/{collectionId}/buffer-aggregate.post.requestBody.content.application/json.schema.properties.geometry.description
GeoServices geometry filter applied before buffer aggregation. May be supplied as a GeoServices geometry JSON object or the equivalent serialized JSON string.

# paths./collections/{collectionId}/buffer-aggregate.post.requestBody.content.application/json.schema.properties.geometryType.description
GeoServices geometry type for the geometry filter (for example esriGeometryPoint, esriGeometryEnvelope, or esriGeometryPolygon).

# paths./collections/{collectionId}/buffer-aggregate.post.requestBody.content.application/json.schema.properties.inSR.description
Spatial reference for the geometry filter, expressed as a WKID, well-known text string, or spatial-reference JSON object understood by the FeatureServer spatial-reference resolver.

# paths./collections/{collectionId}/buffer-aggregate.post.requestBody.content.application/json.schema.properties.spatialRel.description
GeoServices spatial relationship applied with geometry. Distance-based relationships are not supported on analytics endpoints because distance is operation-specific.

# paths./collections/{collectionId}/buffer-aggregate.post.requestBody.content.application/json.schema.properties.time.description
FeatureServer time filter interval applied before buffer aggregation.

# paths./collections/{collectionId}/buffer-aggregate.post.requestBody.content.application/json.schema.properties.timeRelation.description
FeatureServer temporal relationship used with the time filter.

# paths./collections/{collectionId}/buffer-aggregate.post.responses.200.description
Buffered features as GeoJSON FeatureCollection

# paths./collections/{collectionId}/buffer-aggregate.post.responses.501.description
Spatial analytics backend not available — the active feature-store provider does not ship a spatial analytics reader (for example, the DuckDB read-only provider). Permanent condition until providers are switched; not a transient failure.

# paths./collections/{collectionId}/density.post.description
Bins features into a hexagonal or square grid at a configurable cell size and returns counts or weighted sums per cell. Pro-tier feature gated by ADR-0024.

# paths./collections/{collectionId}/density.post.requestBody.description
Density request payload (grid mode, cell size, optional weight field, and shared filters)

# paths./collections/{collectionId}/density.post.requestBody.content.application/json.schema.properties.mode.description
Grid type. Aliases 'hexgrid', 'hex-grid', 'squaregrid', 'square-grid' are also accepted.

# paths./collections/{collectionId}/density.post.requestBody.content.application/json.schema.properties.cellSize.description
Cell size in meters. Bounded by the operator-configured min/max density cell size.

# paths./collections/{collectionId}/density.post.requestBody.content.application/json.schema.properties.weightField.description
Optional numeric field summed per cell instead of feature counts.

# paths./collections/{collectionId}/density.post.requestBody.content.application/json.schema.properties.where.description
ArcGIS SQL filter applied before density binning.

# paths./collections/{collectionId}/density.post.requestBody.content.application/json.schema.properties.objectIds.description
Comma-separated list of integer feature identifiers used to restrict the input set before density binning.

# paths./collections/{collectionId}/density.post.requestBody.content.application/json.schema.properties.geometry.description
GeoServices geometry filter applied before density binning. May be supplied as a GeoServices geometry JSON object or the equivalent serialized JSON string.

# paths./collections/{collectionId}/density.post.requestBody.content.application/json.schema.properties.geometryType.description
GeoServices geometry type for the geometry filter (for example esriGeometryPoint, esriGeometryEnvelope, or esriGeometryPolygon).

# paths./collections/{collectionId}/density.post.requestBody.content.application/json.schema.properties.inSR.description
Spatial reference for the geometry filter, expressed as a WKID, well-known text string, or spatial-reference JSON object understood by the FeatureServer spatial-reference resolver.

# paths./collections/{collectionId}/density.post.requestBody.content.application/json.schema.properties.spatialRel.description
GeoServices spatial relationship applied with geometry. Distance-based relationships are not supported on analytics endpoints because distance is operation-specific.

# paths./collections/{collectionId}/density.post.requestBody.content.application/json.schema.properties.time.description
FeatureServer time filter interval applied before density binning.

# paths./collections/{collectionId}/density.post.requestBody.content.application/json.schema.properties.timeRelation.description
FeatureServer temporal relationship used with the time filter.

# paths./collections/{collectionId}/density.post.responses.200.description
Density bins as GeoJSON FeatureCollection

# paths./collections/{collectionId}/density.post.responses.501.description
Spatial analytics backend not available — the active feature-store provider does not ship a spatial analytics reader (for example, the DuckDB read-only provider). Permanent condition until providers are switched; not a transient failure.

# components.schemas.GeoJsonFeatureMergePatch.description
Sparse GeoJSON Feature merge patch. Omitted members remain unchanged.

# components.schemas.GeoJsonGeometry.properties.coordinates.description
Coordinate array whose structure depends on the geometry type (RFC 7946)