Changelog¶
Unreleased¶
Changed¶
- update 
pypgstacversion requirement to>=0.9,<0.10 
Added¶
- lower bounds for 
hydratersrequirements EXCLUDE_HYDRATE_MARKERS=TRUE/FALSE(defaults toTRUE) to exclude𒍟※markers returned by PgSTAC- python 
3.13and3.14support 
6.0.2 - 2025-10-03¶
- add 
CORS_ORIGIN_REGEXsettings (#298) 
6.0.1 - 2025-09-30¶
- fix: ignore 'rel:items' entries when generating links (#294)
 
6.0.0 - 2025-08-08¶
Fixed¶
- fix root-path handling when setting via env var or on app instance
 - Allow 
qparameter to be astrnot alist[str]for Advanced Free-Text extension - do not 
unquoteparameters for next/prev links 
Changed¶
- rename 
POSTGRES_HOST_READERtoPGHOSTin config breaking change - rename 
POSTGRES_USERtoPGUSERin config breaking change - rename 
POSTGRES_PASStoPGPASSWORDin config breaking change - rename 
POSTGRES_PORTtoPGPORTin config breaking change - rename 
POSTGRES_DBNAMEtoPGDATABASEin config breaking change 
from stac_fastapi.pgstac.config import PostgresSettings
# before
settings = PostgresSettings(
    postgres_user="user",
    postgres_pass="password",
    postgres_host_reader="0.0.0.0",
    postgres_host_writer="0.0.0.0",
    postgres_port=1111,
    postgres_dbname="pgstac",
)
# now
settings = PostgresSettings(
    pguser="user",
    pgpassword="password",
    pghost="0.0.0.0",
    pgport=1111,
    pgdatabase="pgstac",
)
- rename 
reader_connection_stringtoconnection_stringinPostgresSettingsclass breaking change - add 
ENABLE_TRANSACTIONS_EXTENSIONSenv variable to enabletransactionextensions - disable transaction and bulk_transactions extensions by default breaking change
 - update 
stac-fastapi-*version requirements to>=5.2,<6.0 - add pgstac health-check in 
/_mgmt/health - switch from using 
pygeofiltertocql2 - publish arm64 Docker images
 
Added¶
- add 
validate_extensionssetting that enables validation ofstac_extensionsfrom submitted STAC objects using thestac_pydantic.extensions.validate_extensionsutility. Applicable only whenTransactionExtensionis active. - add 
validationextra requirement to install dependencies ofstac_pydanticrequired for extension validation - add 
write_connection_pooloption instac_fastapi.pgstac.db.connect_to_dbfunction - add 
write_postgres_settingsoption instac_fastapi.pgstac.db.connect_to_dbfunction to set specific settings for thewriterDB connection pool - add specific error message when trying to create 
Itemwith null geometry (not supported by PgSTAC) - add support for Patch in transactions extension
 - CORS authentication setting
 
removed¶
stac_fastapi.pgstac.db.DBclassPOSTGRES_HOST_WRITERin configwriter_connection_stringinPostgresSettingsclasstesting_connection_stringinPostgresSettingsclass
5.0.3 - 2025-07-23¶
Fixed¶
- fix root-path handling when setting via env var or on app instance (#270)
 
5.0.2 - 2025-04-07¶
Fixed¶
- fix root-path handling when setting in uvicorn command
 - reduce 
db_min_conn_sizeto1to avoid creating too many db connections when starting the application 
5.0.1 - 2025-03-27¶
Fixed¶
- fix media type for 
selflinks in/searchresponses 
5.0.0 - 2025-03-10¶
Changed¶
- move Postgres settings into separate 
PostgresSettingsclass and defer loading until connecting to database (#209) - update 
stac-fastapi-*version requirements to>=5.1,<6.0 
4.0.3 - 2025-03-10¶
Fixed¶
- fix links when app is mounted behind proxy or has router-prefix (#195)
 
4.0.2 - 2025-02-18¶
Fixed¶
- use Relation's 
valueforPOSTprev/next links - return 
JSONResponsedirectly from/itemsendpoint whenfieldsparameter is pass and avoid Pydantic validation 
Changed¶
- avoid re-use of internal 
CoreCrudClient.post_searchinCoreCrudClient.get_searchmethod to allow customization 
4.0.1 - 2025-02-06¶
Added¶
- add 
numberReturnedandnumberMatchedin/collectionsresponse 
4.0.0 - 2025-02-03¶
Changed¶
- remove 
python 3.8support - update 
stac-fastapi-*requirement to~=5.0 - keep 
/searchand/collectionsextensions separate (#158) - update 
pypgstacrequirement to>=0.8,<0.10 - set 
pypgstac==0.9.*for test requirements - renamed 
post_request_modelattribute topgstac_search_modelinCoreCrudClientclass - changed 
datetimeinput type tostringin GET endpoint methods - renamed 
filtertofilter_exprinput attributes in GET endpoint methods - delete 
utils.format_datetime_rangefunction 
Fixed¶
- handle 
nextandprevtokens now returned as links from pgstac>=0.9.0 (author @zstatmanweil, stac-utils/stac-fastapi-pgstac!140) - fix Docker compose file, so example data can be loaded into database (author @zstatmanweil, stac-utils/stac-fastapi-pgstac!142)
 - fix 
filterextension implementation inCoreCrudClient 
Added¶
- add collection search extension support (#139)
 - add free-text extension to collection search extensions (#162)
 - add filter extension support to Item Collection endpoint
 - add sort extension support to Item Collection endpoint (#192)
 - add query extension support to Item Collection endpoint (#162)
 - add fields extension support to Item Collection endpoint (#162)
 
3.0.1 - 2024-11-14¶
- Enable runtime 
CORSconfiguration using environment variables (CORS_ORIGINS="https://...,https://...",CORS_METHODS="PUT,OPTIONS") (stac-utils/stac-fastapi-pgstac!168) 
3.0.0 - 2024-08-02¶
- Enable filter extension for 
GET /itemsrequests and addQueryableslinks in/collectionsand/collections/{collection_id}responses (#89) - Allow to omit 
collectionin bulk item insertions. Same identifier checks as with single insertions (#113) - Set 
stac-fastapi-*requirements to ~=3.0 
3.0.0a4 - 2024-07-10¶
- Update stac-fastapi libraries to 
~=3.0.0b2 
3.0.0a3 - 2024-07-01¶
- Use 
quote_plusinstead ofquoteto encode database's password (#122) - Update stac-fastapi libraries to 
~=3.0.0a4 
3.0.0a2 - 2024-06-18¶
- Update stac-fastapi libraries to 
~=3.0.0a3 - make sure the application can work without any extension
 
3.0.0a1 - 2024-05-22¶
- Update stac-fastapi libraries to 
~=3.0.0a1 - Update stac-pydantic dependency to 
==3.1.* 
3.0.0a0 - 2024-05-10¶
Changed¶
- Update stac-fastapi libraries to v3.0.0a0 (#108)
 - Update pgstac version to 
0.8.x 
2.5.0 - 2024-04-25¶
Changed¶
- Updated stac-fastapi libraries to v2.5.5 (#101)
 
Added¶
- Ability to configure the database runtime parameters (#92)
 
2.4.11 - 2023-12-01¶
Changed¶
- Add 
methodparameter to Bulk Transactions requests in order to support upserting bulk data (#64) 
2.4.10 - 2023-08-18¶
Fixed¶
- Added back the 
CMDto the Dockerfile that was dropped during the repo split (#52) 
2.4.9 - 2023-06-21¶
Fixed¶
- Pass 
requestby name when calling endpoints from other endpoints (#44) 
2.4.8 - 2023-06-08¶
Changed¶
- Updated stac-fastapi to v2.4.8, which updates our STAC API version to v1.0.0 (#40)
 
2.4.7 - 2023-05-17¶
Added¶
- Support for 
ItemCollectionsin the transaction extension (#35) 
2.4.6 - 2023-05-11¶
As a part of this release, this repository was extracted from the main stac-fastapi repository.
Added¶
- Ability to customize the database connection (#22)
 - Ability to add ItemCollections through the Transaction API, with more validation (#35)
 
Changed¶
- Quieter tests (#22)
 
2.4.5 - 2023-04-04¶
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!