Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
b8fb415
add redis deps to docs
jonhealy1 Nov 25, 2025
d5087fd
add very basic /catalogs route
jonhealy1 Nov 28, 2025
7724f2f
Merge branch 'main' into enable-catalog-route
jonhealy1 Nov 28, 2025
e516bd5
route scratch
jonhealy1 Nov 29, 2025
2e14974
add tests
jonhealy1 Dec 2, 2025
6cbea93
add item collections routes etc
jonhealy1 Dec 2, 2025
83f779d
item collection tests
jonhealy1 Dec 2, 2025
cf5f471
update changelog
jonhealy1 Dec 2, 2025
66f5cc5
Update readme
jonhealy1 Dec 2, 2025
4232cd1
Merge branch 'main' into add-catalog-route
jonhealy1 Dec 2, 2025
9d8e600
add pr number
jonhealy1 Dec 2, 2025
7e72947
update env var names
jonhealy1 Dec 3, 2025
a5354ab
pagination, limit fix for catalogs
jonhealy1 Dec 3, 2025
530c898
add warning, todo
jonhealy1 Dec 3, 2025
290bfb6
update conformance link
jonhealy1 Dec 3, 2025
310ec6a
improve missing collections error msgng
jonhealy1 Dec 3, 2025
c0c4341
allow sorting catalogs on title
jonhealy1 Dec 3, 2025
bc18554
return list of catalogs
jonhealy1 Dec 3, 2025
641823e
add more robust url parsing
jonhealy1 Dec 3, 2025
6e9a653
Merge branch 'main' into add-catalog-route
jonhealy1 Dec 4, 2025
d823914
post collection to catalog
jonhealy1 Dec 4, 2025
b77f991
delete catalog
jonhealy1 Dec 4, 2025
8b20bd5
remove catalog links
jonhealy1 Dec 4, 2025
455e362
Merge branch 'main' into add-catalog-route
jonhealy1 Dec 4, 2025
11e7a4e
delete collection from catalog
jonhealy1 Dec 8, 2025
cfdcfc1
ensure parent ids are removed
jonhealy1 Dec 9, 2025
ec87371
Merge branch 'main' into add_parent_ids
jonhealy1 Dec 9, 2025
521b311
update changelog
jonhealy1 Dec 9, 2025
5c72e9a
update latest news
jonhealy1 Dec 9, 2025
583837d
changelog phrasing
jonhealy1 Dec 9, 2025
3c88f64
update readme for collections w multi parents
jonhealy1 Dec 9, 2025
e750b74
update latest news
jonhealy1 Dec 9, 2025
8ff0fc8
Merge branch 'main' into add_parent_ids
jonhealy1 Dec 9, 2025
144ee74
update stac-fastapi version for readme button
jonhealy1 Dec 9, 2025
48f2d45
Merge branch 'add_parent_ids' of https://github.com/jonhealy1/stac-fa…
jonhealy1 Dec 9, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.

### Added

