├── core
├── standard
│ ├── HTML_Gen.bat
│ ├── recommendations
│ │ ├── README.md
│ │ ├── building-blocks
│ │ │ ├── query-param-profile
│ │ │ │ ├── PER_default.adoc
│ │ │ │ ├── REC_link-header.adoc
│ │ │ │ ├── PER_profiles-of-media-type.adoc
│ │ │ │ └── REC_negotiation.adoc
│ │ │ ├── record-collection
│ │ │ │ ├── REC_title.adoc
│ │ │ │ ├── REC_description.adoc
│ │ │ │ ├── PER_catalogs.adoc
│ │ │ │ ├── PER_record-access-modes.adoc
│ │ │ │ ├── PER_records-array-name.adoc
│ │ │ │ ├── PER_common-mark.adoc
│ │ │ │ ├── REC_record-langs.adoc
│ │ │ │ ├── PER_links.adoc
│ │ │ │ ├── REC_links-catalog-hierarchy.adoc
│ │ │ │ ├── REC_keywords-themes.adoc
│ │ │ │ └── PER_additional-properties.adoc
│ │ │ ├── record-core
│ │ │ │ ├── REC_contact.adoc
│ │ │ │ ├── PER_record-geometry.adoc
│ │ │ │ ├── PER_common-mark.adoc
│ │ │ │ ├── REC_record-description.adoc
│ │ │ │ ├── REC_format.adoc
│ │ │ │ ├── REC_record-links_type.adoc
│ │ │ │ ├── REC_record-title.adoc
│ │ │ │ ├── PER_record-type.adoc
│ │ │ │ ├── PER_temporal_comparison.adoc
│ │ │ │ ├── REC_record-associations_templated.adoc
│ │ │ │ ├── REC_record-links_iana.adoc
│ │ │ │ ├── REC_record-associations_relate.adoc
│ │ │ │ ├── REC_resource-langs.adoc
│ │ │ │ └── REC_time.adoc
│ │ │ ├── json
│ │ │ │ ├── REC_header-profile-link.adoc
│ │ │ │ └── PER_time.adoc
│ │ │ ├── html
│ │ │ │ └── REC_schema-org.adoc
│ │ │ ├── sorting
│ │ │ │ ├── PER_synthetic.adoc
│ │ │ │ └── REC_sortables-schema.adoc
│ │ │ ├── record-core-query-parameters
│ │ │ │ ├── REC_param-q.adoc
│ │ │ │ └── REC_query-param-type-definition.adoc
│ │ │ ├── records-api
│ │ │ │ ├── REC_html.adoc
│ │ │ │ └── PER_query-params.adoc
│ │ │ └── record-filter
│ │ │ │ ├── REC_json-encoding.adoc
│ │ │ │ └── REC_text-encoding.adoc
│ │ ├── crawlable-catalog
│ │ │ ├── REC_record-file-name.adoc
│ │ │ └── REC_record-file-location.adoc
│ │ ├── local-resources-catalog_filtering
│ │ │ ├── REC_text-encoding.adoc
│ │ │ └── REC_json-encoding.adoc
│ │ └── local-resources-catalog
│ │ │ ├── PER_additional-record-properties.adoc
│ │ │ ├── PER_other-catalog-properties.adoc
│ │ │ └── PER_other-record-properties.adoc
│ ├── .gitignore
│ ├── PDF_Gen.bat
│ ├── annex_history.adoc
│ ├── requirements
│ │ ├── building-blocks
│ │ │ ├── requirements_class_query-param-profile.adoc
│ │ │ ├── record-collection
│ │ │ │ ├── REQ_contact.adoc
│ │ │ │ ├── REQ_records.adoc
│ │ │ │ ├── REQ_mandatory-properties.adoc
│ │ │ │ ├── REQ_license.adoc
│ │ │ │ ├── REQ_links-catalog-hierarchy.adoc
│ │ │ │ ├── REQ_links-catalog-related.adoc
│ │ │ │ ├── REQ_links-catalog-series.adoc
│ │ │ │ ├── REQ_links-record.adoc
│ │ │ │ ├── REQ_links.adoc
│ │ │ │ ├── REQ_links-records.adoc
│ │ │ │ ├── REQ_records-array-name.adoc
│ │ │ │ └── REQ_default-mediatype.adoc
│ │ │ ├── record-core
│ │ │ │ ├── REQ_time-zone.adoc
│ │ │ │ ├── REQ_mandatory-properties-record.adoc
│ │ │ │ ├── REQ_templated-link-header.adoc
│ │ │ │ └── REQ_record-links.adoc
│ │ │ ├── html
│ │ │ │ ├── REQ_definition.adoc
│ │ │ │ └── REQ_conformance.adoc
│ │ │ ├── query-param-profile
│ │ │ │ └── REQ_response.adoc
│ │ │ ├── requirements_class_oas30.adoc
│ │ │ ├── requirements_class_autodiscovery.adoc
│ │ │ ├── requirements_class_html.adoc
│ │ │ ├── json
│ │ │ │ ├── REQ_catalog-response.adoc
│ │ │ │ ├── REQ_catalog-content-profile.adoc
│ │ │ │ ├── REQ_catalog-content.adoc
│ │ │ │ └── REQ_conformance.adoc
│ │ │ ├── oas30
│ │ │ │ ├── REQ_oas-conformance.adoc
│ │ │ │ └── REQ_oas30.adoc
│ │ │ ├── record-core-query-parameters
│ │ │ │ ├── REQ_query-param-ids-response.adoc
│ │ │ │ └── REQ_query-param-type-response.adoc
│ │ │ ├── requirements_class_sorting.adoc
│ │ │ ├── records-api
│ │ │ │ └── REQ_features-api.adoc
│ │ │ ├── requirements_class_record-filter.adoc
│ │ │ ├── sorting
│ │ │ │ ├── REQ_get-sortables-op.adoc
│ │ │ │ └── REQ_sortby-response.adoc
│ │ │ ├── requirements_class_record-core.adoc
│ │ │ └── requirements_class_json.adoc
│ │ ├── crawlable-catalog
│ │ │ ├── REQ_record.adoc
│ │ │ ├── REQ_catalog.adoc
│ │ │ ├── REQ_conformance.adoc
│ │ │ ├── REQ_catalog-location.adoc
│ │ │ └── REQ_record-location.adoc
│ │ ├── searchable-catalog
│ │ │ ├── REQ_mandatory-catalog-properties.adoc
│ │ │ └── REQ_mandatory-record-properties.adoc
│ │ ├── searchable-catalog_filtering
│ │ │ └── REQ_mandatory-queryables.adoc
│ │ ├── local-resources-catalog
│ │ │ ├── REQ_mandatory-catalog-properties.adoc
│ │ │ ├── REQ_mandatory-record-properties.adoc
│ │ │ └── REQ_discovery.adoc
│ │ ├── requirements_class_searchable-catalog.adoc
│ │ ├── requirements_class_searchable-catalog_sorting.adoc
│ │ ├── requirements_class_local-resources-catalog_sorting.adoc
│ │ ├── local-resources-catalog_sorting
│ │ │ └── REQ_sorting.adoc
│ │ ├── local-resources-catalog_filtering
│ │ │ └── REQ_filtering.adoc
│ │ ├── requirements_class_searchable-catalog_filtering.adoc
│ │ ├── README.md
│ │ ├── requirements_class_crawlable-catalog.adoc
│ │ └── requirements_class_local-resources-catalog_filtering.adoc
│ ├── annex_stac.adoc
│ ├── abstract_tests
│ │ ├── building-blocks
│ │ │ ├── ATS_class_query-param-profile.adoc
│ │ │ ├── query-param-profile
│ │ │ │ ├── ATS_response.adoc
│ │ │ │ └── ATS_definition.adoc
│ │ │ ├── ATS_class_autodiscovery.adoc
│ │ │ ├── ATS_class_oas30.adoc
│ │ │ ├── ATS_class_html.adoc
│ │ │ └── json
│ │ │ │ └── ATS_catalog-content-profile.adoc
│ │ ├── crawlable-catalog
│ │ │ ├── ATS_record-location.adoc
│ │ │ ├── ATS_catalog-location.adoc
│ │ │ └── ATS_catalog.adoc
│ │ └── README.md
│ └── annex_abbreviated_terms.adoc
├── openapi
│ ├── parameters
│ │ ├── recordId.yaml
│ │ ├── catalogId.yaml
│ │ ├── profile.yaml
│ │ ├── ids.yaml
│ │ ├── type.yaml
│ │ ├── externalIds.yaml
│ │ ├── q.yaml
│ │ └── sortby.yaml
│ ├── schemas
│ │ ├── link.yaml
│ │ ├── format.yaml
│ │ ├── roles.yaml
│ │ ├── defaultSortOrder.yaml
│ │ ├── landingPage.yaml
│ │ ├── collection.yaml
│ │ ├── catalogs.yaml
│ │ ├── recordCollectionGeoJSON.yaml
│ │ ├── scheme.yaml
│ │ └── time.yaml
│ └── responses
│ │ ├── Catalogs.yaml
│ │ ├── BadRequest.yaml
│ │ ├── ServerError.yaml
│ │ ├── Record.yaml
│ │ ├── InvalidParameter.yaml
│ │ ├── ConformanceDeclaration.yaml
│ │ ├── Sortables.yaml
│ │ ├── NotFound.yaml
│ │ ├── NotAcceptable.yaml
│ │ └── LandingPage.yaml
├── examples
│ ├── README.md
│ ├── yaml
│ │ ├── collections
│ │ │ ├── localResourcesItem.yaml
│ │ │ ├── localResourcesCatalog.yaml
│ │ │ └── README.md
│ │ └── processes
│ │ │ ├── localResourcesItem.yaml
│ │ │ ├── localResourcesCatalog.yaml
│ │ │ └── README.md
│ └── json
│ │ ├── defaultSortOrder.json
│ │ ├── templated-link-ref.json
│ │ ├── conformance.json
│ │ └── catalog.json
├── release-notes.md
└── README.md
├── extensions
├── OpenSearch
│ ├── clause_6_overview.adoc
│ ├── requirements
│ │ ├── atom
│ │ │ ├── REQ_media-type.adoc
│ │ │ ├── REQ_atom-conformance.adoc
│ │ │ ├── REQ_common-content.adoc
│ │ │ └── REQ_content.adoc
│ │ ├── opensearch
│ │ │ ├── REQ_param-geo-relation.adoc
│ │ │ ├── REQ_param-time-relation.adoc
│ │ │ ├── REQ_descriptiondoc-op.adoc
│ │ │ ├── REQ_param-language-response.adoc
│ │ │ ├── REQ_autodiscovery-link.adoc
│ │ │ ├── REQ_param-outputencoding-response.adoc
│ │ │ ├── REQ_param-startpage-response.adoc
│ │ │ ├── REQ_param-startindex-response.adoc
│ │ │ ├── REQ_param-outputencoding.adoc
│ │ │ ├── REQ_descriptiondoc-response-lang.adoc
│ │ │ ├── REQ_descriptiondoc-response.adoc
│ │ │ ├── REQ_descriptiondoc-response-self-link.adoc
│ │ │ ├── REQ_param-language.adoc
│ │ │ ├── REQ_descriptiondoc-response-example-qry.adoc
│ │ │ ├── REQ_param-geo-name-response.adoc
│ │ │ ├── REQ_param-geometry-response.adoc
│ │ │ ├── REQ_param-proximity-response.adoc
│ │ │ ├── REQ_descriptiondoc-response-inputenc.adoc
│ │ │ ├── REQ_descriptiondoc-response-outputenc.adoc
│ │ │ └── REQ_descriptiondoc-response-collection-links.adoc
│ │ ├── requirements_class_opensearch.adoc
│ │ └── requirements_class_atom.adoc
│ ├── recommendations
│ │ ├── opensearch
│ │ │ ├── REC_param-language.adoc
│ │ │ ├── REC_param-geometry.adoc
│ │ │ ├── REC_param-geo-name.adoc
│ │ │ ├── REC_param-startpage.adoc
│ │ │ ├── REC_param-startindex.adoc
│ │ │ ├── REC_param-geo-relation.adoc
│ │ │ ├── REC_param-inputencoding.adoc
│ │ │ ├── REC_param-proximity.adoc
│ │ │ ├── REC_param-time-relation.adoc
│ │ │ ├── REC_param-outputencoding.adoc
│ │ │ ├── REC_response-query.adoc
│ │ │ └── PER_additional-query-parameters.adoc
│ │ └── atom
│ │ │ └── PER_foreign-markup.adoc
│ ├── annex_history.adoc
│ ├── annex_ats.adoc
│ └── annex_bibliography.adoc
├── facets
│ ├── standard
│ │ ├── HTML_Gen.bat
│ │ ├── recommendations
│ │ │ ├── README.md
│ │ │ └── simple
│ │ │ │ └── PER_queryables.adoc
│ │ ├── PDF_Gen.bat
│ │ ├── clause_9_security.adoc
│ │ ├── annex_history.adoc
│ │ ├── requirements
│ │ │ ├── simple
│ │ │ │ ├── REQ_media_type.adoc
│ │ │ │ └── REQ_conformance.adoc
│ │ │ ├── requirements_class_simple.adoc
│ │ │ ├── requirements_class_advanced.adoc
│ │ │ ├── advanced
│ │ │ │ ├── REQ_conformance.adoc
│ │ │ │ └── REQ_query_facets_response.adoc
│ │ │ └── README.md
│ │ ├── annex_ats.adoc
│ │ ├── abstract_tests
│ │ │ ├── simple
│ │ │ │ ├── ATS_media_type.adoc
│ │ │ │ ├── ATS_conformance.adoc
│ │ │ │ ├── ATS_response.adoc
│ │ │ │ └── ATS_query_response.adoc
│ │ │ ├── advanced
│ │ │ │ ├── ATS_conformance.adoc
│ │ │ │ └── ATS_query_facets_response.adoc
│ │ │ ├── ATS_class_simple.adoc
│ │ │ └── ATS_class_advanced.adoc
│ │ ├── Makefile
│ │ ├── annex_bibliography.adoc
│ │ ├── clause_1_scope.adoc
│ │ ├── clause_5_conventions.adoc
│ │ ├── README.md
│ │ ├── clause_4_terms_and_definitions.adoc
│ │ └── clause_8_advanced_facets.adoc
│ ├── examples
│ │ └── README.md
│ ├── README.md
│ └── openapi
│ │ ├── schemas
│ │ └── facets-queryables.yaml
│ │ └── parameters
│ │ └── facets.yaml
├── transactions
│ ├── create-replace-update-delete-harvest
│ │ ├── examples
│ │ │ ├── xml
│ │ │ │ └── README.md
│ │ │ └── json
│ │ │ │ ├── README.md
│ │ │ │ ├── ex04_delete.adoc
│ │ │ │ ├── ex06a_options.adoc
│ │ │ │ └── ex06b_options.adoc
│ │ ├── openapi
│ │ │ ├── examples
│ │ │ │ └── README.md
│ │ │ ├── responses
│ │ │ │ └── README.md
│ │ │ ├── schemas
│ │ │ │ └── README.md
│ │ │ └── parameters
│ │ │ │ └── README.md
│ │ ├── xml
│ │ │ └── wsdl
│ │ │ │ └── README.md
│ │ ├── standard
│ │ │ ├── annex_ats.adoc
│ │ │ ├── README.md
│ │ │ ├── abstract_tests
│ │ │ │ ├── ATS_class_features.adoc
│ │ │ │ ├── ATS_class_simpletx.adoc
│ │ │ │ ├── simpletx
│ │ │ │ │ ├── update
│ │ │ │ │ │ └── put
│ │ │ │ │ │ │ ├── ATS_body.adoc
│ │ │ │ │ │ │ ├── ATS_put-op.adoc
│ │ │ │ │ │ │ ├── ATS_response.adoc
│ │ │ │ │ │ │ ├── ATS_rid-exception.adoc
│ │ │ │ │ │ │ └── ATS_content-type.adoc
│ │ │ │ │ ├── delete
│ │ │ │ │ │ ├── ATS_delete-op.adoc
│ │ │ │ │ │ └── ATS_response.adoc
│ │ │ │ │ └── insert
│ │ │ │ │ │ ├── ATS_response-rid.adoc
│ │ │ │ │ │ ├── ATS_post-op.adoc
│ │ │ │ │ │ └── ATS_content-type.adoc
│ │ │ │ ├── ATS_class_patch-update.adoc
│ │ │ │ └── features
│ │ │ │ │ ├── ATS_collection-items-end-point.adoc
│ │ │ │ │ ├── crs
│ │ │ │ │ ├── ATS_crs84.adoc
│ │ │ │ │ ├── ATS_geojson.adoc
│ │ │ │ │ └── ATS_storage-crs.adoc
│ │ │ │ │ └── ATS_resource-end-point.adoc
│ │ │ ├── annex_history.adoc
│ │ │ ├── clause_7_harvest.adoc
│ │ │ ├── requirements
│ │ │ │ ├── requirements_class_harvest.adoc
│ │ │ │ ├── records
│ │ │ │ │ ├── crs
│ │ │ │ │ │ ├── REQ_content-crs-header.adoc
│ │ │ │ │ │ ├── REQ_gml-srsname.adoc
│ │ │ │ │ │ ├── REQ_other-crs.adoc
│ │ │ │ │ │ ├── REQ_default-crs.adoc
│ │ │ │ │ │ └── REQ_crs84.adoc
│ │ │ │ │ ├── REQ_resources-endpoint.adoc
│ │ │ │ │ ├── REQ_schema.adoc
│ │ │ │ │ ├── REQ_collection-endpoint.adoc
│ │ │ │ │ └── REQ_resource-endpoint.adoc
│ │ │ │ └── README.md
│ │ │ ├── figures
│ │ │ │ └── README.md
│ │ │ ├── images
│ │ │ │ └── README.md
│ │ │ ├── clause_8_media_types.adoc
│ │ │ └── recommendations
│ │ │ │ └── records
│ │ │ │ └── REC_storage-crs.adoc
│ │ └── README.md
│ └── README.md
└── README.md
├── template
├── examples
│ ├── json
│ │ └── README.md
│ └── xml
│ │ └── README.md
├── standard
│ ├── README.md
│ ├── clause_5_conventions.adoc
│ ├── clause_1_scope.adoc
│ ├── recommendations
│ │ └── cc
│ │ │ ├── PER_per.adoc
│ │ │ └── REC_rec.adoc
│ ├── clause_7_media_types.adoc
│ ├── clause_8_security_considerations.adoc
│ ├── annex_ats.adoc
│ ├── requirements
│ │ ├── cc
│ │ │ └── REQ_req.adoc
│ │ ├── requirements_class_cc.adoc
│ │ └── README.md
│ ├── annex_n.adoc
│ ├── annex_history.adoc
│ ├── figures
│ │ └── README.md
│ ├── annex_bibliography.adoc
│ ├── abstract_tests
│ │ └── cc
│ │ │ └── TEST001.adoc
│ ├── clause_6_cc.adoc
│ ├── clause_3_references.adoc
│ ├── images
│ │ └── README.md
│ ├── clause_2_conformance.adoc
│ └── clause_4_terms_and_definitions.adoc
├── openapi
│ ├── examples
│ │ └── README.md
│ ├── schemas
│ │ └── README.md
│ ├── parameters
│ │ └── README.md
│ └── responses
│ │ └── README.md
├── xml
│ └── wsdl
│ │ └── README.md
└── README.md
├── proposals
└── facets
│ └── openapi
│ └── schemas
│ ├── facets.yaml
│ ├── bucket.yaml
│ └── facetResult.yaml
├── images
└── crawlable_catalogue_example.png
├── .gitignore
├── CONTRIBUTORS.md
└── DEVELOPMENT.md
/core/standard/HTML_Gen.bat:
--------------------------------------------------------------------------------
1 | asciidoctor --trace -o ../20-004.html 20-004.adoc
2 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/clause_6_overview.adoc:
--------------------------------------------------------------------------------
1 | [[overview]]
2 | == Overview
3 |
4 |
5 |
--------------------------------------------------------------------------------
/core/standard/recommendations/README.md:
--------------------------------------------------------------------------------
1 | This folder contains recommendations description.
2 |
--------------------------------------------------------------------------------
/core/standard/.gitignore:
--------------------------------------------------------------------------------
1 | /19-087.html
2 | /19-087.pdf
3 | *.xml
4 | *.err
5 | *.log.txt
6 | *.pdf
--------------------------------------------------------------------------------
/extensions/facets/standard/HTML_Gen.bat:
--------------------------------------------------------------------------------
1 | asciidoctor --trace -o ../document.html document.adoc
2 |
--------------------------------------------------------------------------------
/core/standard/PDF_Gen.bat:
--------------------------------------------------------------------------------
1 | asciidoctor -r asciidoctor-pdf --trace -b pdf -o ../20-004.pdf 20-004.adoc
2 |
--------------------------------------------------------------------------------
/extensions/facets/standard/recommendations/README.md:
--------------------------------------------------------------------------------
1 | This folder contains recommendations description.
2 |
--------------------------------------------------------------------------------
/template/examples/json/README.md:
--------------------------------------------------------------------------------
1 | Add JSON examples to this directory. If not used, delete the directory.
2 |
--------------------------------------------------------------------------------
/template/examples/xml/README.md:
--------------------------------------------------------------------------------
1 | Add XML examples to this directory. If not used, delete the directory.
2 |
--------------------------------------------------------------------------------
/template/standard/README.md:
--------------------------------------------------------------------------------
1 | This folder contains the text for part 1 of the OGC API Features standard.
2 |
--------------------------------------------------------------------------------
/extensions/facets/standard/PDF_Gen.bat:
--------------------------------------------------------------------------------
1 | asciidoctor -r asciidoctor-pdf --trace -b pdf -o ../document.pdf document.adoc
2 |
--------------------------------------------------------------------------------
/template/openapi/examples/README.md:
--------------------------------------------------------------------------------
1 | Add OpenAPI YAML examples to this directory. If not used, delete the directory.
2 |
--------------------------------------------------------------------------------
/template/openapi/schemas/README.md:
--------------------------------------------------------------------------------
1 | Add OpenAPI schema components to this directory. If not used, delete the directory.
2 |
--------------------------------------------------------------------------------
/template/openapi/parameters/README.md:
--------------------------------------------------------------------------------
1 | Add OpenAPI parameter components to this directory. If not used, delete the directory.
2 |
--------------------------------------------------------------------------------
/template/openapi/responses/README.md:
--------------------------------------------------------------------------------
1 | Add OpenAPI response components to this directory. If not used, delete the directory.
2 |
--------------------------------------------------------------------------------
/proposals/facets/openapi/schemas/facets.yaml:
--------------------------------------------------------------------------------
1 | type: object
2 | description: Facets overview
3 | items:
4 | $ref: "./facetResult.yaml"
5 |
--------------------------------------------------------------------------------
/images/crawlable_catalogue_example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opengeospatial/ogcapi-records/HEAD/images/crawlable_catalogue_example.png
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/examples/xml/README.md:
--------------------------------------------------------------------------------
1 | Add XML examples to this directory. If not used, delete the directory.
2 |
--------------------------------------------------------------------------------
/template/standard/clause_5_conventions.adoc:
--------------------------------------------------------------------------------
1 | == Conventions and background
2 |
3 | See <>, Clauses 5 and 6.
4 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/examples/json/README.md:
--------------------------------------------------------------------------------
1 | Add JSON examples to this directory. If not used, delete the directory.
2 |
--------------------------------------------------------------------------------
/core/openapi/parameters/recordId.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | name: recordId
3 | in: path
4 | description: local identifier of a record
5 | required: true
6 | schema:
7 | type: string
8 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/openapi/examples/README.md:
--------------------------------------------------------------------------------
1 | Add OpenAPI YAML examples to this directory. If not used, delete the directory.
2 |
--------------------------------------------------------------------------------
/core/openapi/parameters/catalogId.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | name: catalogId
3 | in: path
4 | description: local identifier of a catalog
5 | required: true
6 | schema:
7 | type: string
8 |
--------------------------------------------------------------------------------
/extensions/facets/standard/clause_9_security.adoc:
--------------------------------------------------------------------------------
1 | [[security-section]]
2 | == Security Considerations
3 |
4 | See <>, Clause 10.
5 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/openapi/responses/README.md:
--------------------------------------------------------------------------------
1 | Add OpenAPI response components to this directory. If not used, delete the directory.
2 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/openapi/schemas/README.md:
--------------------------------------------------------------------------------
1 | Add OpenAPI schema components to this directory. If not used, delete the directory.
2 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/openapi/parameters/README.md:
--------------------------------------------------------------------------------
1 | Add OpenAPI parameter components to this directory. If not used, delete the directory.
2 |
--------------------------------------------------------------------------------
/template/standard/clause_1_scope.adoc:
--------------------------------------------------------------------------------
1 | == Scope
2 |
3 | This document specifies the behavior of Web APIs that provide access to features ...
4 |
5 | (( add scope statement ))
6 |
--------------------------------------------------------------------------------
/template/standard/recommendations/cc/PER_per.adoc:
--------------------------------------------------------------------------------
1 | [[per_cc_per]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Permission {counter:per-id}* |*/per/cc/per*
5 | ^|A |Abc MAY ....
6 | |===
7 |
--------------------------------------------------------------------------------
/template/xml/wsdl/README.md:
--------------------------------------------------------------------------------
1 | # Standard template
2 |
3 | This folder is a placeholder for a WSDL 2.0 description that can be an
4 | XML-encoded alternative for an OpenAPI 3.0 document.
5 |
--------------------------------------------------------------------------------
/template/standard/clause_7_media_types.adoc:
--------------------------------------------------------------------------------
1 | [[mediatypes]]
2 | == Media Types
3 |
4 | See <>, Clause 10.
5 |
6 | (( add additional text as needed ))
7 |
--------------------------------------------------------------------------------
/template/standard/recommendations/cc/REC_rec.adoc:
--------------------------------------------------------------------------------
1 | [[rec_cc_rec]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Recommendation {counter:rec-id}* |*/rec/cc/rec*
5 | ^|A |Xyz SHOULD ...
6 | |===
7 |
--------------------------------------------------------------------------------
/template/standard/clause_8_security_considerations.adoc:
--------------------------------------------------------------------------------
1 | == Security Considerations
2 |
3 | See <>, Clause 11.
4 |
5 | (( add additional text as needed ))
6 |
--------------------------------------------------------------------------------
/template/standard/annex_ats.adoc:
--------------------------------------------------------------------------------
1 | [[ats]]
2 | [appendix]
3 | :appendix-caption: Annex
4 | == Abstract Test Suite (Normative)
5 |
6 | (( add test cases ))
7 |
8 | include::abstract_tests/cc/TEST001.adoc[]
9 |
--------------------------------------------------------------------------------
/template/standard/requirements/cc/REQ_req.adoc:
--------------------------------------------------------------------------------
1 | [[req_cc_req]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/cc/req*
5 | ^|A |Xyz SHALL ...
6 | ^|B |Abc SHALL ...
7 | |===
8 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | core/*.html
2 | core/*.pdf
3 | core/relaton/*
4 | core/iev/*
5 | core/standard/*.html
6 | .vscode/settings.json
7 | .DS_Store
8 | core/standard/document.presentation.xml
9 | extensions/*/standard/*.html
10 |
--------------------------------------------------------------------------------
/core/openapi/schemas/link.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | type: object
3 | allOf:
4 | - $ref: 'linkBase.yaml'
5 | - type: object
6 | required:
7 | - href
8 | properties:
9 | href:
10 | type: string
11 |
--------------------------------------------------------------------------------
/core/examples/README.md:
--------------------------------------------------------------------------------
1 | # Examples
2 |
3 | This sub-folder contains the following:
4 |
5 | * [Examples of catalog responses in JSON/GeoJSON](json)
6 | * [Examples of extending OGC API endpoints to behave like catalogs](yaml)
7 |
--------------------------------------------------------------------------------
/core/openapi/schemas/format.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | type: object
3 | anyOf:
4 | - required:
5 | - name
6 | - required:
7 | - mediaType
8 | properties:
9 | name:
10 | type: string
11 | mediaType:
12 | type: string
13 |
--------------------------------------------------------------------------------
/extensions/facets/examples/README.md:
--------------------------------------------------------------------------------
1 | # Examples
2 |
3 | The sub-folders contain examples of responses of implementations of
4 | OGC API - Records - Part 2: Facets.
5 |
6 | * [JSON/GeoJSON examples](json)
7 | * [YAML examples](yaml)
8 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/xml/wsdl/README.md:
--------------------------------------------------------------------------------
1 | # Standard template
2 |
3 | This folder is a placeholder for a WSDL 2.0 description that can be an
4 | XML-encoded alternative for an OpenAPI 3.0 document.
5 |
--------------------------------------------------------------------------------
/core/examples/yaml/collections/localResourcesItem.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | allOf:
3 | - $ref: 'https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/collection.yaml'
4 | - $ref: '../../../openapi/schemas/recordCommonProperties.yaml'
5 |
--------------------------------------------------------------------------------
/core/examples/yaml/processes/localResourcesItem.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | allOf:
3 | - $ref: 'https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/schemas/processSummary.yaml'
4 | - $ref: '../../../openapi/schemas/recordCommonProperties.yaml'
5 |
--------------------------------------------------------------------------------
/core/release-notes.md:
--------------------------------------------------------------------------------
1 | ## Version 1.0.0
2 |
3 | |Status: |Published
4 | | --- | --- |
5 | |Document reference: |[OGC 20-004r1](https://docs.ogc.org/is/20-004r1/20-004r1.html)
6 | |Date: |2024-12-20
7 |
8 | This version is the first release.
9 |
--------------------------------------------------------------------------------
/extensions/transactions/README.md:
--------------------------------------------------------------------------------
1 | This directory contains the extension that handle simple translactions (i.e. mutations on single records), harvesting and (eventually) complex transactions (i.e. atomic and batch mutations to multiple records).
2 |
--------------------------------------------------------------------------------
/core/openapi/schemas/roles.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | description: |-
3 | The list of duties, job functions or permissions assigned by the system
4 | and associated with the context of this member.
5 | type: array
6 | minItems: 1
7 | items:
8 | type: string
9 |
--------------------------------------------------------------------------------
/template/standard/annex_n.adoc:
--------------------------------------------------------------------------------
1 | [appendix]
2 | :appendix-caption: Annex
3 | == Title ( {Normative/Informative} )
4 |
5 | [NOTE]
6 | Place other Annex material in sequential annexes beginning with "B" and leave final two annexes for the Revision History and Bibliography
7 |
--------------------------------------------------------------------------------
/core/standard/annex_history.adoc:
--------------------------------------------------------------------------------
1 | [appendix]
2 | == Revision History
3 |
4 | [width="90%",options="header"]
5 | |===
6 | |Date |Release |Contributors | Primary clauses modified |Description
7 | |2024-12-19 |1.0.0 |P. Vretanos, T. Kralidis, A. Tzotsos |all|Review for 1.0.0.
8 | |===
9 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/atom/REQ_media-type.adoc:
--------------------------------------------------------------------------------
1 | [[req_atom_media-type]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/atom/media-type*
5 | ^|A |`200`-responses of the server SHALL support the media type `application/atom+xml`.
6 | |===
7 |
--------------------------------------------------------------------------------
/core/openapi/responses/Catalogs.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | description: |-
3 | Information about the list of catalogs offered by this service.
4 | content:
5 | application/json:
6 | schema:
7 | $ref: '../schemas/catalogs.yaml'
8 | text/html:
9 | schema:
10 | type: string
11 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/query-param-profile/PER_default.adoc:
--------------------------------------------------------------------------------
1 | [[per_query-param-profile_default]]
2 | [permission]
3 | ====
4 | [%metadata]
5 | identifier:: /per/query-param-profile/default
6 | part:: The server MAY specify a default value for the query parameter "profile".
7 | ====
8 |
--------------------------------------------------------------------------------
/extensions/facets/standard/recommendations/simple/PER_queryables.adoc:
--------------------------------------------------------------------------------
1 | [[per_simple_queryables]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/per/simple/queryables*
5 | ^|A |A queryables response MAY indicate whether facets can be applied on a given queryable.
6 | |===
7 |
--------------------------------------------------------------------------------
/template/standard/annex_history.adoc:
--------------------------------------------------------------------------------
1 | [appendix]
2 | :appendix-caption: Annex
3 | == Revision History
4 |
5 | [cols="12,18,12,12,46",options="header"]
6 | |===
7 | |Date |Release |Editor | Primary clauses modified |Description
8 | |2019-xx-xx |1.0.0-SNAPSHOT |J. Doe |all |initial version
9 | |===
10 |
--------------------------------------------------------------------------------
/core/examples/json/defaultSortOrder.json:
--------------------------------------------------------------------------------
1 | {
2 | .
3 | .
4 | .
5 | "defaultSortOrder": [
6 | {
7 | "field": "updated",
8 | "direction": "desc"
9 | },
10 | {
11 | "field": "area",
12 | "direction": "desc"
13 | }
14 | ],
15 | .
16 | .
17 | .
18 | }
19 |
--------------------------------------------------------------------------------
/core/openapi/schemas/defaultSortOrder.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | type: array
3 | items:
4 | type: object
5 | required:
6 | - field
7 | - direction
8 | properties:
9 | field:
10 | type: string
11 | direction:
12 | type: string
13 | enum:
14 | - asc
15 | - desc
16 |
--------------------------------------------------------------------------------
/core/openapi/schemas/landingPage.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | allOf:
3 | - $ref: 'https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/landingPage.yaml'
4 | - type: object
5 | properties:
6 | linkTemplates:
7 | type: array
8 | items:
9 | $ref: 'linkTemplate.yaml'
10 |
--------------------------------------------------------------------------------
/core/openapi/responses/BadRequest.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | description: |-
3 | A client error occurred.
4 | content:
5 | application/json:
6 | schema:
7 | $ref: 'https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/exception.yaml'
8 | text/html:
9 | schema:
10 | type: string
11 |
--------------------------------------------------------------------------------
/core/openapi/responses/ServerError.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | description: |-
3 | A server error occurred.
4 | content:
5 | application/json:
6 | schema:
7 | $ref: 'https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/exception.yaml'
8 | text/html:
9 | schema:
10 | type: string
11 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/opensearch/REQ_param-geo-relation.adoc:
--------------------------------------------------------------------------------
1 | [[req_opensearch_param-geo-relation]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/opensearch/param-geo-relation*
5 |
6 | The default value of the `geo:relation` parameter SHALL be `intersects`.
7 | |===
8 |
--------------------------------------------------------------------------------
/extensions/facets/standard/annex_history.adoc:
--------------------------------------------------------------------------------
1 | [appendix]
2 | :appendix-caption: Annex
3 | == Revision History
4 |
5 | [cols="12,18,12,12,46",options="header"]
6 | |===
7 | |Date |Release |Editor | Primary clauses modified |Description
8 | |2024-05-29 |Template |T. Kralidis|all |initial template
9 | |===
10 |
--------------------------------------------------------------------------------
/extensions/facets/standard/requirements/simple/REQ_media_type.adoc:
--------------------------------------------------------------------------------
1 | [[req_simple_media_type]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/simple/media_type*
5 | ^|A |The Facets resource SHALL support the HTTP GET operation and the media type `application/facets+json`.
6 | |===
7 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/opensearch/REQ_param-time-relation.adoc:
--------------------------------------------------------------------------------
1 | [[req_opensearch_param-time-relation]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/opensearch/param-time-relation*
5 |
6 | The default value of the `time:relation` parameter SHALL be `intersects`.
7 | |===
8 |
--------------------------------------------------------------------------------
/template/standard/requirements/requirements_class_cc.adoc:
--------------------------------------------------------------------------------
1 | [[rc_cc]]
2 | [cols="1,4",width="90%"]
3 | |===
4 | 2+|*Requirements Class*
5 | 2+|http://www.opengis.net/spec/ogcapi-features-1/1.0/req/cc
6 | |Target type |Web API
7 | |Dependency |<>
8 | |===
9 |
--------------------------------------------------------------------------------
/core/openapi/responses/Record.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | description: |-
3 | Fetch the record with id `recordId` in the record collection
4 | with id `collectionId`
5 | content:
6 | application/geo+json:
7 | schema:
8 | $ref: '../schemas/recordGeoJSON.yaml'
9 | text/html:
10 | schema:
11 | type: string
12 |
--------------------------------------------------------------------------------
/core/openapi/responses/InvalidParameter.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | description: |-
3 | A query parameter has an invalid value.
4 | content:
5 | application/json:
6 | schema:
7 | $ref: 'https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/exception.yaml'
8 | text/html:
9 | schema:
10 | type: string
11 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/query-param-profile/REC_link-header.adoc:
--------------------------------------------------------------------------------
1 | [[rec_query-param-profile_link-header]]
2 | [recommendation]
3 | ====
4 | [%metadata]
5 | identifier:: /rec/query-param-profile/link-header
6 | part:: The response SHOULD include links to the selected profile(s) in the HTTP response headers.
7 | ====
8 |
--------------------------------------------------------------------------------
/CONTRIBUTORS.md:
--------------------------------------------------------------------------------
1 | * Chuck Heazel [@cmheazel](https://github.com/cmheazel)
2 | * Panagiotis (Peter) A. Vretanos [@pvretano](https://github.com/pvretano)
3 | * Clemens Portele [@cportele](https://github.com/cportele)
4 | * Tom Kralidis [@tomkralidis](https://github.com/tomkralidis)
5 | * Angelos Tzotsos [@kalxas](https://github.com/kalxas)
6 |
7 |
--------------------------------------------------------------------------------
/core/openapi/schemas/collection.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | allOf:
3 | - $ref: 'catalog.yaml'
4 | - type: object
5 | properties:
6 | itemType:
7 | description: |-
8 | For a collection of records, the itemType is
9 | fixed to "record".
10 | type: string
11 | enum:
12 | - record
13 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/atom/REQ_atom-conformance.adoc:
--------------------------------------------------------------------------------
1 | [[req_atom_conformance]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/atom/conformance*
5 | 2+|The list of Conformance Classes advertised by the API SHALL include:
6 | ^|A |http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/atom
7 | |===
8 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/annex_ats.adoc:
--------------------------------------------------------------------------------
1 | [[ats]]
2 | [appendix]
3 | :appendix-caption: Annex
4 | == Abstract Test Suite (Normative)
5 |
6 | NOTE: Conformance classes and test cases for all requirements classes and requirements will be added once the requirements classes and requirements are final.
7 |
--------------------------------------------------------------------------------
/extensions/facets/standard/requirements/requirements_class_simple.adoc:
--------------------------------------------------------------------------------
1 | [[rc_simple]]
2 | [cols="1,4",width="90%"]
3 | |===
4 | 2+|*Requirements Class*
5 | 2+|http://www.opengis.net/spec/ogcapi-records-2/1.0/req/simple
6 | |Target type |Web API
7 | |Dependency |<>
8 | |===
9 |
--------------------------------------------------------------------------------
/extensions/facets/standard/requirements/requirements_class_advanced.adoc:
--------------------------------------------------------------------------------
1 | [[rc_advanced]]
2 | [cols="1,4",width="90%"]
3 | |===
4 | 2+|*Requirements Class*
5 | 2+|http://www.opengis.net/spec/ogcapi-records-2/1.0/req/advanced
6 | |Target type |Web API
7 | |Dependency |<>
8 | |===
9 |
--------------------------------------------------------------------------------
/extensions/facets/standard/requirements/simple/REQ_conformance.adoc:
--------------------------------------------------------------------------------
1 | [[req_simple_conformance]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/simple/conformance*
5 | ^|A |The list of Conformance Classes advertised by the API SHALL include:
6 | `http://www.opengis.net/spec/ogcapi-records-2/1.0/conf/simple`
7 | |===
8 |
--------------------------------------------------------------------------------
/extensions/facets/standard/requirements/advanced/REQ_conformance.adoc:
--------------------------------------------------------------------------------
1 | [[req_advanced_conformance]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/advanced/conformance*
5 | 2+|The list of Conformance Classes advertised by the API SHALL include:
6 | ^|A |http://www.opengis.net/spec/ogcapi-records-2/1.0/conf/advanced
7 | |===
8 |
--------------------------------------------------------------------------------
/extensions/facets/standard/requirements/advanced/REQ_query_facets_response.adoc:
--------------------------------------------------------------------------------
1 | [[req_advanced_query_facets_response]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/advanced/query_facets_response*
5 | ^|A |Only properties matching the property names specified using the `facets` parameter SHALL be in the results set.
6 | |===
7 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/README.md:
--------------------------------------------------------------------------------
1 | This folder contains the text for part 4 of the OGC API Features standard.
2 |
3 | [OGC API - Feautures - Part 4: Simple Transactions](https://htmlpreview.github.io/?https://github.com/opengeospatial/ogcapi-features/blob/master/extensions/transactions/simple/standard/20-002.html)
4 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/abstract_tests/ATS_class_features.adoc:
--------------------------------------------------------------------------------
1 | [[ats_features]]
2 | [cols="1,4",width="90%"]
3 | |===
4 | 2+|*Requirements Class*
5 | 2+|http://www.opengis.net/spec/ogcapi-features-4/1.0/req/features
6 | |Target type |Web API
7 | |Dependency |<>
8 | |===
9 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/annex_history.adoc:
--------------------------------------------------------------------------------
1 | [appendix]
2 | :appendix-caption: Annex
3 | == Revision History
4 |
5 | [cols="12,18,12,12,46",options="header"]
6 | |===
7 | |Date |Release |Editor | Primary clauses modified |Description
8 | |2025-04-13 |1.0.0-DRAFT |P. Vretanos |all |initial version
9 | |===
10 |
--------------------------------------------------------------------------------
/template/standard/figures/README.md:
--------------------------------------------------------------------------------
1 | Figures go here.
2 |
3 | Each figure is a separate file with the naming convention:
4 |
5 | "PTm_FIGn.xxx" where "m" is a number with leading zeroes appropriate for the total number of parts, "n" is a number with leading zeroes appropriate for the total number of figures and "xxx" is the appropriate extension for the file type.
--------------------------------------------------------------------------------
/core/openapi/responses/ConformanceDeclaration.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | description: |-
3 | The URIs of all conformance classes supported by the server.
4 | content:
5 | application/json:
6 | schema:
7 | $ref: 'https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/confClasses.yaml'
8 | text/html:
9 | schema:
10 | type: string
11 |
--------------------------------------------------------------------------------
/core/openapi/responses/Sortables.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | description: |-
3 | A list of properties by which the server response may be sorted.
4 | content:
5 | application/json:
6 | schema:
7 | type: object
8 | description:
9 | A JSON Schema document that defines all the sortables.
10 | text/html:
11 | schema:
12 | type: string
13 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/clause_7_harvest.adoc:
--------------------------------------------------------------------------------
1 | [[harvest_clause]]
2 | == Requirements Class "Harvest"
3 |
4 | === Overview
5 |
6 | include::requirements/requirements_class_harvest.adoc[]
7 |
8 | This clause defines requirements for a harvesting operation when the resource type is a record.
9 |
10 | T.B.D.
11 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/requirements/requirements_class_harvest.adoc:
--------------------------------------------------------------------------------
1 | [[rc_harvest]]
2 | [cols="1,4",width="90%"]
3 | |===
4 | 2+|*Requirements Class*
5 | 2+|http://www.opengis.net/spec/ogcapi-records-3/1.0/req/harvest
6 | |Target type |Web API
7 | |Dependency |T.B.D.
8 | |Conditional Dependency |T.B.D.
9 | |===
10 |
--------------------------------------------------------------------------------
/proposals/facets/openapi/schemas/bucket.yaml:
--------------------------------------------------------------------------------
1 | type: object
2 | description: A bucket is the number of items sharing a certain value for a property
3 | required:
4 | - key
5 | - count
6 | properties:
7 | key:
8 | type: string
9 | description: Bucket value
10 | count:
11 | type: number
12 | description: Number of hits for this value
--------------------------------------------------------------------------------
/template/standard/annex_bibliography.adoc:
--------------------------------------------------------------------------------
1 | [appendix]
2 | :appendix-caption: Annex
3 | [[Bibliography]]
4 | = Bibliography
5 |
6 | * [[OAFeat-Guide]] Heazel, Ch.: *Guide to OGC API - Features*, https://example.org/fixme
7 | * [[OpenAPI]] Open API Initiative: *OpenAPI Specification 3.0.2*,
8 | https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md
9 |
--------------------------------------------------------------------------------
/extensions/facets/standard/annex_ats.adoc:
--------------------------------------------------------------------------------
1 | [appendix]
2 | :appendix-caption: Annex
3 | [[ats]]
4 | == Conformance Class Abstract Test Suite (Normative)
5 |
6 | === Conformance Class: Simple Facets
7 |
8 | include::abstract_tests/ATS_class_simple.adoc[]
9 |
10 | === Conformance Class: Advanced Facets
11 |
12 | include::abstract_tests/ATS_class_advanced.adoc[]
13 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/abstract_tests/ATS_class_simpletx.adoc:
--------------------------------------------------------------------------------
1 | [[ats_create-replace-delete]]
2 | [cols="1,4",width="90%"]
3 | |===
4 | 2+|*Requirements Class*
5 | 2+|http://www.opengis.net/spec/ogcapi-features-4/1.0/req/create-replace-delete
6 | |Target type |Web API
7 | |Dependency |<>
8 | |===
9 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/recommendations/opensearch/REC_param-language.adoc:
--------------------------------------------------------------------------------
1 | [[rec_opensearch_param-language]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Recommendation {counter:rec-id}* |*/rec/opensearch/param-language*
5 |
6 | Servers SHOULD support the language (`language`) parameter for the search operation (method: GET, path: `/collections/{collectionId}/items`).
7 | |===
8 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/recommendations/opensearch/REC_param-geometry.adoc:
--------------------------------------------------------------------------------
1 | [[rec_opensearch_param-geometry]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Recommendation {counter:rec-id}* |*/rec/opensearch/param-geometry*
5 | ^|A |Servers SHOULD support the geometry (`geo:geometry`) parameter for the search operation (method: GET, path: `/collections/{collectionId}/items`).
6 | |===
7 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/recommendations/opensearch/REC_param-geo-name.adoc:
--------------------------------------------------------------------------------
1 | [[rec_opensearch_param-geo-name]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Recommendation {counter:rec-id}* |*/rec/opensearch/param-geo-name*
5 | ^|A |Servers SHOULD support the place name search parameter (`geo:name`) for the search operation (method: GET, path: `/collections/{collectionId}/items`).
6 | |===
7 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/recommendations/opensearch/REC_param-startpage.adoc:
--------------------------------------------------------------------------------
1 | [[rec_opensearch_param-startPage]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Recommendation {counter:rec-id}* |*/rec/opensearch/param-startPage*
5 | ^|A |Servers SHOULD support the start page (`startPage`) parameter for the search operation (method: GET, path: `/collections/{collectionId}/items`).
6 | |===
7 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/opensearch/REQ_descriptiondoc-op.adoc:
--------------------------------------------------------------------------------
1 | [[req_opensearch_descriptiondoc-op]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/opensearch/descriptiondoc-op*
5 | ^|A |The HTTP GET operation SHALL be supported at the <> endpoint specified in the server's <>.
6 | |===
7 |
--------------------------------------------------------------------------------
/core/examples/json/templated-link-ref.json:
--------------------------------------------------------------------------------
1 | {
2 | "rel": "item",
3 | "type": "image/png",
4 | "title": "World Ozone and Ultraviolet Radiation Data Centre (WOUDC) stations",
5 | "uriTemplate": "https://geo.woudc.org/ows?service=WMS&version=1.3.0&request=GetMap&crs={crs}&bbox={bbox}&layers=stations&width={width}&height={height}&format=image/png",
6 | "varBase": "variables.json"
7 | }
8 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/recommendations/opensearch/REC_param-startindex.adoc:
--------------------------------------------------------------------------------
1 | [[rec_opensearch_param-startIndex]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Recommendation {counter:rec-id}* |*/rec/opensearch/param-startIndex*
5 | ^|A |Servers SHOULD support the start index (`startIndex`) parameter for the search operation (method: GET, path: `/collections/{collectionId}/items`).
6 | |===
7 |
--------------------------------------------------------------------------------
/extensions/README.md:
--------------------------------------------------------------------------------
1 | # Extensions
2 |
3 | This directory is where extensions to the "OGC API - Records - Part 1: Core"
4 | specification should live.
5 |
6 | These are extensions that are within the charter of the SWG and are being actively worked on. **Proposed** extensions should be created in the [proposals](https://github.com/opengeospatial/ogcapi-records/tree/master/proposals) directory.
7 |
--------------------------------------------------------------------------------
/core/openapi/responses/NotFound.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | description: |-
3 | The requested resource does not exist on the server. For example,
4 | a path parameter had an incorrect value.
5 | content:
6 | application/json:
7 | schema:
8 | $ref: 'https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/exception.yaml'
9 | text/html:
10 | schema:
11 | type: string
12 |
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/requirements_class_query-param-profile.adoc:
--------------------------------------------------------------------------------
1 | [[rc_query-param-profile]]
2 | [requirements_class]
3 | ====
4 | [%metadata]
5 | identifier:: http://www.opengis.net/spec/ogcapi-records-1/1.0/req/query-param-profile
6 | subject:: Web API
7 | requirement:: /req/query-param-profile/definition
8 | requirement:: /req/query-param-profile/response
9 | ====
10 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/recommendations/opensearch/REC_param-geo-relation.adoc:
--------------------------------------------------------------------------------
1 | [[rec_opensearch_param-geo-relation]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Recommendation {counter:rec-id}* |*/rec/opensearch/param-geo-relation*
5 | ^|A |Servers SHOULD support the geometry relation (`geo:relation`) parameter for the search operation (method: GET, path: `/collections/{collectionId}/items`).
6 | |===
7 |
--------------------------------------------------------------------------------
/core/openapi/schemas/catalogs.yaml:
--------------------------------------------------------------------------------
1 | allOf:
2 | - $ref: 'https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/collections.yaml'
3 | - type: object
4 | properties:
5 | collections:
6 | type: array
7 | items:
8 | $ref: 'catalog.yaml'
9 | linkTemplates:
10 | type: array
11 | items:
12 | $ref: 'linkTemplate.yaml'
13 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/recommendations/opensearch/REC_param-inputencoding.adoc:
--------------------------------------------------------------------------------
1 | [[rec_opensearch_param-inputencoding]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Recommendation {counter:rec-id}* |*/rec/opensearch/param-inputencoding*
5 |
6 | Servers SHOULD support the input encoding (`inputencoding`) parameter for the search operation (method: `GET`, path: `/collections/{collectionId}/items`).
7 | |===
8 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/recommendations/opensearch/REC_param-proximity.adoc:
--------------------------------------------------------------------------------
1 | [[rec_opensearch_param-proximity]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Recommendation {counter:rec-id}* |*/rec/opensearch/param-proximity*
5 | ^|A |Servers SHOULD support the proximity parameters (`geo:lat`, `geo:lon`, `geo:radius`) for the search operation (method: GET, path: `/collections/{collectionId}/items`).
6 | |===
7 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/recommendations/opensearch/REC_param-time-relation.adoc:
--------------------------------------------------------------------------------
1 | [[rec_opensearch_param-time-relation]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Recommendation {counter:rec-id}* |*/rec/opensearch/param-time-relation*
5 | ^|A |Servers SHOULD support the geometry relation (`geo:relation`) parameter for the search operation (method: GET, path: `/collections/{collectionId}/items`).
6 | |===
7 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/recommendations/opensearch/REC_param-outputencoding.adoc:
--------------------------------------------------------------------------------
1 | [[rec_opensearch_param-outputencoding]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Recommendation {counter:rec-id}* |*/rec/opensearch/param-outputencoding*
5 |
6 | Servers SHOULD support the output encoding (`outputencoding`) parameter for the search operation (method: `GET`, path: `/collections/{collectionId}/items`).
7 | |===
8 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/figures/README.md:
--------------------------------------------------------------------------------
1 | Figures go here.
2 |
3 | Each figure is a separate file with the naming convention:
4 |
5 | "PTm_FIGn.xxx" where "m" is a number with leading zeroes appropriate for the total number of parts, "n" is a number with leading zeroes appropriate for the total number of figures and "xxx" is the appropriate extension for the file type.
--------------------------------------------------------------------------------
/template/standard/abstract_tests/cc/TEST001.adoc:
--------------------------------------------------------------------------------
1 | ===== Test case title
2 |
3 | (( additional discussion, if needed ))
4 |
5 | ====== a) Test Purpose:
6 | (( description ))
7 |
8 | ====== b) Pre-conditions:
9 | * (( list all preconditions ))
10 |
11 | ====== c) Test Method:
12 | * (( steps to execute and assertions to test ))
13 |
14 | ====== d) References:
15 | * <>
16 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/requirements_class_opensearch.adoc:
--------------------------------------------------------------------------------
1 | [[rc_opensearch]]
2 | [cols="1,4",width="90%"]
3 | |===
4 | 2+|*Requirements Class*
5 | 2+|http://www.opengis.net/spec/ogcapi-records-1/1.0/req/opensearch
6 | |Target type |Web API
7 | |Dependency |http://www.opengis.net/spec/ogcapi_common-1/1.0/req/core
8 | |Dependency |http://www.opengis.net/spec/ogcapi_common-1/1.0/req/collections
9 | |===
10 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/opensearch/REQ_param-language-response.adoc:
--------------------------------------------------------------------------------
1 | [[req_opensearch_language-response]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/opensearch/language-response*
5 | ^|Condition |Server implements recommendation <>.
6 | ^|A |The response records SHALL be presented in the requested language.
7 | |===
8 |
--------------------------------------------------------------------------------
/core/openapi/schemas/recordCollectionGeoJSON.yaml:
--------------------------------------------------------------------------------
1 | allOf:
2 | - $ref: 'https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/featureCollectionGeoJSON.yaml'
3 | - type: object
4 | properties:
5 | features:
6 | type: array
7 | items:
8 | $ref: 'recordGeoJSON.yaml'
9 | linkTemplates:
10 | type: array
11 | items:
12 | $ref: 'linkTemplate.yaml'
13 |
--------------------------------------------------------------------------------
/extensions/facets/README.md:
--------------------------------------------------------------------------------
1 | # OGC API - Records - Part 2: Facets
2 |
3 | This folder contains the content for the OGC API - Records - Part 2: Facets standard.
4 |
5 | The repo is organized as follows:
6 |
7 | * standard - the main standard document content
8 | - organized in multiple sections and directories
9 | * openapi - normative OpenAPI components specified by the standard
10 | * examples - JSON and XML examples
11 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/recommendations/atom/PER_foreign-markup.adoc:
--------------------------------------------------------------------------------
1 | [[per_core_foreign-markup]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Permission {counter:per-id}* |*/per/core/foreign-markup*
5 |
6 | Servers MAY include additional foreign markup from other vocabularies in an ATOM document as per the extension provisions specified in the https://datatracker.ietf.org/doc/html/rfc4287#section-6[The Atom Syndication Format] specification.
7 | |===
8 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/opensearch/REQ_autodiscovery-link.adoc:
--------------------------------------------------------------------------------
1 | [[req_opensearch_autodiscovery-link]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/opensearch/autodiscovery-link*
5 | ^|A |An autodiscovery link (relation: `search`, type: `application/opensearchdescription+xml`) SHALL be included in the links section of the collection information object (path: `/collection/{collectionId}`).
6 | |===
7 |
8 |
9 |
--------------------------------------------------------------------------------
/core/openapi/parameters/profile.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | name: profile
3 | in: query
4 | description: |-
5 | One or more identifiers that provide information about additional
6 | semantics (constraints, conventions, extensions), in addition to
7 | those defined by the media type, that are associated with the
8 | target resource.
9 | required: false
10 | schema:
11 | type: array
12 | items:
13 | type: string
14 | explode: false
15 | style: form
16 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/opensearch/REQ_param-outputencoding-response.adoc:
--------------------------------------------------------------------------------
1 | [[req_opensearch_outputencoding-response]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/opensearch/outputencoding-response*
5 | ^|Condition |Server implements recommendation <>.
6 | ^|A |The response records SHALL be presented in the requested output encoding.
7 | |===
8 |
--------------------------------------------------------------------------------
/template/standard/clause_6_cc.adoc:
--------------------------------------------------------------------------------
1 | == Requirements Class "CC"
2 |
3 | [[cc-overview]]
4 | === Overview
5 |
6 | include::requirements/requirements_class_cc.adoc[]
7 |
8 | (( add text how this part extends OGC API Features ))
9 |
10 | (( use the following as templates for normative statements: ))
11 |
12 | include::requirements/cc/REQ_req.adoc[]
13 |
14 | include::recommendations/cc/REC_rec.adoc[]
15 |
16 | include::recommendations/cc/PER_per.adoc[]
17 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-collection/REC_title.adoc:
--------------------------------------------------------------------------------
1 | [[rec_record-collection_title]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/record-core/title*
6 | //
7 | //A catalog SHOULD include the `title` property.
8 | //|===
9 |
10 | [recommendation]
11 | ====
12 | [%metadata]
13 | identifier:: /rec/record-core/catalog-title
14 | part:: A catalog SHOULD include the `title` property.
15 | ====
--------------------------------------------------------------------------------
/template/README.md:
--------------------------------------------------------------------------------
1 | # Standard template
2 |
3 | This folder contains the content for the OGC API - Features - Part n: TBD standard.
4 |
5 | The repo is organized as follows:
6 |
7 | * standard - the main standard document content
8 | - organized in multiple sections and directories
9 | * openapi - normative OpenAPI components specified by the standard
10 | * xml - normative XML/XSD components specified by the standard
11 | * examples - JSON and XML examples
12 |
--------------------------------------------------------------------------------
/core/examples/yaml/processes/localResourcesCatalog.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | allOf:
3 | - $ref: 'https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/schemas/processList.yaml'
4 | - $ref: '../../../openapi/schemas/catalogCommonProperties.yaml'
5 | - type: object
6 | properties:
7 | itemType:
8 | type: string
9 | enum:
10 | - record
11 | recordsArrayName:
12 | type: string
13 | enum:
14 | - processes
15 |
--------------------------------------------------------------------------------
/core/openapi/parameters/ids.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | name: ids
3 | in: query
4 | description: |-
5 | The optional ids parameter allows a specific list of records, identified
6 | by their identifiers, to be fetched from a catalog. Only records whose
7 | identifier matches one of the values listed for this parameter shall appear
8 | in the response.
9 | required: false
10 | schema:
11 | type: array
12 | items:
13 | type: string
14 | explode: false
15 | style: form
16 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/query-param-profile/PER_profiles-of-media-type.adoc:
--------------------------------------------------------------------------------
1 | [[per_query-param-profile_profiles-of-media-type]]
2 | [permission]
3 | ====
4 | [%metadata]
5 | identifier:: /per/query-param-profile/profiles-of-media-type
6 | part:: For any media type that can represent a resource, the server MAY support only a subset of the profiles offered for the resource.
7 | part:: The subset of supported profiles for a media type MAY be empty, too.
8 | ====
9 |
--------------------------------------------------------------------------------
/core/examples/yaml/collections/localResourcesCatalog.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | allOf:
3 | - $ref: 'https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/collections.yaml'
4 | - $ref: '../../../openapi/schemas/catalogCommonProperties.yaml'
5 | - type: object
6 | properties:
7 | itemType:
8 | type: string
9 | enum:
10 | - record
11 | recordsArrayName:
12 | type: string
13 | enum:
14 | - collections
15 |
--------------------------------------------------------------------------------
/core/openapi/responses/NotAcceptable.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | description: |-
3 | Content negotiation failed. For example, the `Accept` header submitted
4 | in the request did not support any of the media types supported by the
5 | server for the requested resource.
6 | content:
7 | application/json:
8 | schema:
9 | $ref: 'https://schemas.opengis.net/ogcapi/features/part1/1.0/openapi/schemas/exception.yaml'
10 | text/html:
11 | schema:
12 | type: string
13 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-core/REC_contact.adoc:
--------------------------------------------------------------------------------
1 | [[rec_record-core_contact]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/record-core/contact*
6 | //^|A |A contact `country` property SHOULD use ISO 3166-1 notation.
7 | //|===
8 |
9 | [recommendation]
10 | ====
11 | [%metadata]
12 | identifier:: /rec/record-core/contact
13 | part:: A contact `country` property SHOULD use ISO 3166-1 notation.
14 | ====
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/abstract_tests/simpletx/update/put/ATS_body.adoc:
--------------------------------------------------------------------------------
1 | [[ats_create-replace-delete_update_put-body]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Abstract Test {counter:ats-id}* |*/conf/create-replace-delete/update/put/body*
5 | ^|Test Purpose |
6 | ^|Requirement |
7 | ^|Dependencies |
8 | ^|Test Method |
9 | |===
10 |
11 | ((The body of a PUT request shall contain a representation of the replacement resource.))
12 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/abstract_tests/simpletx/update/put/ATS_put-op.adoc:
--------------------------------------------------------------------------------
1 | [[ats_create-replace-delete_update_put-put-op]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Abstract Test {counter:ats-id}* |*/req/create-replace-delete/update/put/put-op*
5 | ^|Test Purpose |
6 | ^|Requirement |
7 | ^|Dependencies |
8 | ^|Test Method |
9 | |===
10 |
11 | ((For every resource in a collection, the server shall support the HTTP PUT operation.))
12 |
--------------------------------------------------------------------------------
/core/openapi/parameters/type.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | name: type
3 | in: query
4 | description: |-
5 | The optional type parameter allows a specific list of records, identified
6 | by their resource type, to be fetched from a catalog. Only records whose
7 | resource type matches one of the values listed for this parameter shall
8 | appear in the response.
9 | required: false
10 | schema:
11 | type: array
12 | items:
13 | type: string
14 | explode: false
15 | style: form
16 |
17 |
18 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/annex_history.adoc:
--------------------------------------------------------------------------------
1 | [appendix]
2 | :appendix-caption: Annex
3 | == Revision History
4 |
5 | [cols="12,18,12,12,46",options="header"]
6 | |===
7 | |Date |Release |Editor | Primary clauses modified |Description
8 | |2020-01-13 |Template |C. Heazel |all |initial template
9 | |2020-04-22 |1.0-dev |T. Kralidis |all|changes to reflect Records, editorial updates, add Q parameter to clause 7
10 | |2021-06-18 |1.0-dev |T. Kralidis |all|full review for 1.0.0-draft.1
11 | |===
12 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/recommendations/opensearch/REC_response-query.adoc:
--------------------------------------------------------------------------------
1 | [[rec_opensearch_response-query]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Recommendation {counter:rec-id}* |*/rec/opensearch/response-query*
5 | ^|A |In the response to a <>, server SHOULD inc
6 | lude a https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md#the-query-element[Query element] that exposes the query parameters used to gen
7 | erate this response.
8 | |===
9 |
--------------------------------------------------------------------------------
/core/standard/annex_stac.adoc:
--------------------------------------------------------------------------------
1 | [appendix]
2 | :appendix-caption: Annex
3 | [[annex_stac]]
4 | == Crosswalk between STAC and OGC API - Records - Part 1 Core (Informative)
5 |
6 | The document https://github.com/stac-utils/stac-crosswalks/tree/master/ogcapi-records#crosswalk-between-stac-and-ogc-api---records["Crosswalk between STAC and OGC API - Records"] presents a comparison between this standard and the https://github.com/radiantearth/stac-api-spec/tree/v1.0.0[Spatial Temporal Asset Catalog, V 1.0.0].
7 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-collection/REC_description.adoc:
--------------------------------------------------------------------------------
1 | [[rec_record-collection_description]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/record-core/description*
6 | //
7 | //A catalog SHOULD include the `description` property.
8 | //|===
9 |
10 | [recommendation]
11 | ====
12 | [%metadata]
13 | identifier:: /rec/record-core/catalog-description
14 | part:: A catalog SHOULD include the `description` property.
15 | ====
--------------------------------------------------------------------------------
/core/openapi/responses/LandingPage.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | description: |-
3 | The landing page provides links to the API definition (link relations
4 | `service-desc` and `service-doc`), the Conformance declaration (path
5 | `/conformance`, link relation `conformance`), and the Record Collections
6 | (path `/collections`, link relation `data`).
7 | content:
8 | application/json:
9 | schema:
10 | $ref: '../schemas/landingPage.yaml'
11 | text/html:
12 | schema:
13 | type: string
14 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/query-param-profile/REC_negotiation.adoc:
--------------------------------------------------------------------------------
1 | [[rec_query-param-profile_negotiation]]
2 | [recommendation]
3 | ====
4 | [%metadata]
5 | identifier:: /rec/query-param-profile/negotiation
6 | part:: If the server supports one or more of the requested profile(s) for the media type and resource, these profiles SHOULD be used for the response.
7 | part:: The profile negotiation SHOULD NOT result in an error, e.g., because a requested profile cannot be provided.
8 | ====
9 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/abstract_tests/simpletx/delete/ATS_delete-op.adoc:
--------------------------------------------------------------------------------
1 | [[ats_create-replace-delete_delete_delete-op]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Abstract Test {counter:ats-id}* |*/conf/create-replace-delete/delete/delete-op*
5 | ^|Test Purpose |
6 | ^|Requirement |
7 | ^|Dependencies |
8 | ^|Test Method |
9 | |===
10 |
11 | ((For every resource in a collection, the server shall support the HTTP DELETE operation.))
12 |
13 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/abstract_tests/simpletx/delete/ATS_response.adoc:
--------------------------------------------------------------------------------
1 | [[ats_create-replace-delete_delete_response]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Abstract Test {counter:ats-id}* |*/conf/create-replace-delete/delete/response*
5 | ^|Test Purpose |
6 | ^|Requirement |
7 | ^|Dependencies |
8 | ^|Test Method |
9 | |===
10 |
11 | ((A successful execution of the operation shall be reported as a response with a HTTP status code '200'.))
12 |
--------------------------------------------------------------------------------
/core/examples/json/conformance.json:
--------------------------------------------------------------------------------
1 | {
2 | "conformsTo": [
3 | "http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/core",
4 | "http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/oas30",
5 | "http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/searchable-catalog",
6 | "http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/oas30",
7 | "http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/json",
8 | "http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/html"
9 | ]
10 | }
11 |
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/record-collection/REQ_contact.adoc:
--------------------------------------------------------------------------------
1 | [[req_record-collection_contact]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/record-collection/contact*
6 | //
7 | //See requirement <>.
8 | //|===
9 |
10 |
11 | [requirement]
12 | ====
13 | [%metadata]
14 | identifier:: /req/record-collection/contact
15 | part:: See requirement <>.
16 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/record-core/REQ_time-zone.adoc:
--------------------------------------------------------------------------------
1 | [[req_record-core_time-zone]]
2 |
3 | //[width="90%",cols="2,7a"]
4 | //|===
5 | //^|*Requirement {counter:req-num}* |*/req/record-core/time-zone*
6 | //^|A |Timestamps in the `time` member in a record SHALL use UTC ("Z") as the time zone.
7 | //|===
8 |
9 | [requirement]
10 | ====
11 | [%metadata]
12 | identifier:: /req/record-core/time-zone
13 | part:: Timestamps in the `time` member in a record SHALL use UTC ("Z") as the time zone.
14 | ====
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/abstract_tests/simpletx/update/put/ATS_response.adoc:
--------------------------------------------------------------------------------
1 | [[ats_create-replace-delete_update_put_resoponse]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Abstract Test {counter:ats-id}* |*/conf/create-replace-delete/update/put/response*
5 | ^|Test Purpose |
6 | ^|Requirement |
7 | ^|Dependencies |
8 | ^|Test Method |
9 | |===
10 |
11 | ((A successful execution of the operation shall be reported as a response with a HTTP status code '200'.))
12 |
13 |
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/html/REQ_definition.adoc:
--------------------------------------------------------------------------------
1 | [[req_html_definition]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/html/definition*
6 | //^|A |Every `200` response of an operation of the server SHALL support the media type `text/html`.
7 | //|===
8 |
9 |
10 | [requirement]
11 | ====
12 | [%metadata]
13 | identifier:: /req/html/definition
14 | part:: Every `200` response of an operation of the server SHALL support the media type `text/html`.
15 | ====
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/requirements_class_atom.adoc:
--------------------------------------------------------------------------------
1 | [[rc_atom]]
2 | [cols="1,4",width="90%"]
3 | |===
4 | 2+|*Requirements Class*
5 | 2+|http://www.opengis.net/spec/ogcapi-records-1/1.0/req/atom
6 | |Target type |Web API
7 | |Dependency |<>
8 | |Dependency |<>
9 | |Pre-conditions |
10 | 1) The API advertises conformance to the ATOM Conformance Class +
11 | 2) The client negotiates use of an ATOM or XML encoding.
12 | |===
13 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/json/REC_header-profile-link.adoc:
--------------------------------------------------------------------------------
1 | [[rec_json_header-profile-link]]
2 |
3 | [recommendation]
4 | ====
5 | [%metadata]
6 | identifier:: /rec/json/header-profile-link
7 | part:: A server SHOULD include a profile link (href: `http://www.opengis.net/def/profile/OGC/0/ogc-catalog`, relation: `profile`) in the response https://datatracker.ietf.org/doc/html/rfc8288#section-3[HTTP headers] (see https://datatracker.ietf.org/doc/html/rfc6906[RFC 6906, The 'profile' Link Relation Type]).
8 | ====
9 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-collection/PER_catalogs.adoc:
--------------------------------------------------------------------------------
1 | [[per_record-collection_catalogs]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Permission {counter:per-id}* |*/per/record-collection/catalogs*
6 | //
7 | //A catalog MAY include zero or more references to other related catalogs.
8 | //|===
9 |
10 |
11 | [permission]
12 | ====
13 | [%metadata]
14 | identifier:: /per/record-collection/catalogs
15 | part:: A catalog MAY include zero or more references to other related catalogs.
16 | ====
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/opensearch/REQ_param-startpage-response.adoc:
--------------------------------------------------------------------------------
1 | [[req_opensearch_startpage-response]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/opensearch/startpage-response*
5 | ^|Condition |Server implements recommendation <>.
6 | ^|A |The server SHALL begin presenting response records starting at the specified page offset.
7 | ^|B |The start page of the first page of responses SHALL be counted as 1.
8 | |===
9 |
--------------------------------------------------------------------------------
/template/standard/clause_3_references.adoc:
--------------------------------------------------------------------------------
1 | == References
2 | The following normative documents contain provisions that, through reference in this text, constitute provisions of this document. For dated references, subsequent amendments to, or revisions of, any of these publications do not apply. For undated references, the latest edition of the normative document referred to applies.
3 |
4 | * [[OAFeat-1]] Portele, C., Vretanos, P.: OGC 17-069r2, *OGC API - Features - Part 1: Core*, https://docs.ogc.org/is/17-069r3/17-069r3.html
5 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/opensearch/REQ_param-startindex-response.adoc:
--------------------------------------------------------------------------------
1 | [[req_opensearch_startindex-response]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/opensearch/startindex-response*
5 | ^|Condition |Server implements recommendation <>.
6 | ^|A |The server SHALL begin presenting response records starting with the specified offset value.
7 | ^|B |The start index of the first response record SHALL be counted as 1.
8 | |===
9 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/opensearch/REQ_param-outputencoding.adoc:
--------------------------------------------------------------------------------
1 | [[req_opensearch_param-outputencoding]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/opensearch/param-outputencoding*
5 | ^|Conditions |Server implements recommendation <>.
6 | ^|A |The value of this parameter SHALL override any value specified for the request using the https://tools.ietf.org/html/rfc7231#section-5.3.4[Accept-Encoding] HTTP header.
7 | |===
8 |
--------------------------------------------------------------------------------
/extensions/facets/standard/abstract_tests/simple/ATS_media_type.adoc:
--------------------------------------------------------------------------------
1 | [[ats_simple_media_type]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Abstract Test {counter:ats-id}* |*/conf/simple/media_type*
5 | ^|Test Purpose |Validate media type.
6 | ^|Requirement |<>
7 | ^|Test Method |. Construct a path for a facets page
8 | . Issue an HTTP GET request on the path
9 | . Check that the media type returned as part of the HTTP `Content-Type` header is `application/facets+json`.
10 | |===
11 |
12 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/README.md:
--------------------------------------------------------------------------------
1 | # Standard template
2 |
3 | This folder contains the content for OGC API - Features - Part 4: Create, replace, update and delete.
4 |
5 | The repo is organized as follows:
6 |
7 | * standard - the main standard document content
8 | - organized in multiple sections and directories
9 | * openapi - normative OpenAPI components specified by the standard
10 | * xml - normative XML/XSD components specified by the standard
11 | * examples - JSON and XML examples
12 |
--------------------------------------------------------------------------------
/template/standard/images/README.md:
--------------------------------------------------------------------------------
1 | Image files for graphics go here.
2 |
3 | Each graphic is a separate file with the naming convention:
4 |
5 | "FIGn.xxx" where "n" is a number with leading zeroes appropriate for the total number of figures and "xxx" is the appropriate extension for the file type.
6 |
7 | or, for other graphics not associated with figures:
8 |
9 | "GRPn.xxx" where "n" is a sequential number with leading zeroes appropriate for the total number of graphics and "xxx" is the appropriate extension for the file type.
10 |
--------------------------------------------------------------------------------
/DEVELOPMENT.md:
--------------------------------------------------------------------------------
1 | ## Development Guidelines
2 |
3 | TBD
4 |
5 | ## Specification Driving factors
6 |
7 | TBD
8 |
9 | ## Specification Change Criteria
10 |
11 | TBD
12 |
13 | ## Specification Change Process
14 |
15 | TBD
16 |
17 | ## Tracking Process
18 |
19 | * GitHub is the medium of record for all spec designs, use cases, and so on.
20 |
21 |
22 | ## Release Process
23 |
24 | TBD
25 |
26 | ## Draft Features
27 |
28 |
29 | ## Transparency
30 |
31 |
32 |
33 | ## Participation
34 |
35 |
36 |
37 | ## Community Roles
38 |
39 |
--------------------------------------------------------------------------------
/core/standard/requirements/crawlable-catalog/REQ_record.adoc:
--------------------------------------------------------------------------------
1 | [[req_crawlable-catalog_record]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/crawlable-catalog/record*
6 | //
7 | //A <> SHALL be created for each resource to be made discoverable.
8 | //|===
9 |
10 |
11 | [requirement]
12 | ====
13 | [%metadata]
14 | identifier:: /req/crawlable-catalog/record
15 | part:: A <> SHALL be created for each resource to be made discoverable.
16 | ====
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/html/REC_schema-org.adoc:
--------------------------------------------------------------------------------
1 | [[rec_html_schema-org]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/html/schema-org*
6 | //^|A |A `200` response with the media type `text/html`, SHOULD include <> annotations.
7 | //|===
8 |
9 | [recommendation]
10 | ====
11 | [%metadata]
12 | identifier:: /rec/html/schema-org
13 | part:: A `200` response with the media type `text/html`, SHOULD include <> annotations.
14 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/query-param-profile/REQ_response.adoc:
--------------------------------------------------------------------------------
1 | [[req_query-param-profile_response]]
2 | [requirement]
3 | ====
4 | [%metadata]
5 | identifier:: /req/query-param-profile/response
6 | part:: The query parameter is not required, that is, omitting the parameter in a request SHALL not result in an error.
7 | part:: If the media type of the response supports web links in accordance with <>, the response SHALL include links to the selected profile(s) with the link relation type "profile".
8 | ====
9 |
--------------------------------------------------------------------------------
/template/standard/clause_2_conformance.adoc:
--------------------------------------------------------------------------------
1 | == Conformance
2 |
3 | This standard defines one requirements / conformance class <>.
4 | The standardization target is "Web APIs".
5 |
6 | Conformance with this standard shall be checked using all the relevant tests
7 | specified in <> of this document. The framework, concepts, and
8 | methodology for testing, and the criteria to be achieved to claim conformance
9 | are specified in the OGC Compliance Testing Policies and Procedures and the
10 | OGC Compliance Testing web site.
11 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/requirements/records/crs/REQ_content-crs-header.adoc:
--------------------------------------------------------------------------------
1 | [[req_records_content-crs-header]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/records/content-crs-header*
5 | ^|Condition |Server implements <>
6 | ^|A |The server SHALL inspect CREATE, REPLACE and UPDATE requests for the `Content-Crs` HTTP header and interpret coordinates in the request body to be in the declared CRS.
7 | |===
8 |
--------------------------------------------------------------------------------
/core/openapi/parameters/externalIds.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | name: externalIds
3 | in: query
4 | description: |-
5 | The optional externalIds parameter allows a specific list of records,
6 | identified by their external identifiers, to be fetched from a catalog.
7 | Only records where one of their associated external identifiers equals
8 | one of the values listed for this parameter shall appear in the response.
9 | required: false
10 | schema:
11 | type: array
12 | items:
13 | type: string
14 | pattern: ([^:]+:)?[^:]+
15 | explode: false
16 | style: form
17 |
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/record-collection/REQ_records.adoc:
--------------------------------------------------------------------------------
1 | [[req_record-collection_records]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/record-collection/records*
6 | //
7 | //Records encoded in-line in the catalog SHALL be encoded using an array property named `records`.
8 | //|===
9 |
10 | [requirement]
11 | ====
12 | [%metadata]
13 | identifier:: /req/record-collection/records
14 | part:: Records encoded in-line in the catalog SHALL be encoded using an array property named `records`.
15 | ====
--------------------------------------------------------------------------------
/extensions/facets/standard/abstract_tests/simple/ATS_conformance.adoc:
--------------------------------------------------------------------------------
1 | [[ats_simple_conformance]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Abstract Test {counter:ats-id}* |*/conf/simple/conformance*
5 | ^|Test Purpose |Validate simple identification.
6 | ^|Requirement |<>
7 | ^|Test Method |. Construct a path for a conformance page
8 | . Issue an HTTP GET request on the path
9 | . Check that the `+conformsTo+` array contains the value `+http://www.opengis.net/spec/ogcapi-records-2/1.0/conf/simple+`.
10 | |===
11 |
12 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/abstract_tests/ATS_class_patch-update.adoc:
--------------------------------------------------------------------------------
1 | [[ats_update]]
2 | [cols="1,4",width="90%"]
3 | |===
4 | 2+|*Requirements Class*
5 | 2+|http://www.opengis.net/spec/ogcapi-features-4/1.0/req/create-replace-delete/update
6 | |Target type |Web API
7 | |Dependency |<>
8 | |Dependency |<>
9 | |Dependency |<>
10 | |===
11 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/abstract_tests/features/ATS_collection-items-end-point.adoc:
--------------------------------------------------------------------------------
1 | [[ats_collection-items-end-point]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:ats-id}* |*/conf/features/collection-items-end-point*
5 | ^|A |TBD
6 | ^|B |TBD
7 | |===
8 |
9 | ((For features, the collection items end point shall be the path '/collections/{collectionsId}/items'.))
10 |
11 | ((The parameter 'collectionId' is each 'id' property in the feature collection response (JSONPath: '$.collections[*].id').))
12 |
13 |
--------------------------------------------------------------------------------
/core/standard/recommendations/crawlable-catalog/REC_record-file-name.adoc:
--------------------------------------------------------------------------------
1 | [[rec_crawlable-catalog_record-file-name]]
2 | //[width="90%",cols="2,6a"]
3 | //|===
4 | //^|*Recommendation {counter:rec-id}* |*/rec/crawlable-catalog/record-file-name*
5 | //
6 | //The name of the record file SHOULD be `{id}.json` where `{id}` is the identifier of the record.
7 | //|===
8 |
9 | [recommendation]
10 | ====
11 | [%metadata]
12 | identifier:: /rec/crawlable-catalog/record-file-name
13 | part:: The name of the record file SHOULD be `{id}.json` where `{id}` is the identifier of the record.
14 | ====
--------------------------------------------------------------------------------
/extensions/facets/standard/abstract_tests/advanced/ATS_conformance.adoc:
--------------------------------------------------------------------------------
1 | [[ats_advanced_conformance]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Abstract Test {counter:ats-id}* |*/conf/advanced/conformance*
5 | ^|Test Purpose |Validate advanced identification.
6 | ^|Requirement |<>
7 | ^|Test Method |. Construct a path for a conformance page
8 | . Issue an HTTP GET request on the path
9 | . Check that the `+conformsTo+` array contains the value `+http://www.opengis.net/spec/ogcapi-records-2/1.0/conf/advanced+`.
10 | |===
11 |
12 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-collection/PER_record-access-modes.adoc:
--------------------------------------------------------------------------------
1 | [[per_record-collection_record-access-modes]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Permission {counter:per-id}* |*/per/record-collection/record-access-modes*
6 | //
7 | //A catalog MAY simultaneously include all three of the aforementioned access modes.
8 | //|===
9 |
10 |
11 | [permission]
12 | ====
13 | [%metadata]
14 | identifier:: /per/record-collection/record-access-modes
15 | part:: A catalog MAY simultaneously include all three of the aforementioned access modes.
16 | ====
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/images/README.md:
--------------------------------------------------------------------------------
1 | Image files for graphics go here.
2 |
3 | Each graphic is a separate file with the naming convention:
4 |
5 | "FIGn.xxx" where "n" is a number with leading zeroes appropriate for the total number of figures and "xxx" is the appropriate extension for the file type.
6 |
7 | or, for other graphics not associated with figures:
8 |
9 | "GRPn.xxx" where "n" is a sequential number with leading zeroes appropriate for the total number of graphics and "xxx" is the appropriate extension for the file type.
10 |
--------------------------------------------------------------------------------
/core/standard/recommendations/crawlable-catalog/REC_record-file-location.adoc:
--------------------------------------------------------------------------------
1 | [[rec_crawlable-catalog_record-file-location]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/crawlable-catalog/record-file-location*
6 | //
7 | //The record file SHOULD be located close to the resource(s) that the record describes.
8 | //|===
9 |
10 |
11 | [recommendation]
12 | ====
13 | [%metadata]
14 | identifier:: /rec/crawlable-catalog/record-file-location
15 | part:: The record file SHOULD be located close to the resource(s) that the record describes.
16 | ====
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/opensearch/REQ_descriptiondoc-response-lang.adoc:
--------------------------------------------------------------------------------
1 | [[req_opensearch_descriptiondoc-response-lang]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/opensearch/descriptiondoc-response-lang*
5 | ^|A |The https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md#opensearch-description-document[OpenSearch description document] SHALL include one https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md#the-language-element[Language element] for each language the server supports for search results.
6 | |===
7 |
--------------------------------------------------------------------------------
/extensions/facets/standard/Makefile:
--------------------------------------------------------------------------------
1 | FILE_BASENAME=document
2 |
3 | html:
4 | asciidoctor --verbose --trace -o ${FILE_BASENAME}.html ${FILE_BASENAME}.adoc
5 |
6 | pdf:
7 | asciidoctor --verbose --trace -r asciidoctor-pdf --trace -b pdf -o ${FILE_BASENAME}.pdf ${FILE_BASENAME}.adoc
8 |
9 | docx:
10 | asciidoctor --verbose --trace --backend docbook --out-file - ${FILE_BASENAME}.adoc | pandoc --from docbook --to docx --output ${FILE_BASENAME}.docx
11 |
12 | clean:
13 | rm -f ${FILE_BASENAME}.html ${FILE_BASENAME}.pdf ${FILE_BASENAME}.docx
14 |
15 | .PHONY: html pdf docx linkcheck clean
16 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/abstract_tests/simpletx/update/put/ATS_rid-exception.adoc:
--------------------------------------------------------------------------------
1 | [[ats_create-replace-delete_update_put-rid-exception]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Abstract Test {counter:ats-id}* |*/conf/create-replace-delete/update/put/rid-exception*
5 | ^|Test Purpose |
6 | ^|Requirement |
7 | ^|Dependencies |
8 | ^|Test Method |
9 | |===
10 |
11 | ((If the target resource does not exist then the server shall indicate an unsuccessful execution of the operation that shall be reported as a response with a HTTP status code '404'.))
12 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/recommendations/opensearch/PER_additional-query-parameters.adoc:
--------------------------------------------------------------------------------
1 | [[per_opensearch_additional-query-parameters]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Permission {counter:per-id}* |*/per/opensearch/additional-query-parameters*
5 | ^|A |Servers MAY support additional query prameters that can be mapped to https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md#opensearch-11-parameters[OpenSearch] and https://portal.ogc.org/files/?artifact_id=56866[OGC OpenSearch Geo and Time Extensions] substitution variables not listed in <>.
6 | |===
7 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-core/PER_record-geometry.adoc:
--------------------------------------------------------------------------------
1 | [[per_record-core_geometry]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Permission {counter:per-id}* |*/per/record-core/geometry*
6 | //
7 | //Specific communities of interest and/or use cases MAY alter this obligation and make the `geometry` property mandatory.
8 | //|===
9 |
10 |
11 | [permission]
12 | ====
13 | [%metadata]
14 | identifier:: /per/record-core/geometry
15 | part:: Specific communities of interest and/or use cases MAY alter this obligation and make the `geometry` property mandatory.
16 | ====
--------------------------------------------------------------------------------
/extensions/OpenSearch/annex_ats.adoc:
--------------------------------------------------------------------------------
1 | [appendix]
2 | :appendix-caption: Annex
3 | == Conformance Class Abstract Test Suite (Normative)
4 |
5 | [NOTE]
6 | Ensure that there is a conformance class for each requirements class and a test for each requirement (identified by requirement name and number)
7 |
8 | === Conformance Class A
9 |
10 | ==== Requirement 1
11 | [cols=">20h,<80d",width="100%"]
12 | |===
13 | |Test id: |/conf/conf-class-a/req-name-1
14 | |Requirement: |/req/req-class-a/req-name-1
15 | |Test purpose: | Verify that...
16 | |Test method: | Inspect...
17 | |===
18 |
19 | ==== Requirement 2
20 |
--------------------------------------------------------------------------------
/proposals/facets/openapi/schemas/facetResult.yaml:
--------------------------------------------------------------------------------
1 | Facet:
2 | type: object
3 | description: A facet is linked to an item property and contains the top set of occurrences (buckets) of values of the property
4 | required:
5 | - key
6 | properties:
7 | key:
8 | type: string
9 | description: Name of the property
10 | next:
11 | type: number
12 | description: Indication how many additional buckets exist for this property
13 | buckets:
14 | type: array
15 | description: buckets for this property
16 | items:
17 | $ref: "./bucket.yaml"
18 |
19 |
--------------------------------------------------------------------------------
/core/standard/requirements/crawlable-catalog/REQ_catalog.adoc:
--------------------------------------------------------------------------------
1 | [[req_crawlable-catalog_catalog]]
2 | //[width="90%",cols="2,6a"]
3 | //|===
4 | //^|*Requirement {counter:req-id}* |*/req/crawlable-catalog/catalog*
5 | //
6 | //A collection of related records, called a _catalog_, SHALL be described by a <>.
7 | //|===
8 |
9 |
10 | [requirement]
11 | ====
12 | [%metadata]
13 | identifier:: /req/crawlable-catalog/catalog
14 | part:: A collection of related records, called a _catalog_, SHALL be described by a <>.
15 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/requirements_class_oas30.adoc:
--------------------------------------------------------------------------------
1 | [[rc_oas30]]
2 |
3 | //[cols="1,4",width="90%"]
4 | //|===
5 | //2+|*Requirements Class*
6 | //2+|http://www.opengis.net/spec/ogcapi-records-1/1.0/req/oas30
7 | //|Target type |Web API
8 | //|Dependency |<>
9 | //|===
10 |
11 | [requirements_class]
12 | ====
13 | [%metadata]
14 | identifier:: http://www.opengis.net/spec/ogcapi-records-1/1.0/req/oas30
15 | subject:: Web API
16 | inherit:: <>
17 | requirement:: /req/oas30/oas-common
18 | requirement:: /req/oas30/conformance
19 | ====
--------------------------------------------------------------------------------
/extensions/facets/standard/abstract_tests/ATS_class_simple.adoc:
--------------------------------------------------------------------------------
1 | [[ats_simple]]
2 | [cols="1,4",width="90%"]
3 | |===
4 | 2+|*Conformance Class*
5 | 2+|http://www.opengis.net/spec/ogcapi-records-2/1.0/conf/simple
6 | |Target type |Web API
7 | |Requirements class |<>
8 | |===
9 |
10 | ==== Conformance
11 |
12 | include::simple/ATS_conformance.adoc[]
13 |
14 | ==== Media type
15 |
16 | include::simple/ATS_media_type.adoc[]
17 |
18 | ==== Response
19 |
20 | include::simple/ATS_response.adoc[]
21 |
22 | ==== Query response
23 |
24 | include::simple/ATS_query_response.adoc[]
25 |
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/requirements_class_autodiscovery.adoc:
--------------------------------------------------------------------------------
1 | [[rc_autodiscovery]]
2 |
3 | //[cols="1,4",width="90%"]
4 | //|===
5 | //2+|*Requirements Class*
6 | //2+|http://www.opengis.net/spec/ogcapi-records-1/1.0/req/autodiscovery
7 | //|Target type |Web API
8 | //|Dependency |<>
9 | //|===
10 |
11 |
12 | [requirements_class]
13 | ====
14 | [%metadata]
15 | identifier:: http://www.opengis.net/spec/ogcapi-records-1/1.0/req/autodiscovery
16 | subject:: Web API
17 | inherit:: <>
18 | requirement:: /req/autodiscovery/links
19 | ====
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/opensearch/REQ_descriptiondoc-response.adoc:
--------------------------------------------------------------------------------
1 | [[req_opensearch_descriptiondoc-response]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/opensearch/descriptiondoc-response*
5 | ^|Condition |The negotiated response representation is `application/opensearchdescription+xml`.
6 | ^|A |A successful execution of the operation SHALL be reported as a response with a HTTP status code 200.
7 | ^|B |The response SHALL contain a valid https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md#opensearch-description-document[OpenSearch description document].
8 | |===
9 |
--------------------------------------------------------------------------------
/extensions/facets/standard/abstract_tests/ATS_class_advanced.adoc:
--------------------------------------------------------------------------------
1 | [[ats_advanced]]
2 | [cols="1,4",width="90%"]
3 | |===
4 | 2+|*Conformance Class*
5 | 2+|http://www.opengis.net/spec/ogcapi-records-2/1.0/conf/advanced
6 | |Target type |Web API
7 | |Requirements class |<>
8 | |===
9 |
10 | ==== Conformance
11 |
12 | include::advanced/ATS_conformance.adoc[]
13 |
14 | ==== Facets query parameter definition
15 |
16 | include::advanced/ATS_query_facets_definition.adoc[]
17 |
18 | ==== Facets query parameter response
19 |
20 | include::advanced/ATS_query_facets_response.adoc[]
21 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-core/PER_common-mark.adoc:
--------------------------------------------------------------------------------
1 | [[per_record-core_common-mark]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Permission {counter:per-id}* |*/per/record-core/common-mark*
6 | //
7 | //For any `description` member in a record, https://spec.commonmark.org/current/[CommonMark] MAY be used for a rich text representation.
8 | //|===
9 |
10 |
11 | [permission]
12 | ====
13 | [%metadata]
14 | identifier:: /per/record-core/common-mark
15 | part:: For any `description` member in a record, https://spec.commonmark.org/current/[CommonMark] MAY be used for a rich text representation.
16 | ====
--------------------------------------------------------------------------------
/extensions/facets/standard/annex_bibliography.adoc:
--------------------------------------------------------------------------------
1 | [appendix]
2 | :appendix-caption: Annex
3 | [[Bibliography]]
4 | == Bibliography
5 |
6 | * [[Elasticsearch]] Elasticsearch aggregations, 30 May 2024, https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html
7 | * [[SOLR]] SOLR aggregations, 30 May 2024, https://solr.apache.org/guide/8_8/json-facet-api.html
8 | * [[PostgreSQL]] PostgreSQL aggregations, 30 May 2024, https://akorotkov.github.io/blog/2016/06/17/faceted-search
9 | * [[Oracle]] Oracle aggreations, 30 May 2024, (https://blogs.oracle.com/apex/apex-192-faceted-search
10 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/clause_8_media_types.adoc:
--------------------------------------------------------------------------------
1 | [[mediatypes]]
2 | == Media Types
3 |
4 | See https://docs.ogc.org/is/20-004r1/20-004r1.html#media-types-section[OGC API - Records - Part 1: Core, Media Types].
5 |
6 | The media types for the CREATE, REPLACE and UPDATE requests as well as for the schema documents depend on the representations of the resources.
7 |
8 | For GeoJSON features,
9 |
10 | - CREATE and REPLACE operations will use `application/geo+json`,
11 | - UPDATE operations will use `application/merge-patch+json`,
12 | - schema documents will use `application/schema+json`.
13 |
--------------------------------------------------------------------------------
/core/openapi/parameters/q.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | name: q
3 | in: query
4 | description: |-
5 | The optional q parameter supports keyword searching. Only records
6 | whose text fields contain one or more of the specified search terms
7 | are selected. The specific set of text keys/fields/properties of a
8 | record to which the q operator is applied is up to the discretion
9 | of the server. Implementations should, however, apply the q
10 | operator to the title, description and keywords keys/fields/properties.
11 | required: false
12 | schema:
13 | type: array
14 | items:
15 | type: string
16 | explode: false
17 | style: form
18 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-core/REC_record-description.adoc:
--------------------------------------------------------------------------------
1 | [[rec_record-core_description]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/record-core/description*
6 | //
7 | //A record SHOULD include the `description` property to provide a free-text description of the resource that the record describes.
8 | //|===
9 |
10 | [recommendation]
11 | ====
12 | [%metadata]
13 | identifier:: /rec/record-core/record-description
14 | part:: A record SHOULD include the `description` property to provide a free-text description of the resource that the record describes.
15 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/record-collection/REQ_mandatory-properties.adoc:
--------------------------------------------------------------------------------
1 | [[req_record-collection_mandatory-properties-collection]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/record-collection/mandatory-properties-collection*
6 | //
7 | //A catalog SHALL include all the mandatory properties listed in <>.
8 | //|===
9 |
10 | [requirement]
11 | ====
12 | [%metadata]
13 | identifier:: /req/record-collection/mandatory-properties-collection
14 | part:: A catalog SHALL include all the mandatory properties listed in <>.
15 | ====
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/opensearch/REQ_descriptiondoc-response-self-link.adoc:
--------------------------------------------------------------------------------
1 | [[req_opensearch_descriptiondoc-response-self-link]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/opensearch/descriptiondoc-response-self-link*
5 | ^|A |The https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md#opensearch-description-document[OpenSearch description document] SHALL include one https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md#the-url-element#[Url element] that points to the canonical representation (relation: `self`) of this OpenSearch description document.
6 | |===
7 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/opensearch/REQ_param-language.adoc:
--------------------------------------------------------------------------------
1 | [[req_opensearch_param-language]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/opensearch/param-language*
5 | ^|Condition |Server implements recommendation <>.
6 | ^|A |The value of the `language` parameter SHALL conform to https://tools.ietf.org/html/rfc5646[RFC 5646, Tags for Identifying Languages].
7 | ^|B |The value of this parameter SHALL override any value specified for the request using the https://tools.ietf.org/html/rfc7231#section-5.3.5[Accept-Language] HTTP header.
8 | |===
9 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/abstract_tests/simpletx/update/put/ATS_content-type.adoc:
--------------------------------------------------------------------------------
1 | [[ats_create-replace-delete_update_put-content-type]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Abstract Test {counter:ats-id}* |*/conf/create-replace-delete/update/put/content-type*
5 | ^|Test Purpose |
6 | ^|Requirement |
7 | ^|Dependencies |
8 | ^|Test Method |
9 | |===
10 |
11 | ((As per <> (https://www.rfc-editor.org/rfc/rfc2616.html#section-14.17) the 'Content-Type' header shall be used to indicate the media type of a request body containing a representation of the replacement resource.))
12 |
--------------------------------------------------------------------------------
/core/README.md:
--------------------------------------------------------------------------------
1 |
2 | # OGC API - Records - Part 1: Core
3 |
4 | This folder contains the content for the OGC API - Records - Part 1: Core standard.
5 |
6 | The repo is organized as follows:
7 |
8 | * standard - the main standard document content
9 | - organized in multiple sections and directories
10 | * openapi - normative OpenAPI components specified by the standard
11 | * examples - JSON and XML examples
12 |
13 | ## Building
14 |
15 | ```
16 | cd core
17 |
18 | docker run -v "$(pwd)":/metanorma -v ${HOME}/.fontist/fonts/:/config/fonts metanorma/metanorma metanorma compile --agree-to-terms -t ogc -x html standard/document.adoc
19 | ```
20 |
--------------------------------------------------------------------------------
/core/standard/abstract_tests/building-blocks/ATS_class_query-param-profile.adoc:
--------------------------------------------------------------------------------
1 | [[ats_query-param-profile]]
2 | [conformance_class]
3 | ====
4 | [%metadata]
5 | identifier:: http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/query-param-profile
6 | target:: http://www.opengis.net/spec/ogcapi-records-1/1.0/req/query-param-profile
7 | classification:: Target Type:Web API
8 | abstract-test:: /conf/query-param-profile/definition
9 | abstract-test:: /conf/query-param-profile/response
10 | ====
11 |
12 | ==== Query Parameter Profile
13 |
14 | include::query-param-profile/ATS_definition.adoc[]
15 |
16 | include::query-param-profile/ATS_response.adoc[]
17 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-core/REC_format.adoc:
--------------------------------------------------------------------------------
1 | [[rec_record-core_format]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/record-core/format*
6 | //
7 | //The value of the `mediaType` property should be taken from the list of https://www.iana.org/assignments/media-types/media-types.xhtml[IANA media types].
8 | //|===
9 |
10 | [recommendation]
11 | ====
12 | [%metadata]
13 | identifier:: /rec/record-core/format
14 | part:: The value of the `mediaType` property should be taken from the list of https://www.iana.org/assignments/media-types/media-types.xhtml[IANA media types].
15 | ====
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/opensearch/REQ_descriptiondoc-response-example-qry.adoc:
--------------------------------------------------------------------------------
1 | [[req_opensearch_descriptiondoc-response-example-qry]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/opensearch/descriptiondoc-response-example-qry*
5 | ^|A |The https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md#opensearch-description-document[OpenSearch description document] SHALL include at least one https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md#the-query-element[Query element] with a `role` set to `example` which, when resolved, executes a sample query on the server.
6 | |===
7 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/abstract_tests/features/crs/ATS_crs84.adoc:
--------------------------------------------------------------------------------
1 | [[ats_create-replace-delete_crs_crs84]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:ats-id}* |*/conf/create-replace-delete/crs/crs84*
5 | ^|A | TBD
6 | |===
7 |
8 | ((If a server implementing this standard does not support the http://fix.me[Coordinate Reference Systems by Reference] extension, then all geometry-valued feature properties presented to the server in a request body shall be expressed using CRS84 as per http://docs.opengeospatial.org/is/17-069r3/17-069r3.html[OGC API - Features - Part 1: Core].))
9 |
10 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-collection/PER_records-array-name.adoc:
--------------------------------------------------------------------------------
1 | [[per_record-collection_records-array-name]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Permission {counter:per-id}* |*/per/record-collection/records-array-name*
6 | //
7 | //The name of the in-line records array property in the catalog (default: `records`) MAY be changed to something else.
8 | //|===
9 |
10 |
11 |
12 | [permission]
13 | ====
14 | [%metadata]
15 | identifier:: /per/record-collection/records-array-name
16 | part:: The name of the in-line records array property in the catalog (default: `records`) MAY be changed to something else.
17 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/record-collection/REQ_license.adoc:
--------------------------------------------------------------------------------
1 | [[req_record-collection_license]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/record-collection/license*
6 | //
7 | //See requirement <>. +
8 | //Replace all instances of the term `resource` with the term `catalog`.
9 | //|===
10 |
11 | [requirement]
12 | ====
13 | [%metadata]
14 | identifier:: /req/record-collection/license
15 | part:: See requirement <>. Replace all instances of the term `resource` with the term `catalog`.
16 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/requirements_class_html.adoc:
--------------------------------------------------------------------------------
1 | [[rc_html]]
2 |
3 | //[cols="1,4",width="90%"]
4 | //|===
5 | //2+|*Requirements Class*
6 | //2+|http://www.opengis.net/spec/ogcapi-records-1/1.0/req/html
7 | //|Target type |Document encoding
8 | //|Dependency |http://www.w3.org/TR/html5/[HTML5]
9 | //|===
10 |
11 | [requirements_class]
12 | ====
13 | [%metadata]
14 | identifier:: http://www.opengis.net/spec/ogcapi-records-1/1.0/req/html
15 | subject:: Document encoding
16 | inherit:: http://www.w3.org/TR/html5/
17 | requirement:: /req/html/conformance
18 | requirement:: /req/html/definition
19 | requirement:: /req/html/content
20 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/crawlable-catalog/REQ_conformance.adoc:
--------------------------------------------------------------------------------
1 | [[req_crawlable-catalog_conformance]]
2 | //[width="90%",cols="2,6a"]
3 | //|===
4 | //^|*Requirement {counter:req-id}* |*/req/crawlable-catalog/conformance*
5 | //
6 | //^|A |The `conformsTo` array found in the catalog SHALL contain the value `http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/crawlable-catalog`.
7 | //|===
8 |
9 |
10 | [requirement]
11 | ====
12 | [%metadata]
13 | identifier:: /req/crawlable-catalog/conformance
14 | part:: The `conformsTo` array found in the catalog SHALL contain the value `http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/crawlable-catalog`.
15 | ====
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-collection/PER_common-mark.adoc:
--------------------------------------------------------------------------------
1 | [[per_record-collection_common-mark]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Permission {counter:per-id}* |*/per/record-collection/common-mark*
6 | //
7 | //For any `description` member in a catalog, https://spec.commonmark.org/current/[CommonMark] MAY be used for a rich text representation.
8 | //|===
9 |
10 |
11 | [permission]
12 | ====
13 | [%metadata]
14 | identifier:: /per/record-collection/common-mark
15 | part:: For any `description` member in a catalog, https://spec.commonmark.org/current/[CommonMark] MAY be used for a rich text representation.
16 | ====
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/sorting/PER_synthetic.adoc:
--------------------------------------------------------------------------------
1 | [[per_sorting_sortables-synthetic]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Permission {counter:per-id}* |*/per/sorting/synthetic*
6 | //
7 | //The response MAY include properties that do not actually exist in the information model of the record but are somehow derived or synthesized by the system.
8 | //|===
9 |
10 |
11 | [permission]
12 | ====
13 | [%metadata]
14 | identifier:: /per/sorting/synthetic
15 | part:: The response MAY include properties that do not actually exist in the information model of the record but are somehow derived or synthesized by the system.
16 | ====
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/opensearch/REQ_param-geo-name-response.adoc:
--------------------------------------------------------------------------------
1 | [[req_opensearch_geo-name-response]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/opensearch/geo-name-response*
5 | ^|Condition |Server implements recommendation <>.
6 | ^|A |If the `geo:name` parameter is provided by the client, only records where the record's geometry and the geometry implied by the specified place name satisfy the specified spatial relationship (see recommendation: <>) SHALL be included in the response.
7 | |===
8 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/opensearch/REQ_param-geometry-response.adoc:
--------------------------------------------------------------------------------
1 | [[req_opensearch_geometry-response]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/opensearch/geometry-response*
5 | ^|Condition |Server implements recommendation <>.
6 | ^|A |If the `geo:geometry` parameter is provided by the client, only records where the record's geometry and the value of the `geo:geometry` parameter satisfy the specified spatial relationship (see recommendation: <>) SHALL be included in the response.
7 | |===
8 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/opensearch/REQ_param-proximity-response.adoc:
--------------------------------------------------------------------------------
1 | [[req_opensearch_proximity-response]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/opensearch/proximity-response*
5 | ^|Condition |Server implements recommendation <>.
6 | ^|A |If the `geo:lat`, `geo:lon` and `geo:radius` parameters are provided by the client, only records where the record's geometry and the specified circle satisfy the specified spatial relationship (see recommendation: <>) SHALL be included in the response.
7 | |===
8 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/examples/json/ex04_delete.adoc:
--------------------------------------------------------------------------------
1 | ....
2 | Client Server
3 | | |
4 | | DELETE /collections/oakland_buildings/items/OB.2 HTTP/1.1 |
5 | |-------------------------------------------------------------------->|
6 | | |
7 | | HTTP/1.1 204 OK |
8 | |<--------------------------------------------------------------------|
9 | ....
10 |
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/json/REQ_catalog-response.adoc:
--------------------------------------------------------------------------------
1 | [[req_json_collection-response]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/json/collection-response*
6 | //^|A |200-responses of the server SHALL support the following media type:
7 | //
8 | //* `application/ogc-catalog+json` for catalog or record collection resources.
9 | //|===
10 |
11 | [requirement]
12 | ====
13 | [%metadata]
14 | identifier:: /req/json/collection-response
15 | part:: 200-responses of the server SHALL support the following media type:
16 | +
17 | * `application/ogc-catalog+json` for catalog or record collection resources.
18 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/oas30/REQ_oas-conformance.adoc:
--------------------------------------------------------------------------------
1 | [[req_oas30_conformance]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/oas30/conformance*
6 | //
7 | //^|A |The `conformsTo` array found in the conformance path (path: `/conformance`) SHALL contain the value `http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/oas30`.
8 | //|===
9 |
10 | [requirement]
11 | ====
12 | [%metadata]
13 | identifier:: /req/oas30/conformance
14 | part:: The `conformsTo` array found in the conformance path (path: `/conformance`) SHALL contain the value `http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/oas30`.
15 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/record-core-query-parameters/REQ_query-param-ids-response.adoc:
--------------------------------------------------------------------------------
1 | [[req_record-core-query-parameters_ids-response]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/record-core-query-parameters/ids-response*
6 | //
7 | //Only records whose identifier match one of the identifiers specified using `ids` parameter SHALL be in the results set.
8 | //|===
9 |
10 |
11 | [requirement]
12 | ====
13 | [%metadata]
14 | identifier:: /req/record-core-query-parameters/ids-response
15 | part:: Only records whose identifier match one of the identifiers specified using `ids` parameter SHALL be in the results set.
16 | ====
--------------------------------------------------------------------------------
/template/standard/clause_4_terms_and_definitions.adoc:
--------------------------------------------------------------------------------
1 | == Terms and Definitions
2 | This document uses the terms defined in Sub-clause 5.3 of [OGC 06-121r9], which is based on the ISO/IEC Directives, Part 2, Rules for the structure and drafting of International Standards. In particular, the word “shall” (not “must”) is the verb form used to indicate a requirement to be strictly followed to conform to this standard.
3 |
4 | For the purposes of this document, the following additional terms and definitions apply in addition to the terms defined
5 | in <>.
6 |
7 | === term 1
8 | definition [source]
9 |
10 | === term 2
11 | definition [source]
12 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-core-query-parameters/REC_param-q.adoc:
--------------------------------------------------------------------------------
1 | [[rec_record-core-query-parameters_param-q]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/record-core-query-parameters/param-q*
6 | //
7 | //The `q` operator SHOULD, at least, be applied to the following core properties:
8 | //
9 | //* title
10 | //* description
11 | //* keywords
12 | //|===
13 |
14 | [recommendation]
15 | ====
16 | [%metadata]
17 | identifier:: /rec/record-core-query-parameters/param-q
18 | part:: The `q` operator SHOULD, at least, be applied to the following core properties:
19 | +
20 | * title
21 | * description
22 | * keywords
23 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/requirements_class_sorting.adoc:
--------------------------------------------------------------------------------
1 | [[rc_sorting]]
2 |
3 | //[cols="1,4",width="90%"]
4 | //|===
5 | //2+|*Requirements Class*
6 | //2+|http://www.opengis.net/spec/ogcapi-records-1/1.0/req/sorting
7 | //|Target type |Web API
8 | //|===
9 |
10 | [requirements_class]
11 | ====
12 | [%metadata]
13 | identifier:: http://www.opengis.net/spec/ogcapi-records-1/1.0/req/sorting
14 | subject:: Document model
15 | requirement:: /req/sorting/sortby-param
16 | requirement:: /req/sorting/sortby-response
17 | requirement:: /req/sorting/get-sortables-op
18 | requirement:: /req/sorting/get-sortables-success
19 | requirement:: /req/sorting/defaultSortOrder-definition
20 | ====
--------------------------------------------------------------------------------
/core/openapi/schemas/scheme.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | type: object
3 | required:
4 | - scheme-id
5 | - namespace
6 | properties:
7 | scheme-id:
8 | type: string
9 | description: |-
10 | An identifier for this namespace. The identifier can be used as a
11 | short-form for the namespace.
12 | namespace:
13 | type: string
14 | description: |-
15 | A declarative region that provides a scope to the identifiers inside it.
16 | It is recommended that the value of namespace be a URI.
17 | resolver:
18 | description: |-
19 | An extensible description of a mechanism that resolves a scheme
20 | identifier (scheme-id) to its namespace.
21 | type: object
22 |
--------------------------------------------------------------------------------
/extensions/facets/standard/clause_1_scope.adoc:
--------------------------------------------------------------------------------
1 | == Scope
2 |
3 | The OGC Records API Standard specifies requirements classes for a set of common components that can be assembled in various ways to deploy a collection of related descriptive information (metadata) about resources called a catalog. The atomic unit of information in a catalog is the record.
4 |
5 | This Standard specifies an extension that allows querying facets (also known as aggregations) as a complement to search results. A server advertises one or more facets tied to various properties of its records. Facets can be used to show term occurrences, distributions of numeric or temporal values and matches for specific queries inside results sets.
6 |
--------------------------------------------------------------------------------
/core/openapi/parameters/sortby.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | name: sortby
3 | in: query
4 | description: |-
5 | Specifies a comma-separated list of property names by which the response shall
6 | be sorted. If the property name is preceded by a plus (+) sign it indicates
7 | an ascending sort for that property. If the property name is preceded by a
8 | minus (-) sign it indicates a descending sort for that property. If the
9 | property is not preceded by a plus or minus, then the default sort order
10 | implied is ascending (+).
11 | required: false
12 | schema:
13 | type: array
14 | minItems: 1
15 | items:
16 | type: string
17 | pattern: '[+|-]?[A-Za-z_].*'
18 | explode: false
19 | style: form
20 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-core-query-parameters/REC_query-param-type-definition.adoc:
--------------------------------------------------------------------------------
1 | [[rec_record-core-query-parameters_param-type-definition]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/record-core-query-parameters/param-type-definition*
6 | //^|A |The definition of the `type` parameter SHOULD be extended to enumerate the list of known record or resource types.
7 | //|===
8 |
9 | [recommendation]
10 | ====
11 | [%metadata]
12 | identifier:: /rec/record-core-query-parameters/param-type-definition
13 | part:: The definition of the `type` parameter SHOULD be extended to enumerate the list of known record or resource types.
14 | ====
--------------------------------------------------------------------------------
/extensions/facets/openapi/schemas/facets-queryables.yaml:
--------------------------------------------------------------------------------
1 | $schema: 'https://json-schema.org/draft/2020-12/schema'
2 | $id: 'https://raw.githubusercontent.com/opengeospatial/ogcapi-records/master/extensions/facets/openapi/schemas/facets-querayables.yaml'
3 | title: 'OGC API - Records - Part 2: Facets queryables extension'
4 | description: 'OGC API - Records - Part 2: Facets queryables extension'
5 |
6 | type: object
7 | properties:
8 | properties:
9 | patternProperties:
10 | "^.*":
11 | type: object
12 | properties:
13 | facet:
14 | type: boolean
15 | default: false
16 | description: Whether facets can be applied to the property.
17 |
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/json/REQ_catalog-content-profile.adoc:
--------------------------------------------------------------------------------
1 | [[req_json_catalog-content-profle]]
2 |
3 | [requirement]
4 | ====
5 | [%metadata]
6 | identifier:: /req/json/catalog-content-profile
7 | condition:: The negotiated profile is `http://www.opengis.net/def/profile/OGC/0/ogc-catalog`.
8 | part:: The schema of all responses with the media type `application/json` SHALL validate against the OpenAPI 3.0 schema document https://schemas.opengis.net/ogcapi/records/part1/1.0/openapi/schemas/catalog.yaml[`catalog.yaml`].
9 | part:: The response SHALL include, in the `links` section, a profile link (href: `http://www.opengis.net/def/profile/OGC/0/ogc-catalog`, relation: `profile`).
10 | ====
11 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-collection/REC_record-langs.adoc:
--------------------------------------------------------------------------------
1 | [[rec_record-collection_record-langs]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/record-collection/record-langs*
6 | //
7 | //The languages in which the records of the catalog can be represented SHOULD be listed using the <> property.
8 | //|===
9 |
10 | [recommendation]
11 | ====
12 | [%metadata]
13 | identifier:: /rec/record-collection/record-langs
14 | part:: The languages in which the records of the catalog can be represented SHOULD be listed using the <> property.
15 | ====
16 |
--------------------------------------------------------------------------------
/core/standard/requirements/searchable-catalog/REQ_mandatory-catalog-properties.adoc:
--------------------------------------------------------------------------------
1 | [[req_searchable-catalog_mandatory-catalog-properties]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/searchable-catalog/mandatory-catalog-properties*
6 | //
7 | //The information model describing a searchable catalog SHALL contain all the mandatory properties listed in <>.
8 | //|===
9 |
10 | [requirement]
11 | ====
12 | [%metadata]
13 | identifier:: /req/searchable-catalog/mandatory-catalog-properties
14 | part:: The information model describing a searchable catalog SHALL contain all the mandatory properties listed in <>.
15 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/searchable-catalog_filtering/REQ_mandatory-queryables.adoc:
--------------------------------------------------------------------------------
1 | [[req_searchable-catalog_mandatory-queryables]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/searchable-catalog/mandatory-queryables*
6 | //2+|The list of queryables SHALL include all the mandatory properties listed in <> and <>.
7 | //|===
8 |
9 |
10 | [requirement]
11 | ====
12 | [%metadata]
13 | identifier:: /req/searchable-catalog/mandatory-queryables
14 | part:: The list of queryables SHALL include all the mandatory properties listed in <> and <>.
15 | ====
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/sorting/REC_sortables-schema.adoc:
--------------------------------------------------------------------------------
1 | [[rec_sorting_sortables-schema]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/sorting/sortables-schema*
6 | //^|A |Each property SHOULD have a human readable title (`title`) and where
7 | //necessary a description (`description`).
8 | //^|B |Each property SHOULD have a single type (`type`).
9 | //|===
10 |
11 | [recommendation]
12 | ====
13 | [%metadata]
14 | identifier:: /rec/sorting/sortables-schema
15 | part:: Each property SHOULD have a human readable title (`title`) and where necessary a description (`description`).
16 | part:: Each property SHOULD have a single type (`type`).
17 | ====
--------------------------------------------------------------------------------
/core/standard/abstract_tests/building-blocks/query-param-profile/ATS_response.adoc:
--------------------------------------------------------------------------------
1 | [[ats_query-param-profile_response]]
2 | [abstract_test]
3 | ====
4 | [%metadata]
5 | identifier:: /conf/query-param-profile/response
6 | target:: /req/query-param-profile/response
7 | test-purpose:: Validate `profile` query parameter.
8 | test-method::
9 | +
10 | --
11 | . Construct a path for a searchable endpoint as per test <>.
12 | . Issue an HTTP GET request on that path.
13 | . Check that the value of the returned HTTP status header is +200+.
14 | . Check that that the content of response adheres to the requirements of the specified profile(s).
15 | --
16 | ====
17 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/atom/REQ_common-content.adoc:
--------------------------------------------------------------------------------
1 | [[req_atom_common-content]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/atom/common-content*
5 | ^|A |<> specifies the XML document root element that the server SHALL return in a `200`-response for each resource defined in https://docs.ogc.org/DRAFTS/19-072.html[OGC API - Common - Part 1: Core] and https://docs.ogc.org/DRAFTS/20-024.html[OGC API - Common - Part 2: Collections].
6 | ^|B |The schema of all responses with a root element in the `core` namespace SHALL validate against the link:https://raw.githubusercontent.com/opengeospatial/ogcapi-records/master/core/xml/core.xsd[OGC API - Records Core XML Schema].
7 | |===
8 |
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/record-collection/REQ_links-catalog-hierarchy.adoc:
--------------------------------------------------------------------------------
1 | [[req_record-collection_links-catalog-hierarchy]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/record-collection/links-catalog-hierarchy*
6 | //
7 | //A catalog referencing sub-ordinate catalogs SHALL include a link (relation: `child`) pointing to each immediate sub-ordinate catalog in the hierarchy.
8 | //|===
9 |
10 |
11 | [requirement]
12 | ====
13 | [%metadata]
14 | identifier:: /req/record-collection/links-catalog-hierarchy
15 | part:: A catalog referencing sub-ordinate catalogs SHALL include a link (relation: `child`) pointing to each immediate sub-ordinate catalog in the hierarchy.
16 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/record-collection/REQ_links-catalog-related.adoc:
--------------------------------------------------------------------------------
1 | [[req_record-collection_links-catalog-related]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/record-collection/links-catalog-related*
6 | //
7 | //A catalog referencing another related catalog in an unorganized set of catalogs SHALL include a link (relation: `related`) pointing to the related catalog.
8 | //|===
9 |
10 | [requirement]
11 | ====
12 | [%metadata]
13 | identifier:: /req/record-collection/links-catalog-related
14 | part:: A catalog referencing another related catalog in an unorganized set of catalogs SHALL include a link (relation: `related`) pointing to the related catalog.
15 | ====
--------------------------------------------------------------------------------
/core/standard/abstract_tests/building-blocks/ATS_class_autodiscovery.adoc:
--------------------------------------------------------------------------------
1 | [[ats_autodiscovery]]
2 |
3 | //[cols="1,4",width="90%"]
4 | //|===
5 | //2+|*Conformance Class*
6 | //2+|http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/autodiscovery
7 | //|Target type |Web API
8 | //|Requirements class |<>
9 | //|===
10 |
11 | [conformance_class]
12 | ====
13 | [%metadata]
14 | identifier:: http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/autodiscovery
15 | target:: http://www.opengis.net/spec/ogcapi-records-1/1.0/req/autodiscovery
16 | classification:: Target Type:Web API
17 | abstract-test:: /conf/autodiscovery/links
18 | ====
19 |
20 | ==== Links
21 |
22 | include::autodiscovery/ATS_links.adoc[]
23 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-core/REC_record-links_type.adoc:
--------------------------------------------------------------------------------
1 | [[rec_record-core_links-type]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/record-core/links-type*
6 | //
7 | //If there is a canonical URI for the value of the `type` property of a record, a link (relation: `type`) to that canonical URI SHOULD be included in the `links` section of the record.
8 | //|===
9 |
10 | [recommendation]
11 | ====
12 | [%metadata]
13 | identifier:: /rec/record-core/links-type
14 | part:: If there is a canonical URI for the value of the `type` property of a record, a link (relation: `type`) to that canonical URI SHOULD be included in the `links` section of the record.
15 | ====
16 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-core/REC_record-title.adoc:
--------------------------------------------------------------------------------
1 | [[rec_record-core_title]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/record-core/title*
6 | //
7 | //A record SHOULD include the `title` property to provide a human-readable name for the resource that the record describes and also to provide a target of possible text searches of the catalog.
8 | //|===
9 |
10 | [recommendation]
11 | ====
12 | [%metadata]
13 | identifier:: /rec/record-core/record-title
14 | part:: A record SHOULD include the `title` property to provide a human-readable name for the resource that the record describes and also to provide a target of possible text searches of the catalog.
15 | ====
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/records-api/REC_html.adoc:
--------------------------------------------------------------------------------
1 | [[rec_records-api_html]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/records-api/html*
6 | //
7 | //To support browsing the catalog and its records with a web browser and to enable search engines to crawl and index the catalog, implementations SHOULD consider supporting a <>.
8 | //|===
9 |
10 | [recommendation]
11 | ====
12 | [%metadata]
13 | identifier:: /rec/records-api/html
14 | part:: To support browsing the catalog and its records with a web browser and to enable search engines to crawl and index the catalog, implementations SHOULD consider supporting a <>.
15 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/record-collection/REQ_links-catalog-series.adoc:
--------------------------------------------------------------------------------
1 | [[req_record-collection_links-catalog-series]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/record-collection/links-catalog-series*
6 | //
7 | //A catalog referencing another catalog in a series of related catalogs SHALL include a link (relation: `next`) pointing to the next related catalog in the series.
8 | //|===
9 |
10 | [requirement]
11 | ====
12 | [%metadata]
13 | identifier:: /req/record-collection/links-catalog-series
14 | part:: A catalog referencing another catalog in a series of related catalogs SHALL include a link (relation: `next`) pointing to the next related catalog in the series.
15 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/record-core/REQ_mandatory-properties-record.adoc:
--------------------------------------------------------------------------------
1 | [[req_record-core_mandatory-properties-record]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/record-core/mandatory-properties-record*
6 | //
7 | //Each record in a response SHALL contain all the mandatory properties listed in <>.
8 | //|===
9 |
10 |
11 | [requirement]
12 | ====
13 | [%metadata]
14 | identifier:: /req/record-core/mandatory-properties-record
15 | part:: Each record in a response SHALL contain all the mandatory properties listed in <>.
16 | part:: The identifier of a record (`id`) cannot be NULL or the empty string.
17 | ====
18 |
--------------------------------------------------------------------------------
/core/standard/requirements/local-resources-catalog/REQ_mandatory-catalog-properties.adoc:
--------------------------------------------------------------------------------
1 | [[req_local-resources-catalog_mandatory-catalog-properties]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/local-resources-catalog/mandatory-catalog-properties*
6 | //
7 | //The information model of the local resources catalog SHALL contain all the mandatory properties listed in <>.
8 | //|===
9 |
10 |
11 | [requirement]
12 | ====
13 | [%metadata]
14 | identifier:: /req/local-resources-catalog/mandatory-catalog-properties
15 | part:: The information model of the local resources catalog SHALL contain all the mandatory properties listed in <>.
16 | ====
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/examples/json/ex06a_options.adoc:
--------------------------------------------------------------------------------
1 | ....
2 | Client Server
3 | | |
4 | | OPTIONS /collections/oakland_buildings/items HTTP/1.1 |
5 | |------------------------------------------------------------------>|
6 | | |
7 | | HTTP/1.1 200 OK |
8 | | Allow: GET, HEAD, POST |
9 | |<------------------------------------------------------------------|
10 | ....
11 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/examples/json/ex06b_options.adoc:
--------------------------------------------------------------------------------
1 | ....
2 | Client Server
3 | | |
4 | | OPTIONS /collections/oakland_buildings/items/B1013 HTTP/1.1 |
5 | |------------------------------------------------------------------>|
6 | | |
7 | | HTTP/1.1 200 OK |
8 | | Allow: GET, HEAD, PUT, PATCH, DELETE |
9 | |<------------------------------------------------------------------|
10 | ....
11 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/requirements/records/REQ_resources-endpoint.adoc:
--------------------------------------------------------------------------------
1 | [[req_resources-endpoint]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/records/resources-endpoint*
5 | ^|A |For records, the resources endpoints SHALL be URIs specified by the URI template `{landingPageUri}/collections/{catalogId}/items`.
6 | ^|B |The parameter `landingPageUri` SHALL be the URI of the Landing Page resource.
7 | ^|C |The parameter `catalogId` SHALL be each `id` property in the `collections` array of the Collections resource (i.e., the response to a GET request to `{landingPageUri}/collections`) where the collection has an `itemType` with no value or a value `record`.
8 | |===
9 |
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/record-collection/REQ_links-record.adoc:
--------------------------------------------------------------------------------
1 | [[req_record-collection_links-record]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/record-collection/links-record*
6 | //
7 | //A link (relation: `item`) SHALL be included in the <> of the catalog for each individually referenced record that is a member of this catalog.
8 | //|===
9 |
10 | [requirement]
11 | ====
12 | [%metadata]
13 | identifier:: /req/record-collection/links-record
14 | part:: A link (relation: `item`) SHALL be included in the <> of the catalog for each individually referenced record that is a member of this catalog.
15 | ====
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-collection/PER_links.adoc:
--------------------------------------------------------------------------------
1 | [[per_record-collection_links]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Permission {counter:per-id}* |*/per/record-collection/links*
6 | //
7 | //The links in the `links` section of a catalog may be typed (i.e., include the `type` member) to allow for the possibility of alternate representations for each record and/or subordinate catalog.
8 | //|===
9 |
10 | [permission]
11 | ====
12 | [%metadata]
13 | identifier:: /per/record-collection/links
14 | part:: The links in the `links` section of a catalog may be typed (i.e., include the `type` member) to allow for the possibility of alternate representations for each record and/or subordinate catalog.
15 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/record-collection/REQ_links.adoc:
--------------------------------------------------------------------------------
1 | [[req_record-collection_links]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/record-collection/links*
6 | //
7 | //^|A |The catalog SHALL include a link (relation: `self`) that points to itself.
8 | //^|B |The catalog SHALL include one link (relation: `alternate`) for each alternative representation of itself.
9 | //|===
10 |
11 | [requirement]
12 | ====
13 | [%metadata]
14 | identifier:: /req/record-collection/links
15 | part:: The catalog SHALL include a link (relation: `self`) that points to itself.
16 | part:: The catalog SHALL include one link (relation: `alternate`) for each alternative representation of itself.
17 | ====
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/opensearch/REQ_descriptiondoc-response-inputenc.adoc:
--------------------------------------------------------------------------------
1 | [[req_opensearch_descriptiondoc-response-inputenc]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/opensearch/descriptiondoc-response-inputenc*
5 | ^|Condition |The server implements recommendation <>
6 | ^|A |The https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md#opensearch-description-document[OpenSearch description document] SHALL include one https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md#the-inputencoding-element[InputEncoding element] for each input encoding supported by the server for search requests.
7 | |===
8 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/requirements/records/crs/REQ_gml-srsname.adoc:
--------------------------------------------------------------------------------
1 | [[req_records_gml-srsname]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/records/gml-srsname*
5 | ^|Condition |Server implements <>
6 | ^|Condition |A CREATE, REPLACE and UPDATE request has been submitted with a `Content-Type` HTTP header with a GML media type (`application/gml+xml`).
7 | ^|A |The server SHALL inspect the `srsName` XML attribute of the element that represents the value of each geometry-valued record property.
8 | ^|B |A `srsName` XML attribute SHALL override the `Content-Type` HTTP header.
9 | |===
10 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/opensearch/REQ_descriptiondoc-response-outputenc.adoc:
--------------------------------------------------------------------------------
1 | [[req_opensearch_descriptiondoc-response-outputenc]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/opensearch/descriptiondoc-response-outputenc*
5 | ^|Condition |The server implements recommendation <>.
6 | ^|A |The https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md#opensearch-description-document[OpenSearch description document] SHALL include one https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md#the-outputencoding-element[OutputEncoding element] for each output encoding the server supports for search results.
7 | |===
8 |
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/record-collection/REQ_links-records.adoc:
--------------------------------------------------------------------------------
1 | [[req_record-collection_links-records]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/record-collection/links-records*
6 | //
7 | //A link (relation: `items`) SHALL be included in the <> of the catalog pointing to an endpoint for accessing the records of this catalog via an API.
8 | //|===
9 |
10 | [requirement]
11 | ====
12 | [%metadata]
13 | identifier:: /req/record-collection/links-records
14 | part:: A link (relation: `items`) SHALL be included in the <> of the catalog pointing to an endpoint for accessing the records of this catalog via an API.
15 | ====
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-filter/REC_json-encoding.adoc:
--------------------------------------------------------------------------------
1 | [[rec_record-filtering_cql2-JSON-encoding]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/record-filtering/cql2-JSON-encoding*
6 | //^|A |If a filter expression can be represented for its intended use as JSON, servers SHOULD consider supporting the https://docs.ogc.org/DRAFTS/21-065.html#cql2-json[CQL JSON] encoding.
7 | //|===
8 |
9 | [recommendation]
10 | ====
11 | [%metadata]
12 | identifier:: /rec/record-filtering/cql2-JSON-encoding
13 | part:: If a filter expression can be represented for its intended use as JSON, servers SHOULD consider supporting the https://docs.ogc.org/DRAFTS/21-065.html#cql2-json[CQL JSON] encoding.
14 | ====
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-filter/REC_text-encoding.adoc:
--------------------------------------------------------------------------------
1 | [[rec_record-filtering_cql2-text-encoding]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/record-filtering/cql2-text-encoding*
6 | //^|A |If a filter expression can be represented for its intended use as text, servers SHOULD consider supporting the https://docs.ogc.org/DRAFTS/21-065.html#cql2-text[CQL text] encoding.
7 | //|===
8 |
9 | [recommendation]
10 | ====
11 | [%metadata]
12 | identifier:: /rec/record-filtering/cql2-text-encoding
13 | part:: If a filter expression can be represented for its intended use as text, servers SHOULD consider supporting the https://docs.ogc.org/DRAFTS/21-065.html#cql2-text[CQL text] encoding.
14 | ====
--------------------------------------------------------------------------------
/extensions/facets/standard/abstract_tests/advanced/ATS_query_facets_response.adoc:
--------------------------------------------------------------------------------
1 | [[ats_advanced_query_facets_response]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Abstract Test {counter:ats-id}* |*/conf/advanced/query_facets_response*
5 | ^|Test Purpose |Validate `facets` query parameter handling.
6 | ^|Requirement |<>
7 | ^|Test Method |. Construct a path as per <>
8 | . Issue an HTTP GET request on that path.
9 | . Check that the value of the returned HTTP status header is 200.
10 | . Check that only facets whose property match one of the properties specified using `facets` query parameter are in the `facets` object of the results set.
11 | |===
12 |
13 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-core/PER_record-type.adoc:
--------------------------------------------------------------------------------
1 | [[per_record-core_type]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Permission {counter:per-id}* |*/per/record-core/type*
6 | //
7 | //The list of codes that can occur in records of a catalog for the property `type` MAY use vocabularies found in the OGC Definitions server. A subset of common examples can be found in <>.
8 | //|===
9 |
10 |
11 | [permission]
12 | ====
13 | [%metadata]
14 | identifier:: /per/record-core/type
15 | part:: The list of codes that can occur in records of a catalog for the property `type` MAY use vocabularies found in the OGC Definitions server. A subset of common examples can be found in <>.
16 | ====
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-core/PER_temporal_comparison.adoc:
--------------------------------------------------------------------------------
1 | [[per_record-core_temporal-comparison]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Permission {counter:per-id}* |*/per/record-core/temporal-comparison*
6 | //
7 | //`date` and `timestamp` are different datatypes and when attempting to compare them, a server MAY either return an error or it MAY cast the value(s) to compatible data types for comparison.
8 | //|===
9 |
10 |
11 | [permission]
12 | ====
13 | [%metadata]
14 | identifier:: /per/record-core/temporal-comparison
15 | part:: `date` and `timestamp` are different datatypes and when attempting to compare them, a server MAY either return an error or it MAY cast the value(s) to compatible data types for comparison.
16 | ====
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/abstract_tests/features/ATS_resource-end-point.adoc:
--------------------------------------------------------------------------------
1 | [[ats_feature_end-point]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:ats-id}* |*/conf/features/feature-end-point*
5 | ^|A |TBD
6 | ^|B |TBD
7 | ^|C |TBD
8 | |===
9 |
10 | ((For features, the resource end point shall be the path '/collections/{collectionsId}/items/{featureId}'.))
11 |
12 | ((The parameter 'collectionId' is each 'id' property in the feature collection response (JSONPath: '$.collections[*].id').))
13 |
14 | ((The parameter 'featureId' is the 'id' property of a target feature (JSONPath: '$.features[*].id') obtained by previously having queried the collection (path '/collections/{collectionId}/items').))
15 |
16 |
17 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-core/REC_record-associations_templated.adoc:
--------------------------------------------------------------------------------
1 | [[rec_record-core_associations-templated]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/record-core/associations-templated*
6 | //
7 | //If access to the resource(s) requires or would be facilitated by additional context (e.g., a bounding box) then <> SHOULD be used.
8 | //|===
9 |
10 | [recommendation]
11 | ====
12 | [%metadata]
13 | identifier:: /rec/record-core/associations-templated
14 | part:: If access to the resource(s) requires or would be facilitated by additional context (e.g., a bounding box) then <> SHOULD be used.
15 | ====
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-core/REC_record-links_iana.adoc:
--------------------------------------------------------------------------------
1 | [[rec_record-core_links_iana]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/record-core/links_iana*
6 | //
7 | //Links relations for links in the `links` or `linkTermplates` sections SHOULD be taked from the official https://www.iana.org/assignments/link-relations/link-relations.xhtml[IANA Link Relation Types] registry.
8 | //|===
9 |
10 | [recommendation]
11 | ====
12 | [%metadata]
13 | identifier:: /rec/record-core/links_iana
14 | part:: Links relations for links in the `links` or `linkTermplates` sections SHOULD be taked from the official https://www.iana.org/assignments/link-relations/link-relations.xhtml[IANA Link Relation Types] registry.
15 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/searchable-catalog/REQ_mandatory-record-properties.adoc:
--------------------------------------------------------------------------------
1 | [[req_searchable-catalog_mandatory-record-properties]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/searchable-catalog/mandatory-record-properties*
6 | //
7 | //Each record accessibles via a searchable catalog SHALL include all the mandatory properties listed in <> and <>.
8 | //|===
9 |
10 | [requirement]
11 | ====
12 | [%metadata]
13 | identifier:: /req/searchable-catalog/mandatory-record-properties
14 | part:: Each record accessibles via a searchable catalog SHALL include all the mandatory properties listed in <> and <>.
15 | ====
--------------------------------------------------------------------------------
/core/openapi/schemas/time.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | nullable: true
3 | type: object
4 | properties:
5 | date:
6 | type: string
7 | pattern: "^\\d{4}-\\d{2}-\\d{2}$"
8 | timestamp:
9 | type: string
10 | pattern: "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"
11 | interval:
12 | type: array
13 | minItems: 2
14 | maxItems: 2
15 | items:
16 | oneOf:
17 | - type: string
18 | pattern: "^\\d{4}-\\d{2}-\\d{2}$"
19 | - type: string
20 | pattern: "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$"
21 | - type: string
22 | enum:
23 | - ".."
24 | resolution:
25 | type: string
26 | description: |-
27 | Minimum time period resolvable in the dataset, as an ISO 8601 duration
28 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-core/REC_record-associations_relate.adoc:
--------------------------------------------------------------------------------
1 | [[rec_record-core_associations_relate]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/record-core/associations_relate*
6 | //
7 | //Implementations SHOULD use links in the `links` sections to represent associations to other internal or external resources related to the current record or the resource the record is describing.
8 | //|===
9 |
10 | [recommendation]
11 | ====
12 | [%metadata]
13 | identifier:: /rec/record-core/associations_relate
14 | part:: Implementations SHOULD use links in the `links` sections to represent associations to other internal or external resources related to the current record or the resource the record is describing.
15 | ====
--------------------------------------------------------------------------------
/extensions/facets/standard/abstract_tests/simple/ATS_response.adoc:
--------------------------------------------------------------------------------
1 | [[ats_simple_response]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Abstract Test {counter:ats-id}* |*/conf/simple/response*
5 | ^|Test Purpose |Validate facets endpoint response.
6 | ^|Requirement |<>
7 | ^|Test Method |. Construct a path for a facets page
8 | . Issue an HTTP GET request on the path
9 | . Check that the response HTTP status code is `200`.
10 | . Check that the response HTTP `Content-Type` header is `application/facets+json`.
11 | . Check that the response contains a `facets` object with at least one property.
12 | . For each facet property, check that a `type` property exists, Check that the response contains a `facets` object with at least one property.
13 | |===
14 |
15 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/abstract_tests/features/crs/ATS_geojson.adoc:
--------------------------------------------------------------------------------
1 | [[ats_create-replace-delete_crs_geojson]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:ats-id}* |*/conf/create-replace-delete/crs/geojson*
5 | ^|A | TBD
6 | ^|B | TBD
7 | |===
8 |
9 | ((If a server implements this standard and also implements the http://fix.me[Coordinate Reference Systems by Reference] extension and the request body contains a feature encoded using GeoJSON then the prior arrangements provision of the GeoJSON standard (see https://www.rfc-editor.org/rfc/rfc7946.html#page-12) shall apply between the server and the client.))
10 | ((The feature in the request body shall thus be subject to requirement <>.))
11 |
--------------------------------------------------------------------------------
/core/standard/requirements/requirements_class_searchable-catalog.adoc:
--------------------------------------------------------------------------------
1 | [[rc_searchable-catalog]]
2 |
3 | //[cols="1,4",width="90%"]
4 | //|===
5 | //2+|*Requirements Class*
6 | //2+|http://www.opengis.net/spec/ogcapi-records-1/1.0/req/searchable-catalog
7 | //|Target type |Web API
8 | //|Dependency |<>
9 | //|===
10 |
11 | [requirements_class]
12 | ====
13 | [%metadata]
14 | identifier:: http://www.opengis.net/spec/ogcapi-records-1/1.0/req/searchable-catalog
15 | subject:: Web API
16 | inherit:: <>
17 | requirement:: /req/searchable-catalog/common
18 | requirement:: /req/searchable-catalog/conformance
19 | requirement:: /req/searchable-catalog/mandatory-catalog-properties
20 | requirement:: /req/searchable-catalog/mandatory-record-properties
21 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/json/REQ_catalog-content.adoc:
--------------------------------------------------------------------------------
1 | [[req_json_catalog-content]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/json/catalog-content*
6 | //
7 | //The schema of all responses with the media type `application/ogc-catalog+json` SHALL validate against the OpenAPI 3.0 schema document https://schemas.opengis.net/ogcapi/records/part1/1.0/openapi/schemas/catalog.yaml[`catalog.yaml`].
8 | //|===
9 |
10 | [requirement]
11 | ====
12 | [%metadata]
13 | identifier:: /req/json/catalog-content
14 | part:: The schema of all responses with the media type `application/ogc-catalog+json` SHALL validate against the OpenAPI 3.0 schema document https://schemas.opengis.net/ogcapi/records/part1/1.0/openapi/schemas/catalog.yaml[`catalog.yaml`].
15 | ====
--------------------------------------------------------------------------------
/core/examples/json/catalog.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "tepcat",
3 | "itemType": "record",
4 | "type": "Collection",
5 | "title": "Satellite Imagery Catalog",
6 | "description": "A catalog of satellite imagery products.",
7 | "keywords": [
8 | "satellite",
9 | "imagery",
10 | "sentinel",
11 | "radarsat",
12 | "rcm"
13 | ],
14 | "defaultSortOrder": [
15 | {
16 | "field": "updated",
17 | "direction": "desc"
18 | },
19 | {
20 | "field": "area",
21 | "direction": "desc"
22 | }
23 | ],
24 | "language": "en-CA",
25 | "links": [
26 | {
27 | "href": "https://www.someserver.com/ogcapi/collections/tepcat/items",
28 | "rel": "items",
29 | "title": "Catalog records describing satellite imagery products."
30 | }
31 | ]
32 | }
33 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-core/REC_resource-langs.adoc:
--------------------------------------------------------------------------------
1 | [[rec_record-core_resource-langs]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/record-core/resource-langs*
6 | //
7 | //If there are one or more languages associated with the resource that a catalog record describes, those languages SHOULD be listed in the record using the <> property.
8 | //|===
9 |
10 | [recommendation]
11 | ====
12 | [%metadata]
13 | identifier:: /rec/record-core/resource-langs
14 | part:: If there are one or more languages associated with the resource that a catalog record describes, those languages SHOULD be listed in the record using the <> property.
15 | ====
--------------------------------------------------------------------------------
/core/standard/recommendations/local-resources-catalog_filtering/REC_text-encoding.adoc:
--------------------------------------------------------------------------------
1 | [[rec_local-resource-catalog_filtering_cql2-text-encoding]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/local-resources-catalog/filter/cql2-text-encoding*
6 | //
7 | //If a filter expression can be represented for its intended use as text, servers SHOULD consider supporting the https://docs.ogc.org/DRAFTS/21-065.html#cql2-text[CQL text] encoding.
8 | //|===
9 |
10 | [recommendation]
11 | ====
12 | [%metadata]
13 | identifier:: /rec/local-resources-catalog/filter/cql2-text-encoding
14 | part:: If a filter expression can be represented for its intended use as text, servers SHOULD consider supporting the https://docs.ogc.org/DRAFTS/21-065.html#cql2-text[CQL text] encoding.
15 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/record-core-query-parameters/REQ_query-param-type-response.adoc:
--------------------------------------------------------------------------------
1 | [[req_record-core-query-parameters_type-response]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/record-core-query-parameters/type-response*
6 | //
7 | //Only records whose type, as indicated by the value of the `type` core queryable, is equal to one of the listed values specified using the `type` parameter SHALL be in the result set.
8 | //|===
9 |
10 |
11 | [requirement]
12 | ====
13 | [%metadata]
14 | identifier:: /req/record-core-query-parameters/type-response
15 | part:: Only records whose type, as indicated by the value of the `type` core queryable, is equal to one of the listed values specified using the `type` parameter SHALL be in the result set.
16 | ====
--------------------------------------------------------------------------------
/core/standard/recommendations/local-resources-catalog_filtering/REC_json-encoding.adoc:
--------------------------------------------------------------------------------
1 | [[rec_local-resource-catalog_filtering_cql2-JSON-encoding]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/local-resources-catalog/filtering/cql2-JSON-encoding*
6 | //
7 | //If a filter expression can be represented for its intended use as JSON, servers SHOULD consider supporting the https://docs.ogc.org/DRAFTS/21-065.html#cql2-json[CQL JSON] encoding.
8 | //|===
9 |
10 | [recommendation]
11 | ====
12 | [%metadata]
13 | identifier:: /rec/local-resources-catalog/filtering/cql2-JSON-encoding
14 | part:: If a filter expression can be represented for its intended use as JSON, servers SHOULD consider supporting the https://docs.ogc.org/DRAFTS/21-065.html#cql2-json[CQL JSON] encoding.
15 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/local-resources-catalog/REQ_mandatory-record-properties.adoc:
--------------------------------------------------------------------------------
1 | [[req_local-resources-catalog_mandatory-record-properties]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/local-resources-catalog/mandatory-record-properties*
6 | //
7 | //Each record accessible via the local resource catalog SHALL contain all the mandatory properties listed in <> and <>.
8 | //|===
9 |
10 |
11 | [requirement]
12 | ====
13 | [%metadata]
14 | identifier:: /req/local-resources-catalog/mandatory-record-properties
15 | part:: Each record accessible via the local resource catalog SHALL contain all the mandatory properties listed in <> and <>.
16 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/requirements_class_searchable-catalog_sorting.adoc:
--------------------------------------------------------------------------------
1 | [[rc_searchable-catalog_sorting]]
2 |
3 | //[cols="1,4",width="90%"]
4 | //|===
5 | //2+|*Requirements Class*
6 | //2+|http://www.opengis.net/spec/ogcapi-records-1/1.0/req/searchable-catalog/sorting
7 | //|Target type |Web API
8 | //|Dependency |<>
9 | //|Dependency |<>
10 | //|===
11 |
12 |
13 | [requirements_class]
14 | ====
15 | [%metadata]
16 | identifier:: http://www.opengis.net/spec/ogcapi-records-1/1.0/req/searchable-catalog/sorting
17 | subject:: Web API
18 | inherit:: <>
19 | inherit:: <>
20 | requirement:: /req/searchable-catalog/sorting
21 | requirement:: /req/searchable-catalog/sorting-conformance
22 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/record-core/REQ_templated-link-header.adoc:
--------------------------------------------------------------------------------
1 | [[req_record-core_templated-link-header]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/record-core/templated-link-header*
6 | //
7 | //A templated link that appears in a HTTP header SHALL be encoded according to https://ietf-wg-httpapi.github.io/link-template/draft-ietf-httpapi-link-template.html[The Link-Template HTTP Header Field] specification.
8 | //|===
9 |
10 | [requirement]
11 | ====
12 | [%metadata]
13 | identifier:: /req/record-core/templated-link-header
14 | part:: A templated link that appears in a HTTP header SHALL be encoded according to https://ietf-wg-httpapi.github.io/link-template/draft-ietf-httpapi-link-template.html[The Link-Template HTTP Header Field] specification.
15 | ====
--------------------------------------------------------------------------------
/extensions/OpenSearch/annex_bibliography.adoc:
--------------------------------------------------------------------------------
1 | [appendix]
2 | :appendix-caption: Annex
3 | [[Bibliography]]
4 | = Bibliography
5 |
6 | * [[SDWBP]] W3C/OGC: Spatial Data on the Web Best Practices, W3C Working Group Note 28 September 2017, https://www.w3.org/TR/sdw-bp/
7 | * [[DWBP]] W3C: Data on the Web Best Practices, W3C Recommendation 31 January 2017, https://www.w3.org/TR/dwbp/
8 | * [[DCAT]] W3C: Data Catalog Vocabulary, W3C Recommendation 16 January 2014, https://www.w3.org/TR/vocab-dcat/
9 | * [[link-relations]] IANA: Link Relation Types, https://www.iana.org/assignments/link-relations/link-relations.xml
10 | * [[SPDX]] Linux Foundation: SPDX License List, https://spdx.org/licenses/
11 | * https://www.rssboard.org/rss-autodiscovery
12 | * https://datatracker.ietf.org/doc/html/draft-ietf-atompub-autodiscovery
13 |
14 |
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/opensearch/REQ_descriptiondoc-response-collection-links.adoc:
--------------------------------------------------------------------------------
1 | [[req_opensearch_descriptiondoc-response-collection-links]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/opensearch/descriptiondoc-collection-links*
5 | ^|A |The https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md#opensearch-description-document[OpenSearch description document] SHALL include one https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md#the-url-element[Url element] for each record collection (path: `/collections/{collectionId}`, `itemType=record`).
6 | ^|B |The value of the `rel` attribute SHALL be `collection`.
7 | ^|C |The value of the `template` attribute SHALL be the URL to the record collection (path: `/collections/{collectionId}`).
8 | |===
9 |
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/records-api/REQ_features-api.adoc:
--------------------------------------------------------------------------------
1 | [[req_records-api_features-api]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/records-api/features-api*
6 | //
7 | //Implementations of this requirements class SHALL implement the http://www.opengis.net/spec/ogcapi-features-1/1.0/req/core[Core] requirements class of https://docs.ogc.org/is/17-069r4/17-069r4.html[OGC API - Features - Part 1: Core].
8 | //|===
9 |
10 |
11 | [requirement]
12 | ====
13 | [%metadata]
14 | identifier:: /req/records-api/features-api
15 | part:: Implementations of this requirements class SHALL implement the http://www.opengis.net/spec/ogcapi-features-1/1.0/req/core[Core] requirements class of https://docs.ogc.org/is/17-069r4/17-069r4.html[OGC API - Features - Part 1: Core].
16 | ====
--------------------------------------------------------------------------------
/core/standard/abstract_tests/building-blocks/ATS_class_oas30.adoc:
--------------------------------------------------------------------------------
1 | [[ats_oas30]]
2 |
3 | //[cols="1,4",width="90%"]
4 | //|===
5 | //2+|*Conformance Class*
6 | //2+|http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/oas30
7 | //|Target type |Web API
8 | //|Requirements class |<>
9 | //|===
10 |
11 | [conformance_class]
12 | ====
13 | [%metadata]
14 | identifier:: http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/oas30
15 | target:: http://www.opengis.net/spec/ogcapi-records-1/1.0/req/oas30
16 | classification:: Target Type:Web API
17 | abstract-test:: /conf/oas30/conformance
18 | abstract-test:: /conf/oas30/oas-common
19 | ====
20 |
21 | ==== Conformance
22 |
23 | include::oas30/ATS_conformance.adoc[]
24 |
25 | ==== API description document
26 |
27 | include::oas30/ATS_oas30.adoc[]
28 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/requirements/records/REQ_schema.adoc:
--------------------------------------------------------------------------------
1 | [[req_records_schema]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/records/schema*
5 | ^|Condition |Server implements <>
6 | ^|A |The response content of a GET request to `{landingPageUri}/collections/{collectionId}/schema` SHALL be a JSON Schema.
7 | ^|B |The server SHALL accept mutation requests where each record property in the request meets the schema constraints of the corresponding, receivable property in the JSON Schema.
8 | ^|C |Unless the JSON Schema includes a statement `"additionalProperties": false`, the server SHALL NOT reject properties that are not specified in the JSON Schema.
9 | |===
10 |
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/oas30/REQ_oas30.adoc:
--------------------------------------------------------------------------------
1 | [[req_oas30]]
2 |
3 | //[width="90%",cols="2,6"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/oas30/oas-common*
6 | //^|A |The API implementation SHALL demonstrate conformance to the https://docs.ogc.org/is/17-069r4/17-069r4.html#_requirements_class_openapi_3_0[OpenAPI 3.0] requirements class of the https://docs.ogc.org/is/17-069r4/17-069r4.html[OGC API - Feature - Part 1: Core] Standard.
7 | //|===
8 |
9 |
10 | [requirement]
11 | ====
12 | [%metadata]
13 | identifier:: /req/oas30/oas-common
14 | part:: The API implementation SHALL demonstrate conformance to the https://docs.ogc.org/is/17-069r4/17-069r4.html#_requirements_class_openapi_3_0[OpenAPI 3.0] requirements class of the https://docs.ogc.org/is/17-069r4/17-069r4.html[OGC API - Feature - Part 1: Core] Standard.
15 | ====
--------------------------------------------------------------------------------
/extensions/OpenSearch/requirements/atom/REQ_content.adoc:
--------------------------------------------------------------------------------
1 | [[req_atom_content]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/atom/content*
5 | ^|A |<> specifies the XML document root element that the server SHALL return in a `200`-response for each record resource.
6 | ^|B |Every representation of a collection or records SHALL conform to the <> and be encoded as an `atom:feed` element.
7 | ^|C |Every representation of a record SHALL conform to the <> and be encoded as an `atom:entry` element.
8 | ^|D |<> SHALL be mapped to https://datatracker.ietf.org/doc/html/rfc4287#section-4.1.2[ATOM entry elements] as defined in the section <>.
9 | |===
10 |
11 |
--------------------------------------------------------------------------------
/core/standard/requirements/requirements_class_local-resources-catalog_sorting.adoc:
--------------------------------------------------------------------------------
1 | [[rc_local-resources-catalog_sorting]]
2 |
3 | //[cols="1,4",width="90%"]
4 | //|===
5 | //2+|*Requirements Class*
6 | //2+|http://www.opengis.net/spec/ogcapi-records-1/1.0/req/local-resources-catalog/sorting
7 | //|Target type |Web API
8 | //|Dependency |<>
9 | //|Dependency |<>
10 | //|===
11 |
12 | [requirements_class]
13 | ====
14 | [%metadata]
15 | identifier:: http://www.opengis.net/spec/ogcapi-records-1/1.0/req/local-resources-catalog/sorting
16 | subject:: Web API
17 | inherit:: <>
18 | inherit:: <>
19 | requirement:: /req/local-resources-catalog/sorting-conformance
20 | requirement:: /req/local-resources-catalog/sorting
21 | ====
--------------------------------------------------------------------------------
/core/standard/recommendations/local-resources-catalog/PER_additional-record-properties.adoc:
--------------------------------------------------------------------------------
1 | [[per_local-resources-catalog_additional-record-properties]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Permission {counter:per-id}* |*/per/local-resources-catalog/additional-record-properties*
6 | //
7 | //<> table contains a list of recommended additional properties that MAY be added to the information model of a local resources i.e., to enhance its searchability.
8 | //|===
9 |
10 | [permission]
11 | ====
12 | [%metadata]
13 | identifier:: /per/local-resources-catalog/additional-record-properties
14 | part:: See <> table contains a list of recommended additional properties that MAY be added to the information model of a local resources i.e., to enhance its searchability.
15 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/local-resources-catalog/REQ_discovery.adoc:
--------------------------------------------------------------------------------
1 | [[req_local-resources-catalog_discovery]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/local-resources-catalog/discovery*
6 | //
7 | //The 'links` section of a server's landing page SHALL include one link (relation: `http://www.opengis.net/def/rel/ogc/1.0/ogc-catalog`) for each API endpoint (e.g., `/collections`) that has been instrumented to be a local resources catalog.
8 | //|===
9 |
10 |
11 | [requirement]
12 | ====
13 | [%metadata]
14 | identifier:: /req/local-resources-catalog/discovery
15 | part:: The `links` section of a server's landing page SHALL include one link (relation: `http://www.opengis.net/def/rel/ogc/1.0/ogc-catalog`) for each API endpoint (e.g., `/collections`) that has been instrumented to be a local resources catalog.
16 | ====
--------------------------------------------------------------------------------
/extensions/facets/standard/abstract_tests/simple/ATS_query_response.adoc:
--------------------------------------------------------------------------------
1 | [[ats_simple_query_response]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Abstract Test {counter:ats-id}* |*/conf/simple/query_response*
5 | ^|Test Purpose |Validate facets in a query response.
6 | ^|Requirement |<>
7 | ^|Test Method |. Construct a path for a facets page
8 | . Issue an HTTP GET request on the path
9 | . Check that the response HTTP status code is `200`.
10 | . Check that the response contains a `facets` object with at least one property.
11 | . Foreach facet property:
12 | .. check that a `type` property exists.
13 | .. check that a `property` property exists.
14 | .. check that a `buckets` property exists and contains an array of 0 or more items; each item should have a `value` and `count` property.
15 | |===
16 |
17 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/abstract_tests/features/crs/ATS_storage-crs.adoc:
--------------------------------------------------------------------------------
1 | [[ats_create-replace-delete_crs_storage-crs]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:ats-id}* |*/conf/create-replace-delete/crs/storage-crs*
5 | ^|A | TBD
6 | ^|B | TBD
7 | |===
8 |
9 | ((If a server implementing this standard also supports the http://fix.me[Coordinate Reference Systems by Reference] extension, then all geometry-valued feature properties presented to the server in a request body shall be expressed using the storage crs advertised by the server (see http://fix.me[OGC API - Features - Part 2: Coordinate Reference Systems by Reference, Storage CRS] for the collection being operated on.))
10 | ((The specific collection being operated on is indicated by the {collectionId} component of the resource path.))
11 |
--------------------------------------------------------------------------------
/core/standard/abstract_tests/building-blocks/ATS_class_html.adoc:
--------------------------------------------------------------------------------
1 | [[ats_html]]
2 |
3 | //[cols="1,4",width="90%"]
4 | //|===
5 | //2+|*Conformance Class*
6 | //2+|http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/html
7 | //|Target type |Web API
8 | //|Requirements class |<>
9 | //|===
10 |
11 | [conformance_class]
12 | ====
13 | [%metadata]
14 | identifier:: http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/html
15 | target:: http://www.opengis.net/spec/ogcapi-records-1/1.0/req/html
16 | classification:: Target Type:Web API
17 | abstract-test:: /conf/html/conformance
18 | abstract-test:: /conf/html/content
19 | abstract-test:: /conf/html/definition
20 | ====
21 |
22 | ==== Conformance
23 |
24 | include::html/ATS_conformance.adoc[]
25 |
26 | ==== API
27 |
28 | include::html/ATS_content.adoc[]
29 |
30 | include::html/ATS_definition.adoc[]
31 |
--------------------------------------------------------------------------------
/core/standard/annex_abbreviated_terms.adoc:
--------------------------------------------------------------------------------
1 | [appendix,obligation=informative]
2 | == Abbreviated Terms
3 |
4 |
5 | API::
6 | Application Programming Interface
7 | CORS::
8 | Cross-Origin Resource Sharing
9 | CRS::
10 | Coordinate Reference System
11 | CSW::
12 | Catalog Service for the Web
13 | HTTP::
14 | Hypertext Transfer Protocol
15 | HTTPS::
16 | Hypertext Transfer Protocol Secure
17 | IANA::
18 | Internet Assigned Numbers Authority
19 | OGC::
20 | Open Geospatial Consortium
21 | RFC::
22 | Request for Comment
23 | TRS::
24 | Temporal Coordinate Reference System
25 | URI::
26 | Uniform Resource Identifier
27 | WMS::
28 | Web Map Service
29 | WFS::
30 | Web Feature Service
31 | WCS::
32 | Web Coverage Service
33 | WPS::
34 | Web Processing Service
35 | YAML::
36 | YAML Ain't Markup Language or Yet Another Markup Language
37 |
38 |
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/requirements_class_record-filter.adoc:
--------------------------------------------------------------------------------
1 | [[rc_filtering]]
2 |
3 | //[cols="1,4",width="90%"]
4 | //|===
5 | //2+|*Requirements Class*
6 | //2+|http://www.opengis.net/spec/ogcapi-records-1/1.0/req/filtering
7 | //|Target type |Web API
8 | //|Dependency |<>
9 | //|===
10 |
11 |
12 | [requirements_class]
13 | ====
14 | [%metadata]
15 | identifier:: http://www.opengis.net/spec/ogcapi-records-1/1.0/req/filtering
16 | subject:: Web API
17 | inherit:: <>
18 | requirement:: /req/features-filter/filter-param
19 | requirement:: /req/record-filter/filter-lang-param
20 | requirement:: /req/record-filter/filter-crs-param
21 | requirement:: /req/record-filter/response
22 | ====
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/recommendations/records/REC_storage-crs.adoc:
--------------------------------------------------------------------------------
1 | [[rec_records_crs-storage-crs]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Recommendation {counter:rec-id}* |*/rec/records/crs-storage-crs*
5 | ^|Condition |Server implements <>
6 | ^|A |The server SHOULD declare the `storageCrs` property in each Collection resource for each catalog that supports CREATE, REPLACE or UPDATE requests.
7 | ^|B |The server SHOULD support all CRSs that are declared in the `crs` property of the Collection resource for each catalog that supports CREATE, REPLACE or UPDATE requests.
8 | ^|C |The server MAY only support the storage CRS in CREATE, REPLACE or UPDATE requests to avoid coordinate conversion in mutations of record resources.
9 | |===
10 |
--------------------------------------------------------------------------------
/core/standard/requirements/local-resources-catalog_sorting/REQ_sorting.adoc:
--------------------------------------------------------------------------------
1 | [[req_local-resources-catalog_sorting]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/local-resources-catalog/sorting*
6 | //2+|Implementations of sorting of record responses SHALL, at the local resources endpoint (e.g., `/collections`), implement the following requirements class.
7 | //^|A |<>
8 | //|===
9 |
10 |
11 | [requirement]
12 | ====
13 | [%metadata]
14 | identifier:: /req/local-resources-catalog/sorting
15 | statement:: Implementations of sorting of record responses SHALL, at the local resources endpoint (e.g., `/collections`), implement the following requirements class.
16 | part:: See <>
17 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/record-collection/REQ_records-array-name.adoc:
--------------------------------------------------------------------------------
1 | [[req_record-collection_records-array-name]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/record-collection/records-array-name*
6 | //
7 | //If the name of the in-line records array property in the catalog is changed to something other than <> then that name SHALL be indicated in the catalog using a property named `recordsArrayName`.
8 | //|===
9 |
10 | [requirement]
11 | ====
12 | [%metadata]
13 | identifier:: /req/record-collection/records-array-name
14 | part:: If the name of the in-line records array property in the catalog is changed to something other than <> then that name SHALL be indicated in the catalog using a property named `recordsArrayName`.
15 | ====
--------------------------------------------------------------------------------
/core/standard/abstract_tests/crawlable-catalog/ATS_record-location.adoc:
--------------------------------------------------------------------------------
1 | [[ats_crawlable-catalog_record-location]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Abstract Test {counter:ats-id}* |*/conf/crawlable-catalog/record-location*
6 | //^|Test Purpose |Validate a crawlable catalog.
7 | //^|Requirement |<>
8 | //^|Test Method |. Determine the URL of a record
9 | //. Verify that the URL can be resolved and retrieve the record
10 | //|===
11 |
12 | [abstract_test]
13 | ====
14 | [%metadata]
15 | identifier:: /conf/crawlable-catalog/record-location
16 | target:: /req/crawlable-catalog/record-location
17 | test-purpose:: Validate a crawlable catalog.
18 | test-method::
19 | +
20 | --
21 | . Determine the URL of a record
22 | . Verify that the URL can be resolved and retrieve the record
23 | --
24 | ====
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/requirements/records/crs/REQ_other-crs.adoc:
--------------------------------------------------------------------------------
1 | [[req_records_crs-other-crs]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/records/crs-other-crs*
5 | ^|Condition |Server implements <>
6 | ^|Condition |The request declares that coordinates are in a specific coordinate reference system (by using the `Content-Crs` HTTP header or through information in the request body).
7 | ^|A |The server SHALL interpret all geometries in request bodies of requests to the resources or resource endpoints to be in the coordinate reference system declared in the request.
8 | ^|B |If the server does not support the coordinate reference system declared in the request for the catalog, the server SHALL return an error.
9 | |===
10 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-collection/REC_links-catalog-hierarchy.adoc:
--------------------------------------------------------------------------------
1 | [[rec_record-collection_links-catalog-hierarchy]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/record-collection/links-catalog-hierarchy*
6 | //^|A |A child catalog SHOULD include a link (relation: `parent`) pointing to its immediate parent catalog in the hierarchy.
7 | //^|B |A child catalog SHOULD include a link (relation: `root`) pointing to the root catalog of the hierarchy.
8 | //|===
9 |
10 | [recommendation]
11 | ====
12 | [%metadata]
13 | identifier:: /rec/record-collection/links-catalog-hierarchy
14 | part:: A child catalog SHOULD include a link (relation: `parent`) pointing to its immediate parent catalog in the hierarchy.
15 | part:: A child catalog SHOULD include a link (relation: `root`) pointing to the root catalog of the hierarchy.
16 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/local-resources-catalog_filtering/REQ_filtering.adoc:
--------------------------------------------------------------------------------
1 | [[req_local-resource-catalog_filtering]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/local-resources-catalog/filtering*
6 | //2+|Implementations that offer enhanced filtering SHALL, at the local resources catalog endpoint (e.g., `/collections`), implement the following requirements class.
7 | //^|A |<>
8 | //|===
9 |
10 |
11 | [requirement]
12 | ====
13 | [%metadata]
14 | identifier:: /req/local-resources-catalog/filtering
15 | statement:: Implementations that offer enhanced filtering SHALL, at the local resources catalog endpoint (e.g., `/collections`), implement the following requirements class.
16 | part:: See <>
17 | ====
--------------------------------------------------------------------------------
/core/standard/abstract_tests/building-blocks/query-param-profile/ATS_definition.adoc:
--------------------------------------------------------------------------------
1 | [[ats_query-param-profile_definition]]
2 | [abstract_test]
3 | ====
4 | [%metadata]
5 | identifier:: /conf/query-param-profile/definition
6 | target:: /req/query-param-profile/definition
7 | test-purpose:: Validate `profile` query parameter.
8 | test-method::
9 | +
10 | --
11 | . Construct a path for a searchable endpoint and include the `profile` query parameter.
12 | . Validate that the `profile` query parameter is constructed correctly using an OpenAPI Specification 3.0 fragment:
13 |
14 | [source,YAML]
15 | ----
16 | name: profile
17 | in: query
18 | required: false
19 | schema:
20 | type: array
21 | items:
22 | type: string
23 | explode: false
24 | style: form
25 | ----
26 | . Issue an HTTP GET request on that path.
27 | . Check that the value of the returned HTTP status header is +200+.
28 | --
29 | ====
30 |
--------------------------------------------------------------------------------
/extensions/facets/standard/clause_5_conventions.adoc:
--------------------------------------------------------------------------------
1 | == Conventions
2 |
3 | === General remarks
4 |
5 | See <>, Clauses 5 and 6.
6 |
7 | === Identifiers
8 |
9 | The normative provisions in this Standard are denoted by the URI `http://www.opengis.net/spec/ogcapi-records-2/1.0`.
10 |
11 | All requirements and conformance tests that appear in this document are denoted by partial URIs which are relative to this base.
12 |
13 | === Additional link relation types
14 |
15 | The following OGC link relation types are introduced in this document (no applicable link relation type in the https://www.iana.org/assignments/link-relations/link-relations.xml[IANA link relation type register] could be identified):
16 |
17 | * **http://www.opengis.net/def/rel/ogc/1.0/facets**: Refers to a resource that lists properties on which facets are applicable to and may be computed on.
18 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/abstract_tests/simpletx/insert/ATS_response-rid.adoc:
--------------------------------------------------------------------------------
1 | [[ats_simplextx_insert-response-rid]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Abstract Test {counter:ats-id}* |*/conf/create-replace-delete/insert/response-rid*
5 | ^|Test Purpose |Verify that the server has assigned an identifier for a newly added resource and that, that identifier may be used to get back the resource
6 | ^|Requirement |<>
7 | ^|Dependencies |<>
8 | ^|Test Method |. Add a new resource to a collection.
9 | . Retrieve the newly added resource using the URL specified by the `Location` header.
10 | . Verify that the retrieved resource, matches the one that was originally added.
11 | |===
12 |
--------------------------------------------------------------------------------
/core/standard/requirements/requirements_class_searchable-catalog_filtering.adoc:
--------------------------------------------------------------------------------
1 | [[rc_searchable-catalog_filtering]]
2 |
3 | //[cols="1,4",width="90%"]
4 | //|===
5 | //2+|*Requirements Class*
6 | //2+|http://www.opengis.net/spec/ogcapi-records-1/1.0/req/searchable-catalog/filtering
7 | //|Target type |Web API
8 | //|Dependency |<>
9 | //|Dependency |<>
10 | //|===
11 |
12 |
13 | [requirements_class]
14 | ====
15 | [%metadata]
16 | identifier:: http://www.opengis.net/spec/ogcapi-records-1/1.0/req/searchable-catalog/filtering
17 | subject:: Web API
18 | inherit:: <>
19 | inherit:: <>
20 | requirement:: /req/searchable-catalog/filtering
21 | requirement:: /req/searchable-catalog/filtering-conformance
22 | requirement:: /req/searchable-catalog/mandatory-queryables
23 | ====
24 |
25 |
--------------------------------------------------------------------------------
/template/standard/requirements/README.md:
--------------------------------------------------------------------------------
1 | This folder contains requirements description.
2 |
3 | Each file is a single requirement. The naming convention for these files is:
4 |
5 | "cc/REQ_req.adoc" where "cc" corresponds to the identifier for the requirements class and "req" corresponds to the identifier for the requirement. Example: "core/REQ_f-op.adoc".
6 |
7 | The requirement files are integrated into the main document as links.
8 |
9 | The requirement is expressed according to this pattern:
10 |
11 | ````
12 | [[req_cc_req]]
13 | [width="90%",cols="2,6a"]
14 | |===
15 | ^|*Requirement {counter:req-id}* |*/req/cc/req*
16 | ^|A |... SHALL ...
17 | ^|B |... SHALL ...
18 | |===
19 | ````
20 |
21 | Multiple statements should only be in a single requirement, if there is a direct
22 | dependency.
23 |
24 | For each requirement, there should be a corresponding Abstract Test in the "abstract_tests" folder.
25 |
--------------------------------------------------------------------------------
/core/standard/requirements/README.md:
--------------------------------------------------------------------------------
1 | This folder contains requirements description.
2 |
3 | Each file is a single requirement. The naming convention for these files is:
4 |
5 | "REQn.adoc" where "n" corresponds to the requirement number. Numbers should have preceeding zeros appropriate for the total number of requirements in the project (e.g., the first requirement could be REQ001 if less than 1000 requirements are anticipated).
6 |
7 | The requirement files are integrated into the main document as links.
8 |
9 | The requirement is expressed according to this pattern:
10 |
11 | NOTE: for each requirement, there should be a corresponding Abstract Test in the "abstract_tests" folder.
12 |
13 | NOTE: sample code may reference one or more requirements and should state which requirements are included in the code by adding the following line to the Extended Description:
14 |
15 | "#REQS: reqnum1,reqnum2,...reqnumn"
16 |
--------------------------------------------------------------------------------
/core/examples/yaml/collections/README.md:
--------------------------------------------------------------------------------
1 | # Making the "/collections" endpoint behave like a mini-catalog
2 |
3 | This directory is an example of how to extend the OGC API "/collections" endpoint so that it can be accessed by an "OGC API - Records" client as if it was a catalog of the collections available at this OGC API deployment.
4 |
5 | The schema of the collections is extended to include the common catalog properties. The "itemType" property of the catalog is set to "record" since this catalog does not reference other catalogs (i.e. hierarchical collections are not supported in OGC APIs). The "recordsArrayName" property is set to "collections" which is the name of the array in the collections object that contains the records (i.e. the description of each collection offered by this OGC API deployment).
6 |
7 | The schema of each collection (i.e. each record of this catalog) is extended
8 | with the common record properties.
9 |
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/records-api/PER_query-params.adoc:
--------------------------------------------------------------------------------
1 | [[per_records-api_query-params]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Permission {counter:per-id}* |*/per/records-api/query-params*
6 | //
7 | //Any combination of query parameters from the <> and any <> MAY be specified on the operation for the purpose of selecting a subset of catalog records (i.e., filtering).
8 | //|===
9 |
10 |
11 | [permission]
12 | ====
13 | [%metadata]
14 | identifier:: /per/records-api/query-params
15 | part:: Any combination of query parameters from the <> and any <> MAY be specified on the operation for the purpose of selecting a subset of catalog records (i.e., filtering).
16 | ====
--------------------------------------------------------------------------------
/core/standard/abstract_tests/crawlable-catalog/ATS_catalog-location.adoc:
--------------------------------------------------------------------------------
1 | [[ats_crawlable-catalog_location]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Abstract Test {counter:ats-id}* |*/conf/crawlable-catalog/location*
6 | //^|Test Purpose |Verify that a catalog is retrievable from the Web
7 | //^|Requirement |<>
8 | //^|Test Method |. Determine the URL of the crawlable catalog.
9 | //. Verify that the URL can be resolved and retrieve the catalog object.
10 | //|===
11 |
12 | [abstract_test]
13 | ====
14 | [%metadata]
15 | identifier:: /conf/crawlable-catalog/location
16 | target:: /req/crawlable-catalog/location
17 | test-purpose:: Verify that a catalog is retrievable from the Web
18 | test-method::
19 | +
20 | --
21 | . Determine the URL of the crawlable catalog.
22 | . Verify that the URL can be resolved and retrieve the catalog object.
23 | --
24 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/requirements_class_crawlable-catalog.adoc:
--------------------------------------------------------------------------------
1 | [[rc_crawlable-catalog]]
2 |
3 | //[cols="1,4",width="90%"]
4 | //|===
5 | //2+|*Requirements Class*
6 | //2+|http://www.opengis.net/spec/ogcapi-records-1/1.0/req/crawlable-catalog
7 | //|Target type |Web API
8 | //|Dependency |<>
9 | //|Dependency |<>
10 | //|===
11 |
12 | [requirements_class]
13 | ====
14 | [%metadata]
15 | identifier:: http://www.opengis.net/spec/ogcapi-records-1/1.0/req/crawlable-catalog
16 | subject:: Web API
17 | inherit:: <>
18 | inherit:: <>
19 | requirement:: /req/crawlable-catalog/record
20 | requirement:: /req/crawlable-catalog/record-location
21 | requirement:: /req/crawlable-catalog/catalog
22 | requirement:: /req/crawlable-catalog/location
23 | requirement:: /req/crawlable-catalog/conformance
24 | ====
--------------------------------------------------------------------------------
/extensions/facets/standard/requirements/README.md:
--------------------------------------------------------------------------------
1 | This folder contains requirements description.
2 |
3 | Each file is a single requirement. The naming convention for these files is:
4 |
5 | "REQn.adoc" where "n" corresponds to the requirement number. Numbers should have preceeding zeros appropriate for the total number of requirements in the project (e.g., the first requirement could be REQ001 if less than 1000 requirements are anticipated).
6 |
7 | The requirement files are integrated into the main document as links.
8 |
9 | The requirement is expressed according to this pattern:
10 |
11 | NOTE: for each requirement, there should be a corresponding Abstract Test in the "abstract_tests" folder.
12 |
13 | NOTE: sample code may reference one or more requirements and should state which requirements are included in the code by adding the following line to the Extended Description:
14 |
15 | "#REQS: reqnum1,reqnum2,...reqnumn"
16 |
--------------------------------------------------------------------------------
/core/examples/yaml/processes/README.md:
--------------------------------------------------------------------------------
1 | # Making the "/processes" endpoing behave like a mini-catalog
2 |
3 | This directory is an example of how to extend the OGC API "/processes" endpoint so that it can be accessed by an "OGC API - Records" client as if it was a catalog of the processes available at this OGC API deployment.
4 |
5 | The schema of the process list is extended to include the common catalog properties. The "itemType" property of the catalog is set to "record" since this catalog does not reference other catalogs (i.e. hierarchical process lists are not supported in OGC APIs). The "recordsArrayName" property is set to "processes" which is the name of the array property in the process list object that contains the records (i.e. the summary description of each process offered by this OGC API deployment).
6 |
7 | The schema of each process summary (i.e. each record of this catalog) is extended with the common record properties.
8 |
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/record-core/REQ_record-links.adoc:
--------------------------------------------------------------------------------
1 | [[req_record-core_links]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/record-core/links*
6 | //^|A |Each record SHALL, if it is a member of a catalog, include a link (relation: `collection`) pointing to the catalog of which this record is a member.
7 | //^|B |Only a single link (relation: `collection`) SHALL be included in a record. This implies that a record can only be a member of a single catalog.
8 | //|===
9 |
10 | [requirement]
11 | ====
12 | [%metadata]
13 | identifier:: /req/record-core/links
14 | part:: Each record SHALL, if it is a member of a catalog, include a link (relation: `collection`) pointing to the catalog of which this record is a member.
15 | part:: Only a single link (relation: `collection`) SHALL be included in a record. This implies that a record can only be a member of a single catalog.
16 | ====
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/requirements/records/REQ_collection-endpoint.adoc:
--------------------------------------------------------------------------------
1 | [[req_collection_endpoint]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/records/collection-endpoint*
5 | ^|A |If the server supports creating new records for a catalog `catalogId` using the PUT method, the server SHALL include a boolean property `supportsNonAutogeneratedResourceIds` with the value `true` in the representation of the catalog at the endpoints `{landingPageUri}/collections` and `{landingPageUri}/collections/{collectionsId}`.
6 | ^|B |The parameter `landingPageUri` SHALL be the URI of the Landing Page resource.
7 | ^|C |The parameter `collectionId` SHALL be each `id` property in the `collections` array of the Collections resource (i.e., the response to a GET request to `{landingPageUri}/collections`) where the collection has an `itemType` with no value or a value `record`.
8 | |===
9 |
--------------------------------------------------------------------------------
/core/standard/requirements/requirements_class_local-resources-catalog_filtering.adoc:
--------------------------------------------------------------------------------
1 | [[rc_local-resources-catalog_filtering]]
2 |
3 | //[cols="1,4",width="90%"]
4 | //|===
5 | //2+|*Requirements Class*
6 | //2+|http://www.opengis.net/spec/ogcapi-records-1/1.0/req/local-resources-catalog/filtering
7 | //|Target type |Web API
8 | //|Dependency |<>
9 | //|Dependency |<>
10 | //|===
11 |
12 |
13 | [requirements_class]
14 | ====
15 | [%metadata]
16 | identifier:: http://www.opengis.net/spec/ogcapi-records-1/1.0/req/local-resources-catalog/filtering
17 | subject:: Web API
18 | inherit:: <>
19 | inherit:: <>
20 | requirement:: /req/local-resource-catalog/filtering-conformance
21 | requirement:: /req/local-resources-catalog/filtering
22 | requirement:: /req/features-filter/filtering/queryables-link
23 | ====
--------------------------------------------------------------------------------
/core/standard/recommendations/local-resources-catalog/PER_other-catalog-properties.adoc:
--------------------------------------------------------------------------------
1 | [[per_local-resources-catalog_other-catalog-properties]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Permission {counter:per-id}* |*/per/local-resources-catalog/other-catalog-properties*
6 | //
7 | //A local resources catalog MAY contain any number of other additional properties not listed in <> and <>. The meaning of these other additional properties is not specified in this document.
8 | //|===
9 |
10 | [permission]
11 | ====
12 | [%metadata]
13 | identifier:: /per/local-resources-catalog/other-catalog-properties
14 | part:: A local resources catalog MAY contain any number of other additional properties not listed in <> and <>. The meaning of these other additional properties is not specified in this document.
15 | ====
--------------------------------------------------------------------------------
/extensions/facets/openapi/parameters/facets.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | name: facets
3 | in: query
4 | description: |
5 | The facets parameter is represented by a comma-separated list of values (,), delimited by colons (:), with the following tokens:
6 |
7 | - `property-name`: mandatory; the name of the facet to be included in the search response, matching one of the facets advertised in the `facets` definition
8 | - `bucket-count`: optional; the maximum number of buckets to return for that facet
9 | - `sorting`: optional; one of the following values: `value_asc`, `value_desc`, `count_asc`, or `count_desc` (defaults to the value advertised in the `facets` definition)
10 | required: false
11 | schema:
12 | type: array
13 | items:
14 | type: string
15 | pattern: '[A-Za-z_]+(:[0-9]*(:(value_asc\|value_desc\|count_asc\|count_desc)?)?)?'
16 | explode: false
17 | style: form
18 | example: facets=keywords:20:value_asc,organization:10,theme::count_desc,format
19 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/requirements/README.md:
--------------------------------------------------------------------------------
1 | This folder contains requirements description.
2 |
3 | Each file is a single requirement. The naming convention for these files is:
4 |
5 | "cc/REQ_req.adoc" where "cc" corresponds to the identifier for the requirements class and "req" corresponds to the identifier for the requirement. Example: "core/REQ_f-op.adoc".
6 |
7 | The requirement files are integrated into the main document as links.
8 |
9 | The requirement is expressed according to this pattern:
10 |
11 | ````
12 | [[req_cc_req]]
13 | [width="90%",cols="2,6a"]
14 | |===
15 | ^|*Requirement {counter:req-id}* |*/req/cc/req*
16 | ^|A |... SHALL ...
17 | ^|B |... SHALL ...
18 | |===
19 | ````
20 |
21 | Multiple statements should only be in a single requirement, if there is a direct
22 | dependency.
23 |
24 | For each requirement, there should be a corresponding Abstract Test in the "abstract_tests" folder.
25 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/requirements/records/crs/REQ_default-crs.adoc:
--------------------------------------------------------------------------------
1 | [[req_records_default-crs]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/records/default-crs*
5 | ^|Condition |Server implements <>
6 | ^|Condition |The request does not declare that coordinates are in a specific coordinate reference system (by using the `Content-Crs` HTTP header or through information in the request body).
7 | ^|A |The server SHALL interpret all geometries in request bodies of requests to the resources or resource endpoints to be in the coordinate reference system http://www.opengis.net/def/crs/OGC/1.3/CRS84 (WGS 84 longitude/latitude) for geometries without height information and http://www.opengis.net/def/crs/OGC/0/CRS84h (WGS 84 longitude/latitude plus ellipsoidal height) for geometries with height information.
8 | |===
9 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/abstract_tests/simpletx/insert/ATS_post-op.adoc:
--------------------------------------------------------------------------------
1 | [[ats_simplextx_insert-post-op]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Abstract Test {counter:ats-id}* |*/conf/create-replace-delete/insert/post-op*
5 | ^|Test Purpose |Validate that a .
6 | ^|Requirement |<>,
7 | ^|Dependencies |<>, <>
8 | ^|Test Method |. For every resource collection identified in the Collections, issue an HTTP POST request to the URL `/collections/{collectionId}/items` with a suitable request body (see <>).
9 | . Verify that the server responds as per <>.
10 | |===
11 |
--------------------------------------------------------------------------------
/core/standard/abstract_tests/building-blocks/json/ATS_catalog-content-profile.adoc:
--------------------------------------------------------------------------------
1 | [[ats_json_catalog-content-profile]]
2 |
3 | [abstract_test]
4 | ====
5 | [%metadata]
6 | identifier:: /conf/json/catalog-content-profile
7 | target:: /req/json/catalog-content-profile
8 | test-purpose:: Validate the JSON representation of a catalog.
9 | test-method::
10 | +
11 | --
12 | . Construct a path for a `catalog` page.
13 | . Negoation for a JSON-encoded catalog response.
14 | . Negotiate for the profile `http://www.opengis.net/def/profile/OGC/0/ogc-catalog`.
15 | . Issue an HTTP GET request on the path
16 | . Check that the media type of the response is `application/json`.
17 | . Check that the response validates against the schema as defined in https://schemas.opengis.net/ogcapi/records/part1/1.0/openapi/schemas/catalog.yaml.
18 | . Check that the `links` section includes a link (href: `http://www.opengis.net/def/profile/OGC/0/ogc-catalog`, relation: `profile`).
19 | --
20 | ====
21 |
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/sorting/REQ_get-sortables-op.adoc:
--------------------------------------------------------------------------------
1 | [[req_sorting_get-sortables-op]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/sorting/get-sortables-op*
6 | //
7 | //^|A |For every catalog, the server SHALL support the HTTP GET operation at the sortables endpoint and the media type `application/schema+json`.
8 | //^|B |The sortables resource SHALL be referenced from the catalog with a link with the link relation type `http://www.opengis.net/def/rel/ogc/1.0/sortables`.
9 | //|===
10 |
11 |
12 | [requirement]
13 | ====
14 | [%metadata]
15 | identifier:: /req/sorting/get-sortables-op
16 | part:: For every catalog, the server SHALL support the HTTP GET operation at the sortables endpoint and the media type `application/schema+json`.
17 | part:: The sortables resource SHALL be referenced from the catalog with a link with the link relation type `http://www.opengis.net/def/rel/ogc/1.0/sortables`.
18 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/sorting/REQ_sortby-response.adoc:
--------------------------------------------------------------------------------
1 | [[req_sorting_sortby-response]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/sorting/sortby-response*
6 | //
7 | //^|A |If the `sortby` parameter is specified, then the records in a response SHALL be ordered by the keys and sort directions (i.e., ascending or descending) specified.
8 | //^|B |The specific set of keys that may be used for sorting SHALL be specified by the `/collections/{collectionId}/sortables` resource.
9 | //|===
10 |
11 |
12 | [requirement]
13 | ====
14 | [%metadata]
15 | identifier:: /req/sorting/sortby-response
16 | part:: If the `sortby` parameter is specified, then the records in a response SHALL be ordered by the keys and sort directions (i.e., ascending or descending) specified.
17 | part:: The specific set of keys that may be used for sorting SHALL be specified by the `/collections/{collectionId}/sortables` resource.
18 | ====
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-core/REC_time.adoc:
--------------------------------------------------------------------------------
1 | [[rec_record-core_time]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/record-core/time*
6 | //^|A |A record SHOULD include a `time` property that indicates the temporal aspect of the resource that the record describes.
7 | //^|B |If temporal information about the resource is not available then the `time` property SHOULD, even though it is optional, still be included in the record and its value SHOULD be set to `null`.
8 | //|===
9 |
10 | [recommendation]
11 | ====
12 | [%metadata]
13 | identifier:: /rec/record-core/time
14 | part:: A record SHOULD include a `time` property that indicates the temporal aspect of the resource that the record describes.
15 | part:: If temporal information about the resource is not available then the `time` property SHOULD, even though it is optional, still be included in the record and its value SHOULD be set to `null`.
16 | ====
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/json/PER_time.adoc:
--------------------------------------------------------------------------------
1 | [[per_json_time]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Permission {counter:per-id}* |*/per/json/time*
6 | //
7 | //In the GeoJSON encoding of a record, the `time` member is a top-level field. Since some popular GeoJSON tools only manipulate record properties encoded in the `properties` section of a GeoJSON record, implementations MAY duplicate the `time` member from the top level into the `properties` section to take advantage of these available tools.
8 | //|===
9 |
10 | [permission]
11 | ====
12 | [%metadata]
13 | identifier:: /per/json/time
14 | part:: In the GeoJSON encoding of a record, the `time` member is a top-level field. Since some popular GeoJSON tools only manipulate record properties encoded in the `properties` section of a GeoJSON record, implementations MAY duplicate the `time` member from the top level into the `properties` section to take advantage of these available tools.
15 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/crawlable-catalog/REQ_catalog-location.adoc:
--------------------------------------------------------------------------------
1 | [[req_crawlable-catalog_location]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/crawlable-catalog/location*
6 | //
7 | //The catalog SHALL be placed in a web-accessible location.
8 | //|===
9 |
10 |
11 | [requirement]
12 | ====
13 | [%metadata]
14 | identifier:: /req/crawlable-catalog/location
15 | part:: The catalog SHALL be placed in a web-accessible location.
16 | ====
17 |
18 | NOTE: This Standard is primarily concerned with making resources discoverable on the open https://en.wikipedia.org/wiki/World_Wide_Web[Web] that sits on top of the public https://en.wikipedia.org/wiki/Internet[Internet]. However, the same requirement applies in more restricted contexts such as a company https://en.wikipedia.org/wiki/Intranet[Intranet] or within classified networks. In other words, the catalog should be placed in a location that is accessible to the intended audience.
19 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/abstract_tests/simpletx/insert/ATS_content-type.adoc:
--------------------------------------------------------------------------------
1 | [[ats_simplextx_insert_content-type]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Abstract Test {counter:ats-id}* |*/conf/create-replace-delete/insert/content-type*
5 | ^|Test Purpose |Verify that the server validate that the media type specified by the `Content-Type` headers matches the media type of the POST body.
6 | ^|Requirement |<>
7 | ^|Dependencies |<>
8 | ^|Test Method |. Add a resource to a collection using one of the supported resource representations.
9 | . Ensure that the value of the `Content-Type` header matches the respresentation of the resource.
10 | . Verify that the server response as per <>.
11 | |===
12 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/requirements/records/REQ_resource-endpoint.adoc:
--------------------------------------------------------------------------------
1 | [[req_resource_endpoint]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/records/resource-endpoint*
5 | ^|A |For records, the resource endpoints SHALL be URIs specified by the URI template `{landingPageUri}/collections/{catalogId}/items/{recordId}`.
6 | ^|B |The parameter `landingPageUri` SHALL be the URI of the Landing Page resource.
7 | ^|C |The parameter `catalogId` SHALL be each `id` property in the `collections` array of the Collections resource (i.e., the response to a GET request to `{landingPageUri}/collections`) where the collection has an `itemType` with no value or a value `record`.
8 | ^|D |The parameter `record` SHALL be the `id` property of a record obtained by previously having queried the Records resource of the collection (i.e., responses to GET requests to `{landingPageUri}/collections/{catalogId}/items`).
9 | |===
10 |
--------------------------------------------------------------------------------
/extensions/facets/standard/README.md:
--------------------------------------------------------------------------------
1 |
2 | # OGC API - Records - Part 2: Facets Specification
3 |
4 | This directory contains the OGC API - Records - Part 2: Facets Specification. This specification, working with OGC API - Records - Part 1: Core, defines the mechanisms with which to apply faceting to an OGC API - Records endpoint.
5 |
6 | ## Generating HTML and PDF
7 |
8 | The latest drafts of each standard in this repository are built daily (based on the configuration contained in the [asciidoctor.json](https://github.com/opengeospatial/ogcapi-records/blob/master/asciidoctor.json) file):
9 |
10 | * [Part 1: Core](https://docs.ogc.org/DRAFTS/25-013.html)
11 |
12 | To generate HTML and PDF representations of the standard yourself, asciidoctor is required. To install:
13 |
14 | ```bash
15 | gem install asciidoctor --pre
16 | gem install asciidoctor-pdf --pre
17 | ```
18 |
19 | From here, run `HTML_gen.bat` and `PDF_gen.bat` accordingly. Outputs are written to the parent directory.
20 |
--------------------------------------------------------------------------------
/core/standard/requirements/crawlable-catalog/REQ_record-location.adoc:
--------------------------------------------------------------------------------
1 | [[req_crawlable-catalog_record-location]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/crawlable-catalog/record-location*
6 | //
7 | //The record file SHALL be placed in a web-accessible location.
8 | //|===
9 |
10 | [requirement]
11 | ====
12 | [%metadata]
13 | identifier:: /req/crawlable-catalog/record-location
14 | part:: The record file SHALL be placed in a web-accessible location.
15 | ====
16 |
17 | NOTE: This Standard is primarily concerned with making resources discoverable on the open https://en.wikipedia.org/wiki/World_Wide_Web[Web] that sits on top of the public https://en.wikipedia.org/wiki/Internet[Internet]. However, the same requirement applies in more restricted contexts such as a company https://en.wikipedia.org/wiki/Intranet[Intranet] or within classified networks. In other words, the record should be placed in a location that is accessible to the intended audience.
18 |
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/requirements_class_record-core.adoc:
--------------------------------------------------------------------------------
1 | [[rc_record-core]]
2 | //[cols="1,4",width="90%"]
3 | //|===
4 | //2+|*Requirements Class*
5 | //2+|http://www.opengis.net/spec/ogcapi-records-1/1.0/req/record-core
6 | //|Target type |Document model
7 | //|===
8 |
9 | [requirements_class]
10 | ====
11 | [%metadata]
12 | identifier:: http://www.opengis.net/spec/ogcapi-records-1/1.0/req/record-core
13 | subject:: Document model
14 | requirement:: /req/record-core/mandatory-properties-record
15 | requirement:: /req/record-core/time-instant
16 | requirement:: /req/record-core/time-interval
17 | requirement:: /req/record-core/time-instant-interval
18 | requirement:: /req/record-core/time-zone
19 | requirement:: /req/record-core/contact
20 | requirement:: /req/record-core/license
21 | requirement:: /req/record-core/links
22 | requirement:: /req/record-core/templated-link
23 | requirement:: /req/record-core/templated-link-header
24 | requirement:: /req/record-core/default-mediatype
25 | ====
--------------------------------------------------------------------------------
/extensions/facets/standard/clause_4_terms_and_definitions.adoc:
--------------------------------------------------------------------------------
1 | == Terms and Definitions
2 | This document uses the terms defined in Sub-clause 5 of https://docs.ogc.org/DRAFTS/19-072.html[OGC API - Common Part 1] (OGC 19-072), which is based on the ISO/IEC Directives, Part 2, Rules for the structure and drafting of International Standards. In particular, the word "shall" (not "must") is the verb form used to indicate a requirement to be strictly followed to conform to this Standard.
3 |
4 | For the purposes of this document, the following additional terms, definitions and abbreviated terms apply in addition to those defined in <>.
5 |
6 | [[bucket-def]]
7 | === Bucket
8 | A means to partition a domain of terms, ranges or queries results into logical groups of similar nature.
9 |
10 | === Facet; Aggregation
11 | A high-level piece of information that is computed over a set of records in a collection. The result of this computation is given as <>.
12 |
--------------------------------------------------------------------------------
/core/standard/abstract_tests/crawlable-catalog/ATS_catalog.adoc:
--------------------------------------------------------------------------------
1 | [[ats_crawlable-catalog_catalog]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Abstract Test {counter:ats-id}* |*/conf/crawlable-catalog/catalog*
6 | //^|Test Purpose |Validate a crawlable catalog object
7 | //^|Requirement |<>
8 | //^|Test Method |. Obtain a catalog object
9 | //. Check that the catalog object validates against the schema defined in https://schemas.opengis.net/ogcapi/records/part1/1.0/openapi/schemas/catalog.yaml
10 | //|===
11 |
12 | [abstract_test]
13 | ====
14 | [%metadata]
15 | identifier:: /conf/crawlable-catalog/catalog
16 | target:: /req/crawlable-catalog/catalog
17 | test-purpose:: Validate a crawlable catalog object
18 | test-method::
19 | +
20 | --
21 | . Obtain a catalog object
22 | . Check that the catalog object validates against the schema defined in https://schemas.opengis.net/ogcapi/records/part1/1.0/openapi/schemas/catalog.yaml
23 | --
24 | ====
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-collection/REC_keywords-themes.adoc:
--------------------------------------------------------------------------------
1 | [[rec_record-collection_keywords-themes]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Recommendation {counter:rec-id}* |*/rec/record-collection/keywords-themes*
6 | //^|A |Implementations SHOULD use the `keywords` property to provide free-form terms or tags associated with this catalog.
7 | //^|B |Implementations SHOULD use the `themes` property to enumerate 1..n concepts, and their respective knowledge organization system/controlled vocabulary, associated with the catalog.
8 | //|===
9 |
10 | [recommendation]
11 | ====
12 | [%metadata]
13 | identifier:: /rec/record-collection/keywords-themes
14 | part:: Implementations SHOULD use the `keywords` property to provide free-form terms or tags associated with this catalog.
15 | part:: Implementations SHOULD use the `themes` property to enumerate 1..n concepts, and their respective knowledge organization system/controlled vocabulary, associated with the catalog.
16 | ====
--------------------------------------------------------------------------------
/core/standard/recommendations/building-blocks/record-collection/PER_additional-properties.adoc:
--------------------------------------------------------------------------------
1 | [[per_record-collection_additional-properties]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Permission {counter:per-id}* |*/per/record-collection/additional-properties*
6 | //^|A |A catalog MAY contain zero or more of the optional properties listed in <>.
7 | //^|B |A catalog MAY include any number of additional properties not listed in <>. The meaning of these additional properties is not defined in this standard.
8 | //|===
9 |
10 |
11 | [permission]
12 | ====
13 | [%metadata]
14 | identifier:: /per/record-collection/additional-properties
15 | part:: A catalog MAY contain zero or more of the optional properties listed in <>.
16 | part:: A catalog MAY include any number of additional properties not listed in <>. The meaning of these additional properties is not defined in this standard.
17 | ====
--------------------------------------------------------------------------------
/core/standard/recommendations/local-resources-catalog/PER_other-record-properties.adoc:
--------------------------------------------------------------------------------
1 | [[per_local-resources-catalog_other-record-properties]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Permission {counter:per-id}* |*/per/local-resources-catalog/other-record-properties*
6 | //
7 | //Each local resources i.e., MAY contain any number of other additional properties not listed in <>, <> and <>. The meaning of these other additional properties is not specified in this document.
8 | //|===
9 |
10 | [permission]
11 | ====
12 | [%metadata]
13 | identifier:: /per/local-resources-catalog/other-record-properties
14 | part:: Each local resources i.e., MAY contain any number of other additional properties not listed in <>, <> and <>. The meaning of these other additional properties is not specified in this document.
15 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/json/REQ_conformance.adoc:
--------------------------------------------------------------------------------
1 | [[req_json_conformance]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/json/conformance*
6 | //
7 | //^|A |The `conformsTo` array SHALL contain the value `http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/json`.
8 | //|===
9 |
10 | [requirement]
11 | ====
12 | [%metadata]
13 | identifier:: /req/json/conformance
14 | part:: The `conformsTo` array SHALL contain the value `http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/json`.
15 | ====
16 |
17 | NOTE: The location of the `conformsTo` array depends on the type of catalog being deployed. In the case of the <> or <> catalog, the `conformsTo` array can be found in the conformance page (path: `/conformance`) of the OGC API deployment or in the catalog. In the case of a <>, the `conformsTo` array is found in the catalog.
18 |
--------------------------------------------------------------------------------
/extensions/facets/standard/clause_8_advanced_facets.adoc:
--------------------------------------------------------------------------------
1 | [[advanced_clause]]
2 | == Requirements Class "Advanced Facets"
3 |
4 | === Overview
5 |
6 | include::requirements/requirements_class_advanced.adoc[]
7 |
8 | This requirements class defines the minimum set of query parameters that should be implemented at a searchable catalogue or local resources catalogue endpoint.
9 |
10 | include::requirements/advanced/REQ_conformance.adoc[]
11 |
12 | === Query parameters
13 |
14 | ==== Parameter facets
15 |
16 | The `facets` parameter allows a client to specify fine-grained access and computation of a facet against a given property, such as which facets to return and how many buckets to calculate.
17 |
18 | . Example facets query
19 |
20 | [source,bash]
21 | ----
22 | GET /collections/wis2-discovery-metadata/items?facets=keywords:20:value_asc,organization:10
23 | ----
24 |
25 | include::requirements/advanced/REQ_query_facets_definition.adoc[]
26 |
27 | include::requirements/advanced/REQ_query_facets_response.adoc[]
28 |
--------------------------------------------------------------------------------
/extensions/transactions/create-replace-update-delete-harvest/standard/requirements/records/crs/REQ_crs84.adoc:
--------------------------------------------------------------------------------
1 | [[req_records_crs-crs84]]
2 | [width="90%",cols="2,6a"]
3 | |===
4 | ^|*Requirement {counter:req-id}* |*/req/records/crs-crs84*
5 | ^|Condition |Server does not implement <>
6 | ^|A |The server SHALL interpret all geometries in request bodies of requests to the resources or resource endpoints to be in the coordinate reference system http://www.opengis.net/def/crs/OGC/1.3/CRS84 (WGS 84 longitude/latitude) for geometries without height information and http://www.opengis.net/def/crs/OGC/0/CRS84h (WGS 84 longitude/latitude plus ellipsoidal height) for geometries with height information.
7 | ^|B |If the request declares that the coordinates are in a different coordinate reference system (e.g., by using the `Content-Crs` HTTP header with a different CRS identifier or through information in the request body), the server SHALL return an error.
8 | |===
9 |
--------------------------------------------------------------------------------
/core/standard/abstract_tests/README.md:
--------------------------------------------------------------------------------
1 | This folder contains the Abstract Test Suite.
2 |
3 | Each file describes a single test. The naming convention for these files is:
4 |
5 | "cc/TESTn.adoc" where "cc" corresponds to the identifier for the conformance class and "n" corresponds to the test number. Numbers should have preceding zeros appropriate for the total number of tests in the conformance class (e.g., the first test could be TEST001 if less than 1000 tests are anticipated).
6 |
7 | The test is expressed according to this pattern:
8 |
9 | ````
10 | ===== Test case title
11 |
12 | (( additional discussion, if needed ))
13 |
14 | ====== a) Test Purpose:
15 | (( description ))
16 |
17 | ====== b) Pre-conditions:
18 | * (( list all preconditions ))
19 |
20 | ====== c) Test Method:
21 | * (( steps to execute and assertions to test ))
22 |
23 | ====== d) References:
24 | * <>
25 | ````
26 |
27 | NOTE: for each test, there must be one or more requirements in the "requirements" folder.
28 |
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/html/REQ_conformance.adoc:
--------------------------------------------------------------------------------
1 | [[req_html_conformance]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/html/conformance*
6 | //
7 | //^|A |The `conformsTo` array SHALL contain the value `http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/html`.
8 | //|===
9 |
10 |
11 | [requirement]
12 | ====
13 | [%metadata]
14 | identifier:: /req/html/conformance
15 | part:: The `conformsTo` array SHALL contain the value `http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/html`.
16 | ====
17 |
18 | NOTE: The location of the `conformsTo` array depends on the type of catalog being deployed. In the case of the <> or <> catalog, the `conformsTo` array can be found in the conformance page (path: `/conformance`) of the OGC API deployment or in the catalog. In the case of a <>, the `conformsTo` array is found in the catalog.
19 |
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/requirements_class_json.adoc:
--------------------------------------------------------------------------------
1 | [[rc_json]]
2 |
3 | //[cols="1,4",width="90%"]
4 | //|===
5 | //2+|*Requirements Class*
6 | //2+|http://www.opengis.net/spec/ogcapi-records-1/1.0/req/json
7 | //|Target type |Document encoding
8 | //|Dependency |<>
9 | //|Dependency |<>
10 | //|Dependency |<>
11 | //|===
12 |
13 | [requirements_class]
14 | ====
15 | [%metadata]
16 | identifier:: http://www.opengis.net/spec/ogcapi-records-1/1.0/req/json
17 | subject:: Document encoding
18 | inherit:: <>
19 | inherit:: <>
20 | inherit:: <>
21 | requirement:: /req/json/catalog-content
22 | requirement:: /req/json/collection-response
23 | requirement:: /req/json/conformance
24 | requirement:: /req/json/record-content
25 | requirement:: /req/json/record-response
26 | ====
--------------------------------------------------------------------------------
/core/standard/requirements/building-blocks/record-collection/REQ_default-mediatype.adoc:
--------------------------------------------------------------------------------
1 | [[req_record-collection_default-mediatype]]
2 |
3 | //[width="90%",cols="2,6a"]
4 | //|===
5 | //^|*Requirement {counter:req-id}* |*/req/record-collection/default-mediatype*
6 | //
7 | //^|A |If the <> is advertised, then the default media type for catalog content SHALL be JSON (i.e., `application/ogc-catalog+json`).
8 | //^|B |If the <> is not advertised, then the default media type for catalog content SHALL be HTML (i.e., `text.html`).
9 | //|===
10 |
11 | [requirement]
12 | ====
13 | [%metadata]
14 | identifier:: /req/record-collection/default-mediatype
15 | part:: If the <> is advertised, then the default media type for catalog content SHALL be JSON (i.e., `application/ogc-catalog+json`).
16 | part:: If the <> is not advertised, then the default media type for catalog content SHALL be HTML (i.e., `text.html`).
17 | ====
--------------------------------------------------------------------------------