Skip to content

feat: add multi-tenant catalogs extension to STAC runtime#110

Merged
hrodmn merged 3 commits into
mainfrom
feat/stac-catalogs-extension
Jun 26, 2026
Merged

feat: add multi-tenant catalogs extension to STAC runtime#110
hrodmn merged 3 commits into
mainfrom
feat/stac-catalogs-extension

Conversation

@hrodmn

@hrodmn hrodmn commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

This adds the new Multi-Tenant Catalogs STAC API Extension to the MAAP STAC APIs (public and DPS).

The new catalog polyhierarchy capability makes it possible to organize the STAC Browser view of the catalogs and collections too.

image

Here is a view of the STAC browser landing page in the local docker network:

image

And With the polyhierarchy capability we could create catalogs for each user/team. Here are the user catalogs that contain each user's own collections:

image

And finally the collections for a single user:
image

cc @sujen1412

resolves #102

@hrodmn hrodmn requested a review from jjfrench June 24, 2026 17:07
@hrodmn hrodmn self-assigned this Jun 24, 2026
@sujen1412

Copy link
Copy Markdown

This is amazing, do we have documentation/diagram on how this would work for a user on MAAP ?
We can put a diagram in our google doc for the requirements.

@hrodmn

hrodmn commented Jun 24, 2026

Copy link
Copy Markdown
Contributor Author

do we have documentation/diagram on how this would work for a user on MAAP ?

When a user creates their own catalog in the STAC collection management UI in the MAAP Console or in a Jupyter widget (that doesn't exist yet) it will get posted with the parent_ids field populated which is just a list of catalogs to which the collection will belong. The user experience could go a few ways but I think the UI could have them check boxes for which catalogs they want to include it in from a list:

  • user-specific catalog based on username e.g. /catalogs/my-username
  • team catalog(s) e.g. /catalogs/geotrees
  • project catalog(s) /catalogs/boreal-biomass

I'll wire up a diagram to illustrate how the whole DPS catalog and subcatalogs could be organized.

@sujen1412

Copy link
Copy Markdown

Thank you. Is there an API that the console or the Jupyter widget would end up using for creating this particular feature?

Can this api be registered as a client in keycloak so that the MAAP api can use the jwt to perform actions on the users behalf ?

@hrodmn

hrodmn commented Jun 25, 2026

Copy link
Copy Markdown
Contributor Author

Is there an API that the console or the Jupyter widget would end up using for creating this particular feature?

Yes it is all part of the existing STAC API. In this PR we are adding (auth protected) POST/PUT/DELETE routes for the /catalogs endpoints that enable linking collections and catalogs (and sub-catalogs). You can also POST a collection with the parent_ids field populated and it will create the link between a collection and the provided catalog ids so we can do that when the user creates a collection all in one API call.

Can this api be registered as a client in keycloak so that the MAAP api can use the jwt to perform actions on the users behalf ?

Yes, but it's not implemented yet. I will pursue that in a follow-up PR.

@hrodmn hrodmn merged commit f63c429 into main Jun 26, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Enable Multi-Tenant Catalogs Extension in STAC API runtime

3 participants