Skip to content

Module stac_fastapi.api.models

Api request/response models.

Functions

create_get_request_model

def create_get_request_model(
    extensions,
    base_model: stac_fastapi.types.search.BaseSearchGetRequest = <class 'stac_fastapi.types.search.BaseSearchGetRequest'>
)

Wrap create_request_model to create the GET request model.

create_post_request_model

def create_post_request_model(
    extensions,
    base_model: stac_fastapi.types.search.BaseSearchPostRequest = <class 'stac_fastapi.types.search.BaseSearchPostRequest'>
)

Wrap create_request_model to create the POST request model.

create_request_model

def create_request_model(
    model_name='SearchGetRequest',
    base_model: Union[Type[pydantic.main.BaseModel], stac_fastapi.types.search.APIRequest] = <class 'stac_fastapi.types.search.BaseSearchGetRequest'>,
    extensions: Union[stac_fastapi.types.extension.ApiExtension, NoneType] = None,
    mixins: Union[pydantic.main.BaseModel, stac_fastapi.types.search.APIRequest, NoneType] = None,
    request_type: Union[str, NoneType] = 'GET'
) -> Union[Type[pydantic.main.BaseModel], stac_fastapi.types.search.APIRequest]

Create a pydantic model for validating request bodies.

Classes

CollectionUri

class CollectionUri(
    collection_id: str = Path(Ellipsis)
)

Delete collection.

Ancestors (in MRO)

  • stac_fastapi.types.search.APIRequest
  • abc.ABC

Descendants

  • stac_fastapi.api.models.ItemUri
  • stac_fastapi.api.models.ItemCollectionUri
  • stac_fastapi.extensions.core.transaction.PostItem

Methods

kwargs

def kwargs(
    self
) -> Dict

Transform api request params into format which matches the signature of the

endpoint.

EmptyRequest

class EmptyRequest(

)

Empty request.

Ancestors (in MRO)

  • stac_fastapi.types.search.APIRequest
  • abc.ABC

Methods

kwargs

def kwargs(
    self
) -> Dict

Transform api request params into format which matches the signature of the

endpoint.

GETPagination

class GETPagination(
    page: Union[str, NoneType] = None
)

Page based pagination for GET requests.

Ancestors (in MRO)

  • stac_fastapi.types.search.APIRequest
  • abc.ABC

Methods

kwargs

def kwargs(
    self
) -> Dict

Transform api request params into format which matches the signature of the

endpoint.

GETTokenPagination

class GETTokenPagination(
    token: Union[str, NoneType] = None
)

Token pagination for GET requests.

Ancestors (in MRO)

  • stac_fastapi.types.search.APIRequest
  • abc.ABC

Methods

kwargs

def kwargs(
    self
) -> Dict

Transform api request params into format which matches the signature of the

endpoint.

GeoJSONResponse

class GeoJSONResponse(
    content: 'typing.Any',
    status_code: 'int' = 200,
    headers: 'typing.Mapping[str, str] | None' = None,
    media_type: 'str | None' = None,
    background: 'BackgroundTask | None' = None
)

JSON with custom, vendor content-type.

Ancestors (in MRO)

  • starlette.responses.JSONResponse
  • starlette.responses.Response

Class variables

charset
media_type

Instance variables

headers

Methods

def delete_cookie(
    self,
    key: 'str',
    path: 'str' = '/',
    domain: 'str | None' = None,
    secure: 'bool' = False,
    httponly: 'bool' = False,
    samesite: "typing.Literal[('lax', 'strict', 'none')] | None" = 'lax'
) -> 'None'

init_headers

def init_headers(
    self,
    headers: 'typing.Mapping[str, str] | None' = None
) -> 'None'

render

def render(
    self,
    content: 'typing.Any'
) -> 'bytes'
def set_cookie(
    self,
    key: 'str',
    value: 'str' = '',
    max_age: 'int | None' = None,
    expires: 'datetime | str | int | None' = None,
    path: 'str' = '/',
    domain: 'str | None' = None,
    secure: 'bool' = False,
    httponly: 'bool' = False,
    samesite: "typing.Literal[('lax', 'strict', 'none')] | None" = 'lax'
) -> 'None'

ItemCollectionUri

class ItemCollectionUri(
    collection_id: str = Path(Ellipsis),
    limit: int = 10,
    bbox: str = None,
    datetime: Union[datetime.datetime, Tuple[datetime.datetime, datetime.datetime], Tuple[datetime.datetime, NoneType], Tuple[NoneType, datetime.datetime], NoneType] = None
)

Get item collection.

Ancestors (in MRO)

  • stac_fastapi.api.models.CollectionUri
  • stac_fastapi.types.search.APIRequest
  • abc.ABC

Methods

kwargs

def kwargs(
    self
) -> Dict

Transform api request params into format which matches the signature of the

endpoint.

ItemUri

class ItemUri(
    collection_id: str = Path(Ellipsis),
    item_id: str = Path(Ellipsis)
)

