Changelog¶
Unreleased¶
Fixed¶
- fixed typing of base_model and mixins parameters (#852)
Changed¶
- switch to pyproject.toml for package metadata
- use
uvfor project managment - add python 3.14 support
6.0.0 - 2025-06-19¶
Changed¶
- move
transactionclients and models tostac_fastapi.extensionsub-module - Add Item and Collection
PATCHendpoints with support for RFC 6902 and RFC 7396 in theTransactionExtension - remove support of
cql-jsonin Filter extension (#840) - rename filter extension
FilterConformanceClassesvalues and change the URLs: BASIC_SPATIAL_OPERATORS->BASIC_SPATIAL_FUNCTIONSTEMPORAL_OPERATORS->TEMPORAL_FUNCTIONSSPATIAL_OPERATORS->SPATIAL_FUNCTIONSARRAYS->ARRAY_FUNCTIONSACCENT_CASE_INSENSITIVE_COMPARISON->CASE_INSENSITIVE_COMPARISON
Added¶
- add new values to filter extension
FilterConformanceClasses ACCENT_INSENSITIVE_COMPARISONBASIC_SPATIAL_FUNCTIONS_PLUS
Fixed¶
- add
py.typedto package distributions (#842) - update/fix type informations (#842)
- pin
stac_pydanticto>=3.3.0for the correct import path ofstac_pydantic.shared.SearchDatetime(#844)
5.2.1 - 2025-04-18¶
Fixed¶
- avoid future deprecation for pydantic.Field and use
json_schema_extrainstead ofopenapi_examples - use
orjsonbased JSONResponse when available - changed from
AssertionErrortoHTTPExceptionfor bbox parsing exceptions - update
$schemain Filter's extension client responses to match OGC Feature specification
Added¶
- add response model for
/_mgmt/healthendpoint
5.2.0 - 2025-04-18¶
Fixed¶
- Remove defaults in OpenAPI schemas
- Type Hints for TypedDict
Added¶
- add
enable_direct_responsesettings to by-pass Pydantic validation and FastAPI serialization for responses - add
/_mgmt/healthendpoint (readiness) andhealth_check: Callable[[], [Dict]optional attribute inStacApiclass
5.1.1 - 2025-03-17¶
Fixed¶
- allow bbox with 6 coordinates (3D) in
GETrequests
5.1.0 - 2025-03-07¶
Added¶
- titles in
Landingpage links
Changed¶
- remove
childlinks (collections) in landing page response
5.0.3 - 2025-03-03¶
Added¶
- added descriptive message to
types.search.str2bboxlength assert
Fixed¶
- fix collection-search POST request model:
- fix pydantic model to make sure class variables
_start_dateand_end_datenot edited (ported from stac-pydantic) - fix bbox validation to allow anti-meridian crossing (ported from stac-pydantic)
5.0.2 - 2025-01-30¶
Fixed¶
- forward
prefixtoItemCollectionFilterExtension.router
5.0.1 - 2025-01-30¶
Fixed¶
- add
Queryableslinks whenSearchFilterExtensionis enabled
5.0.0 - 2025-01-30¶
Changed¶
-
refactored conformance classes for extensions
-
renamed
collection_search.ConformanceClasses->collection_search.CollectionSearchConformanceClasses - removed
FREETEXT,FILTER,QUERY,SORTandFIELDSentries from theCollectionSearchConformanceClassesEnum (and moved to each extension's Enum) - changed
collection_search.CollectionSearchPostExtension.from_extension(ext)to use the conformance classes from the input extensions to derive the output conformance classes. - added
fields.FieldsConformanceClassesEnum - renamed
filter.FilterConformanceClasses.FEATURES_FILTER->filter.FilterConformanceClasses.ITEMS - renamed
filter.FilterConformanceClasses.ITEM_SEARCH_FILTER->filter.FilterConformanceClasses.SEARCH - added
filter.FilterConformanceClasses.COLLECTIONS - added
filter.SearchFilterExtension,filter.ItemCollectionFilterExtensionandfilter.CollectionSearchFilterExtensionendpoint specific extensions - removed
FreeTextConformanceClasses.COLLECTIONSandFreeTextConformanceClasses.ITEMSinFreeTextExtensionandFreeTextAdvancedExtensiondefault conformances classes - added
query.QueryConformanceClassesEnum -
added
SortConformanceClassesEnum -
removed
StacApi.customize_openapimethod - reordered
StacApiattributes (movedtitle,api_versionanddescriptionbeforeapp)
Added¶
- forward
StacApi.title,StacApi.api_versionandStac.Api.descriptionto the FastAPI application
4.0.1 - 2025-01-23¶
Changed¶
- sort conformance classes
Fixed¶
- support
forwardedheaders inProxyHeaderMiddlewarethat do not contain a host key (#788)
4.0.0 - 2025-01-17¶
Changed¶
- use
stringtype instead of pythondatetime.datetimefor datetime parameter inBaseSearchGetRequest,ItemCollectionUriandBaseCollectionSearchGetRequestGET models - rename
filtertofilter_exprforFilterExtensionGetRequestandFilterExtensionPostRequestattributes to avoid conflict with python filter method - remove deprecated
post_request_modelattribute inBaseCoreClientandAsyncBaseCoreClient - remove
python3.8support
Fixed¶
- Support multiple proxy servers in the
forwardedheader inProxyHeaderMiddleware(#782)
3.0.5 - 2025-01-10¶
Removed¶
- Remove
warningsinCollectionSearchExtension.from_extensions()methods when passingunknownextensions
3.0.4 - 2025-01-08¶
Removed¶
- Remove deprecated
contextproperty intypes.stac.ItemCollectionmodel
Added¶
- Add
numberMatchedandnumberReturnedproperties intypes.stac.ItemCollectionmodel - Add
numberMatchedandnumberReturnedproperties intypes.stac.Collectionsmodel - Add
root_pathtostac_fastapi.types.config.ApiSettingsand use it in the default FastAPI application - Add
python3.13support
Changed¶
- Use
stac_pydantic.version.STAC_VERSIONinstead ofstac_pydantic.api.version.STAC_API_VERSIONas applicationstac_version - Return more informations from pydantic validation errors
- Add deprecation notice for
post_request_modelattribute inBaseCoreClientandAsyncBaseCoreClient
3.0.3 - 2024-10-09¶
Removed¶
- Removed
cql2-textin supportedfilter-langforFilterExtensionPostRequestmodel (as per specification)
Added¶
- Add
OffsetPaginationExtensionextension to addoffsetquery/body parameter to endpoints
3.0.2 - 2024-09-20¶
Added¶
- Add
from_extensions()method toCollectionSearchExtensionandCollectionSearchPostExtensionextensions to build the class based on a list of available extensions (#745)
3.0.1 - 2024-08-27¶
Changed¶
- Update fastapi version to
>=0.109.0
3.0.0 - 2024-07-29¶
Full changelog: stac-utils.github.io/stac-fastapi/migrations/v3.0.0/#changelog Changes since 3.0.0b3:
Changed¶
- Add version pinning (
~=3.0) for stac-fastapi submodules - Moved
AsyncBaseFiltersClientandBaseFiltersClientclasses instac_fastapi.extensions.core.filter.clientsubmodule
Removed¶
- Removed the
Contextextension - Removed deprecated
stac_fastapi.api.openapi.config_openapimethod andstac_fastapi.api.openapi.VndOaiResponseclass - Removed
response_classargument instac_fastapi.api.routes.create_async_endpointmethod - Removed
filter_fieldsproperty instac_fastapi.extensions.core.fields.request.PostFieldsExtensionclass
3.0.0b3 - 2024-07-25¶
Changed¶
- Add more openapi metadata in input models (#734)
- Use same
Limit(capped to10_000) for/itemsandGET - /searchinput models (#738)
Added¶
3.0.0b2 - 2024-07-09¶
Changed¶
- move back to
@attrs(instead of dataclass) forAPIRequest(model for GET request) class type (#729)
3.0.0b1 - 2024-07-05¶
Added¶
- Add attributes to
stac_fastapi.api.app.StacApito enable customization of request model for: /collections: collections_get_request_model, default toEmptyRequest/collections/{collection_id}: collection_get_request_model, default toCollectionUri/collections/{collection_id}/items: items_get_request_model, default toItemCollectionUri/collections/{collection_id}/items/{item_id}: item_get_request_model, default toItemUri
Removed¶
- Removed the Filter Extension dependency from
AggregationExtensionPostRequestandAggregationExtensionGetRequest(#716) - Removed
pagination_extensionattribute instac_fastapi.api.app.StacApi - Removed use of
pagination_extensioninregister_get_item_collectionfunction (User now need to construct the request model and pass it usingitems_get_request_modelattribute) - Removed use of
FieldsExtensioninstac_fastapi.api.app.StacApi. If users useFieldsExtension, they would have to handle overpassing the model validation step by returning aJSONResponsefrom thepost_searchandget_searchclient methods.
Changed¶
- Replaced
@attrswith python@dataclassforAPIRequest(model for GET request) class type (#714) - Moved
GETPagination,POSTPagination,GETTokenPaginationandPOSTTokenPaginationtostac_fastapi.extensions.core.pagination.requestsubmodule (#717) - update FastAPI requirement to
>=0.111.0
3.0.0a4 - 2024-06-27¶
Fixed¶
- Updated default filter language in filter extension's POST search request model to match the extension's documentation (#711)
Removed¶
- Removed the Filter Extension depenency from
AggregationExtensionPostRequestandAggregationExtensionGetRequest(#716) - Removed
add_middlewaremethod inStacApiobject and let starlette handle the middleware stack creation (#721)
3.0.0a3 - 2024-06-13¶
Added¶
- Add base support for the Aggregation extension (#684)
Changed¶
- Added option for default route dependencies
*can be used forpathormethodto match all allowed route. (#705) - Moved
AsyncBaseFiltersClientandBaseFiltersClientclasses instac_fastapi.extensions.core.filter.clientsubmodule (#704) - Removed
default_includesfromstac_fastapi.types.config.ApiSettings(#706) - Deprecated Fields extension
PostFieldsExtension.filter_fieldsproperty (#706)
3.0.0a2 - 2024-05-31¶
Fixed¶
- Fix missing default (
None) for optionalqueryattribute inQueryExtensionPostRequestmodel (#701)
3.0.0a1 - 2024-05-22¶
Changed¶
- Switch from
fastapitofastapi-slimto avoid installing unwanted dependencies. (#687) - Replace Enum with
LiteralforFilterLang. (#686) - Update stac-pydantic requirement to
~3.1(#697)
Removed¶
- Pystac as it was just used for a datetime to string function. (#690)
Fixed¶
- Make
str_to_intervalnot return a tuple for single-value input (fixingdatetimeargument as passed toget_search). (#692)
3.0.0a0 - 2024-05-06¶
Added¶
- Add enhanced middleware configuration to the StacApi class, enabling specific middleware options and dynamic addition post-application initialization. (#442)
- Add Response Model to OpenAPI, even if model validation is turned off (#625)
Changed¶
- Update to pydantic v2 and stac_pydantic v3 (#625)
- Removed internal Search and Operator Types in favor of stac_pydantic Types (#625)
- Fix response model validation (#625)
- Use status code 201 for Item/Collection creation (#625)
- Replace Black with Ruff Format (#625)
- add
response_classin the route definitions forFilterExtension
2.5.5.post1 - 2024-04-25¶
Fixed¶
- Fix
service-docandservice-descurl in landing page when using router prefix forAsyncBaseCoreClient. (#675)
2.5.5 - 2024-04-24¶
Fixed¶
- Fix
service-docandservice-descurl in landing page when using router prefix. (#673)
2.5.4 - 2024-04-24¶
Fixed¶
- Fix missing payload for the PUT
collection/{collection_id}endpoint (#665) - Return 400 for datetime errors (#670)
2.5.3 - 2024-04-23¶
Fixed¶
- Remove the str2list converter from intersection queries via BaseSearchGetRequest (#668)
- Apply datetime converter in ItemCollection endpoint model (#667)
2.5.2 - 2024-04-19¶
Fixed¶
- BaseSearchGetRequest datetime validator str_to_interval not allowing GET /search requests with datetime = None (#662)
2.5.1 - 2024-04-18¶
Fixed¶
- Fixed warnings.warn deprecation syntax for response class and the context extension (#660)
2.5.0 - 2024-04-12¶
Added¶
- Add benchmark in CI (#650)
- Add
/queryableslink to the landing page (#587) id,title,descriptionandapi_versionfields can be customized via env variables- Add
DeprecationWarningfor theContextExtension - Add support for Python 3.12
Changed¶
- Updated the collection update endpoint to match with the collection-transaction extension. (#630)
- Improve bbox and datetime typing (#490
- Add
itemslink to inferred link relations (#634) - Make sure FastAPI uses Pydantic validation and serialization by not wrapping endpoint output with a Response object (#650)
- Allow
GeometryCollectionsforintersectsparameter in POST search queries (#548)
Removed¶
- Deprecate
response_classoption instac_fastapi.api.routes.create_async_endpointmethod (#650)
2.4.9 - 2023-11-17¶
Added¶
Changed¶
- Forward
x-forwarded-host(#586) - Add
methodparameter to Bulk Transactions extension in order to support upserting bulk data (#614)
2.4.8 - 2023-06-07¶
Changed¶
- Advertise STAC API v1.0.0 (#578)
2.4.7 - 2023-05-16¶
Added¶
- Add support for POSTing ItemCollections to the /items endpoint of the Transaction Extension (#547)
Changed¶
- flake8, isort, and pydocstyle replaced by ruff for pre-commit checks (#549)
2.4.6 - 2023-05-09¶
Changed¶
- Backends are now hosted in their own repositories ([stac-utils/stac-fastapi!555]):
- stac-fastapi-pgstac
- stac-fastapi-sqlalchemy
2.4.5 - 2023-04-04¶
Changed¶
- Default branch to main (#544)
Fixed¶
- Use
V()instead of f-strings for pgstac queries (#554)
2.4.4 - 2023-03-09¶
Added¶
- Nginx service as second docker-compose stack to demonstrate proxy (#503)
- Validation checks in CI using stac-api-validator (#508)
- Required links to the sqlalchemy ItemCollection endpoint (#508)
- Publication of docker images to GHCR (#525)
Changed¶
- Updated CI to test against pgstac v0.6.12 (#511)
- Reworked
update_openapiand added a test for it (#523) - Limit values above 10,000 are now replaced with 10,000 instead of returning a 400 error (#526)
- Updated pgstac to v0.7.1 (#535)
Removed¶
- Incorrect context STAC extension url from the landing page (#508)
Fixed¶
- Allow url encoded values for
queryin GET requests (#504) - Fix path in
register_update_itemdocstring (#507) selflink rel for/collections/{c_id}/items(#508)- Media type of the item collection endpoint (#508)
- Manually exclude non-truthy optional values from sqlalchemy serialization of Collections (#508)
- Support
intersectsin GET requests (#521) - Deleting items that had repeated ids in other collections (#520)
- 404 for missing collection on /items for sqlalchemy (#528)
- Conformance URIs for the filter extension (#540)
Deprecated¶
- Deprecated
VndOaiResponseandconfig_openapi, will be removed in v3.0 (#523)
2.4.3 - 2022-11-25¶
Added¶
- Add the
ENABLED_EXTENSIONSenvironment variable determining which extensions are enabled in the pgstac application, all extensions are enabled by default (#495)
Changed¶
Removed¶
Fixed¶
2.4.2 - 2022-11-25¶
Added¶
- Add support in pgstac backend for /queryables and /collections/{collection_id}/queryables endpoints with functions exposed in pgstac 0.6.8 (#474)
- Add
bboxanddatetimequery parameters to/collections/{collection_id}/items. (#476, #380) - Update pgstac requirement to 0.6.10
- Add
serversanddescriptionto OpenAPI (#459)
Changed¶
Removed¶
- Removed
stac_fastapi.api.routes.create_sync_endpointfunction to reduce code duplication (#471)
Fixed¶
- Quote password in pgsql strings to accomodate special characters. (#455)
- Fix pgstac backend for /queryables endpoint to return 404 for non-existent collections (#482)
/collection/{collection_id}/itemsendpoints now return geojson media type (#488)
2.4.1 - 2022-08-05¶
Added¶
Changed¶
Removed¶
Fixed¶
ciso8601fails to build in some environments, instead usepyiso8601to parse datetimes.
2.4.0 - 2022-08-04¶
Added¶
- Add hook to allow adding dependencies to routes. (#295)
- Ability to POST an ItemCollection to the collections/{collectionId}/items route. (#367)
- Add STAC API - Collections conformance class. (383)
- Bulk item inserts for pgstac implementation. (411)
- Add APIRouter prefix support for pgstac implementation. (429)
- Respect
ForwardedorX-Forwarded-*request headers when building links to better accommodate load balancers and proxies.
Changed¶
- Update FastAPI requirement to allow version >=0.73 (#337)
- Bump version of PGStac to 0.4.5 (#346)
- Add support for PGStac Backend to use PyGeofilter to convert Get Request with cql2-text into cql2-json to send to PGStac backend (#346)
- Updated all conformance classes to 1.0.0-rc.1. (383)
- Bulk Transactions object Items iterator now returns the Item objects rather than the string IDs of the Item objects (#355)
- docker-compose now runs uvicorn with hot-reloading enabled
- Bump version of PGStac to 0.6.2 that includes support for hydrating results in the API backed (#397)
- Make item geometry and bbox nullable in sqlalchemy backend. (#398)
- Transactions Extension update Item endpoint Item is now
/collections/{collection_id}/items/{item_id}instead of/collections/{collection_id}/itemsto align with STAC API spec (#425)
Removed¶
- Remove the unused
router_middlewarefunction (#439)
Fixed¶
- Bumped uvicorn version to 0.17 (from >=0.12, <=0.14) to resolve security vulnerability related to websockets dependency version (#343)
AttributeErrorand/or missing properties when requesting the completeproperties-field in searches. Added test. (#339)- Fixes issues (and adds tests) for issues caused by regression in pgstac (#345
- Update error response payloads to match the API spec. (#361)
- Fixed stray
/before the#in several extension conformance class strings (383) - SQLAlchemy backend bulk item insert now works (#356)
- PGStac Backend has stricter implementation of Fields Extension syntax (#397)
/queryablesendpoint now has typeapplication/schema+jsoninstead ofapplication/json(#421)- Transactions Extension update Item endpoint validates that the
{collection_id}path parameter matches the Item"collection"property from the request body, if present, and falls back to using the path parameter if no"collection"property is found in the body (#425) - PGStac Backend Transactions endpoints return added Item/Collection instead of Item/Collection from request (#424)
- Application no longer breaks on startup when pagination extension is not included (#444)
2.3.0 - 2022-01-18¶
Added¶
- Add link with rel-type of 'service-doc', pointing to HTML API documentation (#298)
Changed¶
- Refactor to remove hardcoded search request models. Request models are now dynamically created based on the enabled extensions. (#213)
- Change example data to use correct
typefor the example Joplin collection (#314) - Changed the geometry type in the Item model from Polygon to Geometry.
- Upgrade pgstac backend to use version 0.4.2 (#321)
- STAC 1.0.0-beta.4 conformance classes updated (#298)
- Upgrade pgstac backend to use version 0.4.3 (#326)
Removed¶
- The tiles extension and all tiles links, added for demonstration purposes, have been removed. (#309)
Fixed¶
- Import error using
importlib.util(#325) - Add environment variables required by upgraded pgstac container (#313)
- Enabled
ContextExtensionby default (#207) - Content-type response headers for the /search endpoint now reflect the geojson response expected in the STAC api spec (#220)
- The minimum
limitvalue for searches is now 1 (#296) - Links stored with Collections and Items (e.g. license links) are now returned with those STAC objects (#282)
- Content-type response headers for the /api endpoint now reflect those expected in the STAC api spec (#287)
- Changed type options for datetime in BaseSearchGetRequest (#318)
- Expanded on tests to ensure properly testing get and post searches (#318)
- Ensure invalid datetimes result in 400s (#323)
2.2.0 - 2021-10-19¶
Added¶
- Add CQL2 support (#308)
- Add ability to override ItemCollectionUri and SearchGetRequest models (#271)
- Added
collectionsattribute to list of default fields to include, so that we satisfy the STAC API spec, which requires acollectionsattribute to be output when an item is part of a collection (#276)
Changed¶
- Update pgstac to 0.4.0 (#308)
- Update get_item in sqlalchemy backend to allow for querying for items with same ids but in different collections. (#275)
2.1.1 - 2021-09-23¶
Added¶
- Add
middlewaresoption instac_fastapi.api.StacApito allow custom middleware configuration (#267) - Support non-interval datetime queries on sqlalchemy backend (#262)
- Restrict
limitparameter in sqlalchemy backend to between 1 and 10,000. (#251) - Fix OAS conformance URL (#263)
- Links to children collections from the landing pagge always have a title (#260)
- Fix collection links in the
all_collectionsmethod inpgstac(#269)
Fixed¶
- Pin FastAPI to 0.67 to avoid issues with rendering OpenAPI documentation (#246)
- Add
stac_versionto default search attributes (#268) - pgstac backend specifies collection_id when fetching a single item (#279)
2.1.0 - 2021-08-26¶
Added¶
- Added filter extension. (#165)
- Add Support for CQL JSON to PGStac Backend (#209)
- Added item_serializer and item_table to BulkTransactionsClient in sqlalchemy backend (#210)
- Enable conformance class configuration (#214)
- Add/fix landing page links (#229)
- Correct response codes for bad/unusable bboxes (#235)
- Add a "method" field for search links (#236)
- Add extension schemas to landing (#237)
Removed¶
- Remove shapely from stac_fastapi.pgstac requirements (#225)
Changed¶
- Update to STAC API 1.0.0-beta.3 (#239)
Fixed¶
- Make collection title optional in landing page links (#198)
- Preserve relative paths on link generation (#199)
- Fix collection endpoint return value to match spec (fixes regression) (#232)
- Return empty item collection instead of error when searching (#233)
- Correct response codes for bad/unusable bboxes (#235)
- Update pgstac to return 400 on invalid date parameter (#240)
2.0.0 - 2021-07-26¶
- Refactor stac-fastapi into submodules (#106stac-utils/stac-fastapi/pull/106)
- Add pgstac backend (#126)
- Upgrade to stac-pydantic 2.0.0 and stac-spec 1.0.0 (#181)
1.1.0 - 2021-01-28¶
- Improve how the library declares API extensions (#54)
- Add postgres bulk transactions client (#59)
- Update TiTiler version (#61)
- Use attrs instead of dataclasses (#73)
- Remove postgres database connection from API layer (#74)
- Fix
pre-commitconfig (#75)
1.0.0 - 2020-09-28¶
- First PyPi release!