Skip to content

Commit d87813d

Browse files
committed
Clarify when to include extensions in stac_extensions
1 parent 7be086c commit d87813d

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

extensions/README.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
- [Overview](#overview)
44
- [General Conventions](#general-conventions)
5+
- [The `stac_extensions` property](#the-stac_extensions-property)
56
- [Stable STAC Extensions](#stable-stac-extensions)
67
- [Community Extensions](#community-extensions)
78
- [Extension Maturity](#extension-maturity)
@@ -43,6 +44,25 @@ Each extension has at least one *owner*. You can find extension owners in each e
4344
3. Additional attributes relating to a [Catalog](../catalog-spec/catalog-spec.md) or
4445
[Collection](../collection-spec/collection-spec.md) should be added to the root of the object.
4546

47+
## The `stac_extensions` property
48+
49+
[Catalog](../catalog-spec/catalog-spec.md#stac_extensions), [Collection](../collection-spec/collection-spec.md#stac_extensions) and
50+
[Item](../item-spec/item-spec.md#stac_extensions) objects have a `stac_extensions` property which contain URLs to JSON Schemas used to
51+
validate the implementation of an extension. These JSON Schema URLs act as identifiers for specific version of the extension that the
52+
object implements. The logic for when an object should list an extension JSON Schema URL (referred to as the extension ID) in it's
53+
`stac_extension` property is as follows:
54+
55+
- If the object directly implements the extension, the `stac_extensions` property of that object should contain the extension ID.
56+
- If an Asset implements properties of the extension, then `stac_extensions` property of the Item or Collection which holds that
57+
Asset should contain the extension ID.
58+
- If a Collection [summary](../collection-spec/collection-spec.md#summaries) contains Item properties that implement an extension, then
59+
the `stac_extensions` property of that Collection should list the extension ID. For example, if a Collection `summaries` property
60+
contains a summary of `eo:bands`, then that Collection should have the EO extension JSON Schema URL in the `stac_extensions` property.
61+
- If an object implements an extension that results in properties from a separate extension to be referenced, then the latter extension
62+
ID should be included in the `stac_extension` property for that object. For example, if a Collection implements the
63+
[item_assets](https://github.com/stac-extensions/item-assets) extension, and in the `item_assets` property there is an Asset Definition
64+
which includes `eo:bands`, then the EO extension ID should be listed in that Collection's `stac_extensions` property.
65+
4666
## Stable STAC Extensions
4767

4868
These extensions are considered stable and are widely used in many production implementations. As additional extensions advance

0 commit comments

Comments
 (0)