Skip to content

Module stac_fastapi.core.extensions.catalogs

Catalogs extension.

Variables

COLLECTIONS_INDEX
logger

Classes

Catalogs

class Catalogs(
    /,
    *args,
    **kwargs
)

Catalogs endpoint response.

Similar to Collections but for catalogs.

Ancestors (in MRO)

  • builtins.dict

Methods

clear

def clear(
    ...
)

D.clear() -> None. Remove all items from D.

copy

def copy(
    ...
)

D.copy() -> a shallow copy of D

fromkeys

def fromkeys(
    iterable,
    value=None,
    /
)

Create a new dictionary with keys from iterable and values set to value.

get

def get(
    self,
    key,
    default=None,
    /
)

Return the value for key if key is in the dictionary, else default.

items

def items(
    ...
)

D.items() -> a set-like object providing a view on D's items

keys

def keys(
    ...
)

D.keys() -> a set-like object providing a view on D's keys

pop

def pop(
    ...
)

D.pop(k[,d]) -> v, remove specified key and return the corresponding value.

If the key is not found, return the default if given; otherwise, raise a KeyError.

popitem

def popitem(
    self,
    /
)

Remove and return a (key, value) pair as a 2-tuple.

Pairs are returned in LIFO (last-in, first-out) order. Raises KeyError if the dict is empty.

setdefault

def setdefault(
    self,
    key,
    default=None,
    /
)

Insert key with a value of default if key is not in the dictionary.

Return the value for key if key is in the dictionary, else default.

update

def update(
    ...
)

D.update([E, ]**F) -> None. Update D from dict/iterable E and F.

If E is present and has a .keys() method, then does: for k in E: D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]

values

def values(
    ...
)

D.values() -> an object providing a view on D's values

CatalogsExtension

class CatalogsExtension(
    schema_href: Optional[str] = None,
    client: stac_fastapi.types.core.BaseCoreClient = None,
    settings: dict = NOTHING,
    conformance_classes: List[str] = NOTHING,
    router: fastapi.routing.APIRouter = NOTHING,
    response_class: Type[starlette.responses.Response] = <class 'starlette.responses.JSONResponse'>
)

Catalogs Extension.

The Catalogs extension adds a /catalogs endpoint that returns a list of all catalogs in the database, similar to how /collections returns a list of collections.

Ancestors (in MRO)

  • stac_fastapi.types.extension.ApiExtension
  • abc.ABC

Class variables

GET
POST

Methods

catalogs

def catalogs(
    self,
    request: starlette.requests.Request,
    limit: Optional[int] = Query(10),
    token: Optional[str] = Query(None)
) -> stac_fastapi.core.extensions.catalogs.Catalogs

Get all catalogs with pagination support.

Parameters:

Name Type Description Default
request None Request object. None
limit None The maximum number of catalogs to return (page size). Defaults to 10. 10
token None Pagination token for the next page of results. None

Returns:

Type Description
None Catalogs object containing catalogs and pagination links.

create_catalog

def create_catalog(
    self,
    catalog: stac_fastapi.core.models.Catalog,
    request: starlette.requests.Request
) -> stac_fastapi.core.models.Catalog

Create a new catalog.

Parameters:

Name Type Description Default
catalog None The catalog to create. None
request None Request object. None

Returns:

Type Description
None The created catalog.

create_catalog_collection

def create_catalog_collection(
    self,
    catalog_id: str,
    collection: stac_pydantic.collection.Collection,
    request: starlette.requests.Request
) -> stac_fastapi.types.stac.Collection

Create a new collection and link it to a specific catalog.

Parameters:

Name Type Description Default
catalog_id None The ID of the catalog to link the collection to. None
collection None The collection to create. None
request None Request object. None

Returns:

Type Description
None The created collection.

Raises:

Type Description
HTTPException If the catalog is not found or collection creation fails.

delete_catalog

def delete_catalog(
    self,
    catalog_id: str,
    request: starlette.requests.Request,
    cascade: bool = Query(False)
) -> None

Delete a catalog.

Parameters:

Name Type Description Default
catalog_id None The ID of the catalog to delete. None
request None Request object. None
cascade None If true, delete all collections linked to this catalog.
If false, only delete the catalog.
None