- Added catalogs route support to enable federated hierarchical catalog browsing and navigation in the STAC API. [#547](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/547)
- Added optional `/catalogs` route support to enable federated hierarchical catalog browsing and navigation. [#547](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/547)
- Added DELETE `/catalogs/{catalog_id}/collections/{collection_id}` endpoint to support removing collections from catalogs. When a collection belongs to multiple catalogs, it removes only the specified catalog from the collection's parent_ids. When a collection belongs to only one catalog, the collection is deleted entirely. [#554](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/554)
- Added `parent_ids` internal field to collections to support multi-catalog hierarchies. Collections can now belong to multiple catalogs, with parent catalog IDs stored in this field for efficient querying and management. [#554](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/554)

### Changed

Expand Down
10 changes: 9 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
[![GitHub forks](https://img.shields.io/github/forks/stac-utils/stac-fastapi-elasticsearch-opensearch.svg?color=blue)](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/network/members)
[![PyPI version](https://img.shields.io/pypi/v/stac-fastapi-elasticsearch.svg?color=blue)](https://pypi.org/project/stac-fastapi-elasticsearch/)
[![STAC](https://img.shields.io/badge/STAC-1.1.0-blue.svg)](https://github.com/radiantearth/stac-spec/tree/v1.1.0)
[![stac-fastapi](https://img.shields.io/badge/stac--fastapi-6.0.0-blue.svg)](https://github.com/stac-utils/stac-fastapi)
[![stac-fastapi](https://img.shields.io/badge/stac--fastapi-6.1.1-blue.svg)](https://github.com/stac-utils/stac-fastapi)

## Sponsors & Supporters

Expand All @@ -28,6 +28,7 @@ The following organizations have contributed time and/or funding to support the

## Latest News

- **12/09/2025:** **Feature Merge: Federated Catalogs.** The [`Catalogs Endpoint`](https://github.com/Healy-Hyperspatial/stac-api-extensions-catalogs-endpoint) extension is now in main! This enables a registry of catalogs and supports **poly-hierarchy** (collections belonging to multiple catalogs simultaneously). Enable it via `ENABLE_CATALOGS_EXTENSION`. _Coming next: Support for nested sub-catalogs._
- **11/07/2025:** 🌍 The SFEOS STAC Viewer is now available at: https://healy-hyperspatial.github.io/sfeos-web. Use this site to examine your data and test your STAC API!
- **10/24/2025:** Added `previous_token` pagination using Redis for efficient navigation. This feature allows users to navigate backwards through large result sets by storing pagination state in Redis. To use this feature, ensure Redis is configured (see [Redis for navigation](#redis-for-navigation)) and set `REDIS_ENABLE=true` in your environment.
- **10/23/2025:** The `EXCLUDED_FROM_QUERYABLES` environment variable was added to exclude fields from the `queryables` endpoint. See [docs](#excluding-fields-from-queryables).
Expand Down Expand Up @@ -239,6 +240,7 @@ This implementation follows the [STAC API Catalogs Extension](https://github.com
### Features

- **Hierarchical Navigation**: Browse catalogs and sub-catalogs in a parent-child relationship structure
- **Multi-Catalog Collections**: Collections can belong to multiple catalogs simultaneously, enabling flexible organizational hierarchies
- **Collection Discovery**: Access collections within specific catalog contexts
- **STAC API Compliance**: Follows STAC specification for catalog objects and linking
- **Flexible Querying**: Support for standard STAC API query parameters when browsing collections within catalogs
Expand All @@ -252,6 +254,7 @@ This implementation follows the [STAC API Catalogs Extension](https://github.com
- **GET `/catalogs/{catalog_id}/collections`**: Retrieve collections within a specific catalog
- **POST `/catalogs/{catalog_id}/collections`**: Create a new collection within a specific catalog
- **GET `/catalogs/{catalog_id}/collections/{collection_id}`**: Retrieve a specific collection within a catalog
- **DELETE `/catalogs/{catalog_id}/collections/{collection_id}`**: Delete a collection from a catalog (removes parent_id if multiple parents exist, deletes collection if it's the only parent)
- **GET `/catalogs/{catalog_id}/collections/{collection_id}/items`**: Retrieve items within a collection in a catalog context
- **GET `/catalogs/{catalog_id}/collections/{collection_id}/items/{item_id}`**: Retrieve a specific item within a catalog context

Expand Down Expand Up @@ -292,6 +295,11 @@ curl "http://localhost:8081/catalogs/earth-observation/collections/sentinel-2/it
# Get specific item within a catalog
curl "http://localhost:8081/catalogs/earth-observation/collections/sentinel-2/items/S2A_20231015_123456"

# Delete a collection from a catalog
# If the collection has multiple parent catalogs, only removes this catalog from parent_ids
# If this is the only parent catalog, deletes the collection entirely
curl -X DELETE "http://localhost:8081/catalogs/earth-observation/collections/sentinel-2"

# Delete a catalog (collections remain intact)
curl -X DELETE "http://localhost:8081/catalogs/earth-observation"

Expand Down
Loading