Delete item.

Ancestors (in MRO)

  • stac_fastapi.api.models.CollectionUri
  • stac_fastapi.types.search.APIRequest
  • abc.ABC

Descendants

  • stac_fastapi.extensions.core.transaction.PutItem

Methods

kwargs

def kwargs(
    self
) -> Dict

Transform api request params into format which matches the signature of the

endpoint.

JSONSchemaResponse

class JSONSchemaResponse(
    content: 'typing.Any',
    status_code: 'int' = 200,
    headers: 'typing.Mapping[str, str] | None' = None,
    media_type: 'str | None' = None,
    background: 'BackgroundTask | None' = None
)

JSON with custom, vendor content-type.

Ancestors (in MRO)

  • starlette.responses.JSONResponse
  • starlette.responses.Response

Class variables

charset
media_type

Instance variables

headers

Methods

def delete_cookie(
    self,
    key: 'str',
    path: 'str' = '/',
    domain: 'str | None' = None,
    secure: 'bool' = False,
    httponly: 'bool' = False,
    samesite: "typing.Literal[('lax', 'strict', 'none')] | None" = 'lax'
) -> 'None'

init_headers

def init_headers(
    self,
    headers: 'typing.Mapping[str, str] | None' = None
) -> 'None'

render

def render(
    self,
    content: 'typing.Any'
) -> 'bytes'
def set_cookie(
    self,
    key: 'str',
    value: 'str' = '',
    max_age: 'int | None' = None,
    expires: 'datetime | str | int | None' = None,
    path: 'str' = '/',
    domain: 'str | None' = None,
    secure: 'bool' = False,
    httponly: 'bool' = False,
    samesite: "typing.Literal[('lax', 'strict', 'none')] | None" = 'lax'
) -> 'None'

POSTPagination

class POSTPagination(
    __pydantic_self__,
    **data: Any
)

Page based pagination for POST requests.

Ancestors (in MRO)

  • pydantic.main.BaseModel
  • pydantic.utils.Representation

Class variables

Config

Static methods

construct

def construct(
    _fields_set: Union[ForwardRef('SetStr'), NoneType] = None,
    **values: Any
) -> 'Model'

Creates a new model setting dict and fields_set from trusted or pre-validated data.

Default values are respected, but no other validation is performed. Behaves as if Config.extra = 'allow' was set since it adds all passed values

from_orm

def from_orm(
    obj: Any
) -> 'Model'

parse_file

def parse_file(
    path: Union[str, pathlib.Path],
    *,
    content_type: 'unicode' = None,
    encoding: 'unicode' = 'utf8',
    proto: pydantic.parse.Protocol = None,
    allow_pickle: bool = False
) -> 'Model'

parse_obj

def parse_obj(
    obj: Any
) -> 'Model'

parse_raw

def parse_raw(
    b: Union[str, bytes],
    *,
    content_type: 'unicode' = None,
    encoding: 'unicode' = 'utf8',
    proto: pydantic.parse.Protocol = None,
    allow_pickle: bool = False
) -> 'Model'

schema

def schema(
    by_alias: bool = True,
    ref_template: 'unicode' = '#/definitions/{model}'
) -> 'DictStrAny'

schema_json

def schema_json(
    *,
    by_alias: bool = True,
    ref_template: 'unicode' = '#/definitions/{model}',
    **dumps_kwargs: Any
) -> 'unicode'

update_forward_refs

def update_forward_refs(
    **localns: Any
) -> None

Try to update ForwardRefs on fields based on this Model, globalns and localns.

validate

def validate(
    value: Any
) -> 'Model'

Methods

copy

def copy(
    self: 'Model',
    *,
    include: Union[ForwardRef('AbstractSetIntStr'), ForwardRef('MappingIntStrAny'), NoneType] = None,
    exclude: Union[ForwardRef('AbstractSetIntStr'), ForwardRef('MappingIntStrAny'), NoneType] = None,
    update: Union[ForwardRef('DictStrAny'), NoneType] = None,
    deep: bool = False
) -> 'Model'

Duplicate a model, optionally choose which fields to include, exclude and change.

Parameters:

Name Type Description Default
include None fields to include in new model None
exclude None fields to exclude from new model, as with values this takes precedence over include None
update None values to change/add in the new model. Note: the data is not validated before creating
the new model: you should trust this data
None
deep None set to True to make a deep copy of the model None

Returns:

Type Description
None new model instance

dict

def dict(
    self,
    *,
    include: Union[ForwardRef('AbstractSetIntStr'), ForwardRef('MappingIntStrAny'), NoneType] = None,
    exclude: Union[ForwardRef('AbstractSetIntStr'), ForwardRef('MappingIntStrAny'), NoneType] = None,
    by_alias: bool = False,
    skip_defaults: Union[bool, NoneType] = None,
    exclude_unset: bool = False,
    exclude_defaults: bool = False,
    exclude_none: bool = False
) -> 'DictStrAny'

Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.

