Skip to content

request

stac_fastapi.extensions.core.fields.request

Request models for the fields extension.

FieldsExtensionGetRequest

Bases: APIRequest

Additional fields for the GET request.

Source code in stac_fastapi/extensions/core/fields/request.py
62
63
64
65
66
@attr.s
class FieldsExtensionGetRequest(APIRequest):
    """Additional fields for the GET request."""

    fields: Optional[List[str]] = attr.ib(default=None, converter=_fields_converter)

FieldsExtensionPostRequest

Bases: BaseModel

Additional fields and schema for the POST request.

Source code in stac_fastapi/extensions/core/fields/request.py
69
70
71
72
73
74
75
class FieldsExtensionPostRequest(BaseModel):
    """Additional fields and schema for the POST request."""

    fields: Optional[PostFieldsExtension] = Field(
        PostFieldsExtension(),
        description="Include or exclude fields from items body.",
    )

PostFieldsExtension

Bases: BaseModel

FieldsExtension.

Attributes:

Source code in stac_fastapi/extensions/core/fields/request.py
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
class PostFieldsExtension(BaseModel):
    """FieldsExtension.

    Attributes:
        include: set of fields to include.
        exclude: set of fields to exclude.
    """

    include: Optional[Set[str]] = set()
    exclude: Optional[Set[str]] = set()

    @staticmethod
    def _get_field_dict(fields: Optional[Set[str]]) -> Dict:
        """Pydantic include/excludes notation.

        Internal method to create a dictionary for advanced include or exclude
        of pydantic fields on model export
        Ref: https://pydantic-docs.helpmanual.io/usage/exporting_models/#advanced-include-and-exclude
        """
        field_dict = {}
        for field in fields or []:
            if "." in field:
                parent, key = field.split(".")
                if parent not in field_dict:
                    field_dict[parent] = {key}
                else:
                    if field_dict[parent] is not ...:
                        field_dict[parent].add(key)
            else:
                field_dict[field] = ...  # type:ignore

        return field_dict