Module stac_fastapi.core.catalogs_client¶
Catalogs client implementation for multi-tenant catalogs extension.
Variables¶
COLLECTIONS_INDEX
logger
Classes¶
CatalogsClient¶
class CatalogsClient(
database: stac_fastapi.core.base_database_logic.BaseDatabaseLogic,
catalog_serializer: stac_fastapi.core.serializers.CatalogSerializer = <class 'stac_fastapi.core.serializers.CatalogSerializer'>,
collection_serializer: stac_fastapi.core.serializers.CollectionSerializer = <class 'stac_fastapi.core.serializers.CollectionSerializer'>,
item_serializer: stac_fastapi.core.serializers.ItemSerializer = <class 'stac_fastapi.core.serializers.ItemSerializer'>,
core_client: Any = None,
transactions_client: Any = None
)
Catalogs client implementation for the multi-tenant catalogs extension.
This client implements the AsyncBaseCatalogsClient and AsyncCatalogsSearchClient interfaces and delegates to the database layer for all catalog operations.
Ancestors (in MRO)¶
- stac_fastapi_catalogs_extension.client.AsyncBaseCatalogsClient
- stac_fastapi_catalogs_extension.client.AsyncCatalogsSearchClient
- abc.ABC
Methods¶
catalog_search_get¶
def catalog_search_get(
self,
catalog_id: str,
collections: Optional[List[str]] = None,
ids: Optional[List[str]] = None,
bbox: Optional[List[float]] = None,
intersects: str | None = None,
datetime: str | None = None,
limit: int | None = None,
token: str | None = None,
request: starlette.requests.Request | None = None,
**kwargs
) -> stac_pydantic.item_collection.ItemCollection | starlette.responses.Response
Search items within a catalog using GET parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
| catalog_id | None | The catalog ID to search within. | None |
| collections | None | List of collection IDs to search within. | None |
| ids | None | List of item IDs to search for. | None |
| bbox | None | Bounding box to search within. | None |
| intersects | None | GeoJSON geometry to search within. | None |
| datetime | None | Datetime range to search within. | None |
| limit | None | Maximum number of results to return. | None |
| token | None | Pagination token. | None |
| request | None | FastAPI request object. | None |
| **kwargs | None | Search parameters from GET query string (contains extensions like 'filter'). | None |
Returns:
| Type | Description |
|---|---|
| None | ItemCollection with matching items. |
catalog_search_post¶
def catalog_search_post(
self,
catalog_id: str,
search_request: stac_fastapi.types.search.BaseSearchPostRequest,
request: starlette.requests.Request | None = None,
**kwargs
) -> stac_pydantic.item_collection.ItemCollection | starlette.responses.Response
Search items within a catalog and its descendants.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
| catalog_id | None | The catalog ID to search within. | None |
| search_request | None | The search request parameters. | None |
| request | None | FastAPI request object. | None |
| **kwargs | None | Additional keyword arguments. | None |
Returns:
| Type | Description |
|---|---|
| None | ItemCollection with matching items. |
Raises:
| Type | Description |
|---|---|
| HTTPException | If requested collections are outside catalog scope. |
create_catalog¶
def create_catalog(
self,
catalog: stac_pydantic.catalog.Catalog,
request: starlette.requests.Request | None = None,
**kwargs
) -> stac_pydantic.catalog.Catalog | starlette.responses.Response
Create a new catalog.
create_catalog_collection¶
def create_catalog_collection(
self,
catalog_id: str,
collection: stac_pydantic.collection.Collection | stac_fastapi_catalogs_extension.types.ObjectUri,
request: starlette.requests.Request | None = None,
**kwargs
) -> stac_pydantic.collection.Collection | starlette.responses.Response
Create a new collection or link an existing collection to catalog.
create_sub_catalog¶
def create_sub_catalog(
self,
catalog_id: str,
catalog: stac_pydantic.catalog.Catalog | stac_fastapi_catalogs_extension.types.ObjectUri,
request: starlette.requests.Request | None = None,
**kwargs
) -> stac_pydantic.catalog.Catalog | starlette.responses.Response
Create a new catalog or link an existing catalog as a sub-catalog.
delete_catalog¶
def delete_catalog(
self,
catalog_id: str,
request: starlette.requests.Request | None = None,
**kwargs
) -> None
Delete a catalog.
get_all_descendant_collections¶
def get_all_descendant_collections(
self,
catalog_id: str,
request: starlette.requests.Request | None = None,
**kwargs
) -> List[str]
BFS DAG crawl to find all descendant collections using parent_ids field.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
| catalog_id | None | The root catalog ID to start traversal from. | None |
| request | None | FastAPI request object. | None |
| **kwargs | None | Additional keyword arguments. | None |
Returns:
| Type | Description |
|---|---|
| None | List of all descendant collection IDs. |
Raises:
| Type | Description |
|---|---|
| NotFoundError | If the catalog does not exist. |
get_catalog¶
def get_catalog(
self,
catalog_id: str,
request: starlette.requests.Request | None = None,
**kwargs
) -> stac_pydantic.catalog.Catalog
Get a specific catalog by ID according to the Multi-Tenant specification.
get_catalog_children¶
def get_catalog_children(
self,
catalog_id: str,
limit: int | None = None,
token: str | None = None,
type: Optional[Literal['Catalog', 'Collection']] = None,
request: starlette.requests.Request | None = None,
filter_expr: str | None = None,
filter_lang: str | None = None,
**kwargs
) -> stac_fastapi_catalogs_extension.types.Children | starlette.responses.Response
Get all children (Catalogs and Collections) of a specific catalog.
get_catalog_collection¶
def get_catalog_collection(
self,
catalog_id: str,
collection_id: str,
request: starlette.requests.Request | None = None,
**kwargs
) -> stac_pydantic.collection.Collection | starlette.responses.Response
Get a specific collection from a catalog (Scoped Route).
get_catalog_collection_item¶
def get_catalog_collection_item(
self,
catalog_id: str,
collection_id: str,
item_id: str,
request: starlette.requests.Request | None = None,
**kwargs
) -> stac_pydantic.item.Item | starlette.responses.Response
Get a specific item from a collection in a catalog.
get_catalog_collection_items¶
def get_catalog_collection_items(
self,
catalog_id: str,
collection_id: str,
bbox: list[float] | None = None,
datetime: str | datetime.datetime | None = None,
limit: int | None = 10,
token: str | None = None,
request: starlette.requests.Request | None = None,
filter_expr: str | None = None,
filter_lang: str | None = None,
**kwargs
) -> stac_pydantic.item_collection.ItemCollection | starlette.responses.Response
Get items from a collection in a catalog with search support.
get_catalog_collections¶
def get_catalog_collections(
self,
catalog_id: str,
limit: int | None = None,
token: str | None = None,
request: starlette.requests.Request | None = None,
filter_expr: str | None = None,
filter_lang: str | None = None,
**kwargs
) -> stac_pydantic.api.collections.Collections | starlette.responses.Response
Get collections linked from a specific catalog.
get_catalog_conformance¶
def get_catalog_conformance(
self,
catalog_id: str,
request: starlette.requests.Request | None = None,
**kwargs
) -> dict | starlette.responses.Response
Get conformance classes specific to this sub-catalog.
SFEOS always enables the scoped search extension alongside the
catalogs extension, so its conformance classes are advertised here.
The transaction class is not: the catalogs extension merges in the
conformance classes of registered catalog extensions via
app.state.catalogs_conformance_classes, and the transaction
extension is only registered when transactions are enabled.
get_catalog_queryables¶
def get_catalog_queryables(
self,
catalog_id: str,
request: starlette.requests.Request | None = None,
**kwargs
) -> dict | starlette.responses.Response
Get queryable fields available for filtering in this sub-catalog.
get_catalogs¶
def get_catalogs(
self,
limit: int | None = None,
token: str | None = None,
request: starlette.requests.Request | None = None,
filter_expr: str | None = None,
filter_lang: str | None = None,
**kwargs
) -> stac_fastapi_catalogs_extension.types.Catalogs | starlette.responses.Response
Get all catalogs with pagination support.
get_sub_catalogs¶
def get_sub_catalogs(
self,
catalog_id: str,
limit: int | None = None,
token: str | None = None,
request: starlette.requests.Request | None = None,
filter_expr: str | None = None,
filter_lang: str | None = None,
**kwargs
) -> stac_fastapi_catalogs_extension.types.Catalogs | starlette.responses.Response
Get all sub-catalogs of a specific catalog with pagination.
unlink_catalog_collection¶
def unlink_catalog_collection(
self,
catalog_id: str,
collection_id: str,
request: starlette.requests.Request | None = None,
**kwargs
) -> None
Unlink a collection from a catalog.
unlink_sub_catalog¶
def unlink_sub_catalog(
self,
catalog_id: str,
sub_catalog_id: str,
request: starlette.requests.Request | None = None,
**kwargs
) -> None
Unlink a sub-catalog from its parent.
update_catalog¶
def update_catalog(
self,
catalog_id: str,
catalog: stac_pydantic.catalog.Catalog,
request: starlette.requests.Request | None = None,
**kwargs
) -> stac_pydantic.catalog.Catalog | starlette.responses.Response
Update an existing catalog.
update_catalog_collection¶
def update_catalog_collection(
self,
catalog_id: str,
collection_id: str,
collection: stac_pydantic.collection.Collection,
request: starlette.requests.Request | None = None,
**kwargs
) -> stac_pydantic.collection.Collection | starlette.responses.Response
Update a collection's metadata within a catalog context (Scoped Route).
After checking that the collection is linked to the catalog, this delegates to the core collection update, which keeps every catalog membership and applies the core id check and validation.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
| catalog_id | None | The ID of the catalog. | None |
| collection_id | None | The ID of the collection to update. | None |
| collection | None | The updated collection data. | None |
| request | None | FastAPI request object. | None |
| **kwargs | None | Additional keyword arguments. | None |
Returns:
| Type | Description |
|---|---|
| None | The updated collection. |
Raises:
| Type | Description |
|---|---|
| NotFoundError | If the catalog or collection is not found, or if the collection is not linked to the catalog. |
| HTTPException | If the body id differs from the URI id or the collection fails validation. |