Returns:

Type Description
None None (204 No Content)

Raises:

Type Description
HTTPException If the catalog is not found.

delete_catalog_collection

def delete_catalog_collection(
    self,
    catalog_id: str,
    collection_id: str,
    request: starlette.requests.Request
) -> None

Delete a collection from a catalog.

If the collection has multiple parent catalogs, only removes this catalog from the parent_ids. If this is the only parent catalog, deletes the collection entirely.

Parameters:

Name Type Description Default
catalog_id None The ID of the catalog. None
collection_id None The ID of the collection. None
request None Request object. None

Raises:

Type Description
HTTPException If the catalog or collection is not found, or if the
collection does not belong to the catalog.

get_catalog

def get_catalog(
    self,
    catalog_id: str,
    request: starlette.requests.Request
) -> stac_fastapi.core.models.Catalog

Get a specific catalog by ID.

Parameters:

Name Type Description Default
catalog_id None The ID of the catalog to retrieve. None
request None Request object. None

Returns:

Type Description
None The requested catalog.

get_catalog_children

def get_catalog_children(
    self,
    catalog_id: str,
    request: starlette.requests.Request,
    limit: int = 10,
    token: str = None,
    type: Optional[str] = Query(None)
) -> Dict[str, Any]

Get all children (Catalogs and Collections) of a specific catalog.

This is a 'Union' endpoint that returns mixed content types.

get_catalog_collection

def get_catalog_collection(
    self,
    catalog_id: str,
    collection_id: str,
    request: starlette.requests.Request
) -> stac_fastapi.types.stac.Collection

Get a specific collection from a catalog.

Parameters:

Name Type Description Default
catalog_id None The ID of the catalog. None
collection_id None The ID of the collection. None
request None Request object. None

Returns:

Type Description
None The requested collection.

get_catalog_collection_item

def get_catalog_collection_item(
    self,
    catalog_id: str,
    collection_id: str,
    item_id: str,
    request: starlette.requests.Request
) -> stac_fastapi.types.stac.Item

Get a specific item from a collection in a catalog.

Parameters:

Name Type Description Default
catalog_id None The ID of the catalog. None
collection_id None The ID of the collection. None
item_id None The ID of the item. None
request None Request object. None

Returns:

Type Description
None The requested item.

get_catalog_collection_items

def get_catalog_collection_items(
    self,
    catalog_id: str,
    collection_id: str,
    request: starlette.requests.Request,
    bbox: Optional[List[float]] = None,
    datetime: Optional[str] = None,
    limit: Optional[int] = None,
    sortby: Optional[str] = None,
    filter_expr: Optional[str] = None,
    filter_lang: Optional[str] = None,
    token: Optional[str] = None,
    query: Optional[str] = None,
    fields: Optional[List[str]] = None
) -> stac_fastapi.types.stac.ItemCollection

Get items from a collection in a catalog.

Parameters:

Name Type Description Default
catalog_id None The ID of the catalog. None
collection_id None The ID of the collection. None
request None Request object. None
bbox None Optional bounding box filter. None
datetime None Optional datetime or interval filter. None
limit None Optional page size. None
sortby None Optional sort specification. None
filter_expr None Optional filter expression. None
filter_lang None Optional filter language. None
token None Optional pagination token. None
query None Optional query string. None
fields None Optional fields to include or exclude. None

Returns:

Type Description
None ItemCollection containing items from the collection.

get_catalog_collections

def get_catalog_collections(
    self,
    catalog_id: str,
    request: starlette.requests.Request
) -> stac_fastapi.types.stac.Collections

Get collections linked from a specific catalog.

Parameters:

Name Type Description Default
catalog_id None The ID of the catalog. None
request None Request object. None

Returns:

Type Description
None Collections object containing collections linked from the catalog.

get_request_model

def get_request_model(
    self,
    verb: str = 'GET'
) -> Optional[pydantic.main.BaseModel]

Return the request model for the extension.method.

The model can differ based on HTTP verb

register

def register(
    self,
    app: fastapi.applications.FastAPI,
    settings=None
) -> None

Register the extension with a FastAPI application.

Parameters:

Name Type Description Default
app None target FastAPI application. None
settings None extension settings (unused for now). None