You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: PRINCIPLES.md
+16-6
Original file line number
Diff line number
Diff line change
@@ -9,12 +9,22 @@ core geospatial standards.
9
9
The collaboration facilities of Github should be used to their full extent. All proposed improvements and
10
10
changes should come in the form of pull requests, using code review functionality to discuss changes.
11
11
12
-
-**JSON + REST + HTTP at the core.** JSON has won over XML, and REST over SOAP. We embrace them and
12
+
-**Alignment with OGC standards** - The Open Geospatial Consortium publishes a large set of geospatial standards.
13
+
To the greatest extent possible, the STAC API should align with existing and in-progress OGC API standards. The
14
+
STAC API has a symbiotic relationship with these standards, as it seeks both to reuse their building blocks and
15
+
push them forward in a practical direction. Among the most important of these are:
16
+
-[OGC API - Common](https://ogcapi.ogc.org/common/)
17
+
-[OGC API - Features](https://ogcapi.ogc.org/features/), particularly [OGC API - Features - Part 1: Core](http://docs.ogc.org/is/17-069r3/17-069r3.html)
18
+
-[OGC API - Records](https://ogcapi.ogc.org/records/)
19
+
-[Common Query Language (CQL2)](https://docs.ogc.org/DRAFTS/21-065.html), formerly part of OGC
20
+
API - Features - Part 3: Filtering and the Common Query Language (CQL)
21
+
22
+
-**Web API using JSON + HTTP at the core.** JSON has won over XML, and resource-centric over SOAP. We embrace them and
13
23
are not considering legacy options. Forward looking protocols can be considered as extensions,
14
-
but the default specifications should be in JSON, following best REST practices. HTTP caching and
24
+
but the default specifications should be in JSON, following best web API practices. HTTP caching and
15
25
error codes should be leveraged at the core. GeoJSON has already defined the core geospatial JSON response,
16
-
so it should also be core. As STAC APIs follow a RESTful model, a core principal is the use of HTTP Request Methods ("verbs") and
17
-
the `Content-Type` header to drive behavior on resources ("nouns").
26
+
so it should also be core. As STAC APIs follow a resource-centric, hypermedia-driven model, a core principal
27
+
is the use of HTTP Request Methods ("verbs") and the `Content-Type` header to drive behavior on resources ("nouns").
18
28
19
29
-**Small Reusable Pieces Loosely Coupled** - Each specification should be as focused as possible,
20
30
defining one core concept and refraining from describing lots of options. Additional options can be made
@@ -36,8 +46,8 @@ for data in a different projection.
36
46
37
47
-**Working code required.** Proposed changes should be accompanied by working code
38
48
(ideally with a link to an online service running the code). A reference implementation should be available
39
-
online to power the interactive documentation. Fully accepted specifications should have at least 3 implementations
40
-
that cover the entire specification. Extensions have their own [Extention Maturity](extensions.md#extension-maturity) model.
49
+
online to power the interactive documentation. Both core conformance classes and extensions follow the
| Proposal | 0 | An idea put forward by a community member to gather feedback | Not stable - breaking changes almost guaranteed as implementers try out the idea. |
55
+
| Pilot | 1 | Idea is fleshed out, with examples and a JSON schema, and implemented in one or more catalogs. Additional implementations encouraged to help give feedback | Approaching stability - breaking changes are not anticipated but can easily come from additional feedback |
56
+
| Candidate | 3 | A number of implementers are using it and are standing behind it as a solid extension. Can generally count on an extension at this maturity level | Mostly stable, breaking changes require a new version and minor changes are unlikely. |
57
+
| Stable | 6 | Highest current level of maturity. The community of extension maintainers commits to a STAC review process for any changes, which are not made lightly. | Completely stable, all changes require a new version number and review process. |
58
+
| Deprecated | N/A | A previous extension that has likely been superseded by a newer one or did not work out for some reason. | Will not be updated and may be removed in an upcoming major release. |
59
+
60
+
Maturity mostly comes through diverse implementations, so the minimum number of implementations
61
+
column is the main gating function for an extension to mature. But extension authors can also
62
+
choose to hold back the maturity advancement if they don't feel they are yet ready to commit to
63
+
the less breaking changes of the next level.
64
+
65
+
A 'mature' classification level will likely be added once there are extensions that have been
66
+
stable for over a year and are used in twenty or more implementations.
42
67
43
68
## Communication
44
69
@@ -55,15 +80,26 @@ The **[Overview](overview.md)** document describes all the various parts of the
55
80
The *[core](core/)* folder describes the core STAC API specification that enables browsing catalogs and
56
81
retrieving the API capabilities. This includes the OpenAPI schemas for STAC Item, Catalog and Collection objects.
57
82
58
-
**STAC API - Item Search Specification:**
59
-
The *[item-search](item-search)* folder contains the Item Search specification, which enables
60
-
cross-collection search of STAC Item objects at a `search` endpoint, as well as a number of extensions.
83
+
**STAC API - Collections:**
84
+
The *[collections](collections)* folder describes how a STAC API Catalog can advertise the Collections it contains.
61
85
62
86
**STAC API - Features:**
63
87
The *[ogcapi-features](ogcapi-features)* folder describes how a STAC API can fully implement [OGC API -
64
88
Features](http://docs.opengeospatial.org/is/17-069r3/17-069r3.html) to expose individual `items` endpoints for search of
65
89
each STAC collection. It also includes extensions that can be used to further enhance OAFeat.
66
90
91
+
**STAC API - Item Search Specification:**
92
+
The *[item-search](item-search)* folder contains the Item Search specification, which enables
93
+
cross-collection search of STAC Item objects at a `search` endpoint, as well as a number of extensions.
94
+
95
+
**STAC API - Children:**
96
+
The *[children](children)* folder describes how a STAC API Catalog can advertise the children (child catalogs or child collections)
97
+
it contains.
98
+
99
+
**STAC API - Browseable:**
100
+
The *[browseable](browseable)* folder describes how a STAC API Catalog can advertise that all Items can be accessed
101
+
by following through `child` and `item` link relations.
102
+
67
103
**Extensions:**
68
104
The *[extensions](extensions.md) document* describes how STAC incubates new functionality, and it links to the existing
69
105
extensions that can be added to enrich the functionality of a STAC API. Each has an OpenAPI yaml, but some of the yaml
-**[Maturity Classification](../README.md#maturity-classification):** Pilot
14
+
-**Dependencies**: [STAC API - Core](../core)
15
+
16
+
A STAC API conforming to the `STAC API - Browseable` conformance class must be structured such that all
17
+
all Items in the catalog can be accessed by following `child` and `item` link relations. This is a more significant
18
+
constraint than a STAC API without this conformance class or a STAC Catalog that is available over HTTP but does not
19
+
implement STAC API, neither of which have any guarantee regarding the reachability of Items. This conformance
20
+
class is used to signal to users that they can fully navigate to all available Items using a UI (like [STAC Browser](https://github.com/radiantearth/stac-browser),
21
+
and also makes it clear to crawlers that they can reach everything by following catalog links.
22
+
23
+
Recommendations for structuring Catalogs hierarchically can be found in
24
+
[Structuring Catalog Hierarchies](../core/README.md#structuring-catalog-hierarchies) from the `STAC API - Core` specification.
25
+
26
+
## Link Relations
27
+
28
+
This conformance class also requires implementation of the link relations in the [STAC API - Core](../core) conformance class.
29
+
30
+
Additionally, `child` relations must exist to child Catalogs and Collections and `item` relations to Items, such that
31
+
every Item in the Catalog can be accessed by traversing these relations.
0 commit comments