json

def json(
    self,
    *,
    include: Union[ForwardRef('AbstractSetIntStr'), ForwardRef('MappingIntStrAny'), NoneType] = None,
    exclude: Union[ForwardRef('AbstractSetIntStr'), ForwardRef('MappingIntStrAny'), NoneType] = None,
    by_alias: bool = False,
    skip_defaults: Union[bool, NoneType] = None,
    exclude_unset: bool = False,
    exclude_defaults: bool = False,
    exclude_none: bool = False,
    encoder: Union[Callable[[Any], Any], NoneType] = None,
    models_as_dict: bool = True,
    **dumps_kwargs: Any
) -> 'unicode'

Generate a JSON representation of the model, include and exclude arguments as per dict().

encoder is an optional function to supply as default to json.dumps(), other arguments as per json.dumps().

POSTTokenPagination

class POSTTokenPagination(
    __pydantic_self__,
    **data: Any
)

Token pagination model for POST requests.

Ancestors (in MRO)

  • pydantic.main.BaseModel
  • pydantic.utils.Representation

Class variables

Config

Static methods

construct

def construct(
    _fields_set: Union[ForwardRef('SetStr'), NoneType] = None,
    **values: Any
) -> 'Model'

Creates a new model setting dict and fields_set from trusted or pre-validated data.

Default values are respected, but no other validation is performed. Behaves as if Config.extra = 'allow' was set since it adds all passed values

from_orm

def from_orm(
    obj: Any
) -> 'Model'

parse_file

def parse_file(
    path: Union[str, pathlib.Path],
    *,
    content_type: 'unicode' = None,
    encoding: 'unicode' = 'utf8',
    proto: pydantic.parse.Protocol = None,
    allow_pickle: bool = False
) -> 'Model'

parse_obj

def parse_obj(
    obj: Any
) -> 'Model'

parse_raw

def parse_raw(
    b: Union[str, bytes],
    *,
    content_type: 'unicode' = None,
    encoding: 'unicode' = 'utf8',
    proto: pydantic.parse.Protocol = None,
    allow_pickle: bool = False
) -> 'Model'

schema

def schema(
    by_alias: bool = True,
    ref_template: 'unicode' = '#/definitions/{model}'
) -> 'DictStrAny'

schema_json

def schema_json(
    *,
    by_alias: bool = True,
    ref_template: 'unicode' = '#/definitions/{model}',
    **dumps_kwargs: Any
) -> 'unicode'

update_forward_refs

def update_forward_refs(
    **localns: Any
) -> None

Try to update ForwardRefs on fields based on this Model, globalns and localns.

validate

def validate(
    value: Any
) -> 'Model'

Methods

copy

def copy(
    self: 'Model',
    *,
    include: Union[ForwardRef('AbstractSetIntStr'), ForwardRef('MappingIntStrAny'), NoneType] = None,
    exclude: Union[ForwardRef('AbstractSetIntStr'), ForwardRef('MappingIntStrAny'), NoneType] = None,
    update: Union[ForwardRef('DictStrAny'), NoneType] = None,
    deep: bool = False
) -> 'Model'

Duplicate a model, optionally choose which fields to include, exclude and change.

Parameters:

Name Type Description Default
include None fields to include in new model None
exclude None fields to exclude from new model, as with values this takes precedence over include None
update None values to change/add in the new model. Note: the data is not validated before creating
the new model: you should trust this data
None
deep None set to True to make a deep copy of the model None

Returns:

Type Description
None new model instance

dict

def dict(
    self,
    *,
    include: Union[ForwardRef('AbstractSetIntStr'), ForwardRef('MappingIntStrAny'), NoneType] = None,
    exclude: Union[ForwardRef('AbstractSetIntStr'), ForwardRef('MappingIntStrAny'), NoneType] = None,
    by_alias: bool = False,
    skip_defaults: Union[bool, NoneType] = None,
    exclude_unset: bool = False,
    exclude_defaults: bool = False,
    exclude_none: bool = False
) -> 'DictStrAny'

Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.

json

def json(
    self,
    *,
    include: Union[ForwardRef('AbstractSetIntStr'), ForwardRef('MappingIntStrAny'), NoneType] = None,
    exclude: Union[ForwardRef('AbstractSetIntStr'), ForwardRef('MappingIntStrAny'), NoneType] = None,
    by_alias: bool = False,
    skip_defaults: Union[bool, NoneType] = None,
    exclude_unset: bool = False,
    exclude_defaults: bool = False,
    exclude_none: bool = False,
    encoder: Union[Callable[[Any], Any], NoneType] = None,
    models_as_dict: bool = True,
    **dumps_kwargs: Any
) -> 'unicode'

Generate a JSON representation of the model, include and exclude arguments as per dict().

encoder is an optional function to supply as default to json.dumps(), other arguments as per json.dumps().