Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
philvarner authored Mar 13, 2023
1 parent 551ced5 commit a194d9f
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 39 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## Changed

- Browseable has been moved to an extension, now located at <https://github.com/stac-api-extensions/browseable>

## Added

- Added authentication status code recommendations.
Expand Down
38 changes: 1 addition & 37 deletions core/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
- [Summary](#summary)
- [Overview](#overview)
- [Core](#core)
- [Browseable](#browseable)
- [Link Relations](#link-relations)
- [Endpoints](#endpoints)
- [Example Landing Page for STAC API - Core](#example-landing-page-for-stac-api---core)
Expand All @@ -16,7 +15,6 @@
- **OpenAPI specification:** [openapi.yaml](openapi.yaml) ([rendered version](https://api.stacspec.org/v1.0.0-rc.2/core)),
- **Conformance URIs:**
- <https://api.stacspec.org/v1.0.0-rc.2/core>
- <https://api.stacspec.org/v1.0.0-rc.2/browseable>
- **[Maturity Classification](../README.md#maturity-classification):** Candidate
- **Dependencies**: None
and [commons.yaml](commons.yaml) is the OpenAPI version of the core [STAC spec](../stac-spec) JSON Schemas.
Expand All @@ -26,9 +24,7 @@
All STAC API implementations must implement the *STAC API - Core* conformance class
<https://api.stacspec.org/v1.0.0-rc.2/core>. This requires a server to return from a root endpoint a valid
[STAC Catalog](../stac-spec/catalog-spec/catalog-spec.md) "landing page" that also includes a `conformsTo`
attribute with a string array value. Any API implementing this is considered a minimal, valid STAC API. Additionally,
a STAC API conforming conformance class (<https://api.stacspec.org/v1.0.0-rc.2/browseable>) must be structured
such that all Items in the catalog can be accessed by following `child` and `item` link relations.
attribute with a string array value. Any API implementing this is considered a minimal, valid STAC API.

## Core

Expand Down Expand Up @@ -66,35 +62,6 @@ that declare different conformance classes. This is useful when an entire catalo
support the *STAC API - Item Search* conformance class, perhaps because it uses multiple databases to store items,
but sub-catalogs whose items are all in one database can support search.

## Browseable

The Browseable conformance class (<https://api.stacspec.org/v1.0.0-rc.2/browseable>) provides a formal way
to advertise that all Items in the Catalog presented by a STAC API may be reached by following `child` and
`item` link relations. In a non-API STAC Catalog, all items must be reachable via these relations to be
considered in the catalog. With a STAC API Catalog, items are considered to be in the catalog if they are
accessible via `child` and `item` relations **or** search operations using either [STAC API - Features](../ogcapi-features/README.md) or
[STAC API - Item Search](../item-search/README.md) endpoints. When a STAC API Catalog has child
and item link relations, there is ambiguity in whether the same set of items accessible via
search operations
is also accessible via link relations. Browseable clarifies this by unambiguously advertising that
items available via search can also be accessed by following link relations.

Support for this "browse" mode of interaction via link relations is complementary to the dynamic search
capabilities defined in the [STAC API - Features](../ogcapi-features/README.md) and
[STAC API - Item Search](../item-search/README.md) conformance classes.
Conversely, a STAC API implementation may not support browsing, even though the root is a Catalog object,
if it does not have the appropriate `child` and `item` link relations to traverse over the objects in
the catalog.

Search and browse are complementary ways of interacting with the catalog, and allow users to iteratively interrogate the data
to discover what data is available through browse, and search to filter to only relevant data. Supporting both also opens up a catalog to
clients that are oriented towards reading non-API STAC catalogs
(e.g., [STAC Browser](https://github.com/radiantearth/stac-browser)) and those that are oriented towards
searchable STAC API catalogs
(e.g., [PySTAC Client](https://pystac-client.readthedocs.io/), [stac-nb](https://github.com/darrenwiens/stac-nb)).

Recommendations for supporting browse is discussed in [Structuring Catalog Hierarchies](#structuring-catalog-hierarchies).

## Link Relations

While the STAC definition of Link does not require the `type` field,
Expand Down Expand Up @@ -126,9 +93,6 @@ supported by this endpoint, e.g., `text/html`.
Additionally, `child` relations may exist to child Catalogs and Collections and `item` relations to Items. These
relations form a directed graph that enables traversal from a root catalog or collection to items.

If all Items in a Catalog can be accessed by traversing these links, the Browseable conformance class
<https://api.stacspec.org/v1.0.0-rc.2/browseable> should be advertised.

| **rel** | **href** | **Media Type** | **From** | **Description** |
| ------- | -------- | -------------------- | --------------- | -------------------------------------- |
| `child` | various | application/json | STAC API - Core | The child STAC Catalogs & Collections. |
Expand Down
2 changes: 0 additions & 2 deletions overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,6 @@ conformance URIs serve up a rendered HTML version of the corresponding OpenAPI d
| **Name** | **Specified in** | **Conformance URI** | **Description** |
| ---------------------- | ------------------------------------------- | ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- |
| STAC API - Core | [Core](core) | <https://api.stacspec.org/v1.0.0-rc.2/core> | Specifies the STAC Landing page `/`, communicating conformance and available endpoints. |
| STAC API - Browseable | [Core](core) | <https://api.stacspec.org/v1.0.0-rc.2/browseable> | Advertises all Items can be reached through `child` and `item` links, as they would be in a non-API Catalog. |
| STAC API - Item Search | [Item Search](item-search) | <https://api.stacspec.org/v1.0.0-rc.2/item-search> | Enables search of all STAC Item objects on the server, with the STAC `[/search](#stac-api-endpoints)` endpoint. |
| STAC API - Features | [Collections and Features](ogcapi-features) | <https://api.stacspec.org/v1.0.0-rc.2/ogcapi-features> | Specifies the use of OGC API - Features to serve STAC Item and Collection objects |
| STAC API - Collections | [Collections and Features](ogcapi-features) | <https://api.stacspec.org/v1.0.0-rc.2/collections> | Specifies the use of a subset of STAC API - Features to serve Collection objects |
Expand All @@ -145,7 +144,6 @@ The Landing Page will at least have the following `conformsTo` and `links`:
"type": "Catalog",
"conformsTo" : [
"https://api.stacspec.org/v1.0.0-rc.2/core",
"https://api.stacspec.org/v1.0.0-rc.2/browseable",
"https://api.stacspec.org/v1.0.0-rc.2/collections",
"https://api.stacspec.org/v1.0.0-rc.2/ogcapi-features",
"https://api.stacspec.org/v1.0.0-rc.2/item-search",
Expand Down

0 comments on commit a194d9f

Please sign in to comment.