v4.0.0
What's Changed
Added
- Support for dynamically-generated queryables based on Elasticsearch/OpenSearch mappings, with extensible metadata augmentation #351
- Included default queryables configuration for seamless integration. #351
- Added support for high-performance direct response mode for both Elasticsearch and Opensearch backends, controlled by the
ENABLE_DIRECT_RESPONSEenvironment variable. When enabled (ENABLE_DIRECT_RESPONSE=true), endpoints return Starlette Response objects directly, bypassing FastAPI's jsonable_encoder and Pydantic serialization for significantly improved performance on large search responses. Note: In this mode, all FastAPI dependencies (including authentication, custom status codes, and validation) are disabled for all routes. Default isfalsefor safety. A warning is logged at startup if enabled. See issue #347 and PR #359. - Added robust tests for the
ENABLE_DIRECT_RESPONSEenvironment variable, covering both Elasticsearch and OpenSearch backends. Tests gracefully handle missing backends by attempting to import both configs and skipping if neither is available. #359
Changed
- Refactored database logic to reduce duplication #351
- Replaced
fastapi-slimwithfastapidependency #351 - Changed minimum Python version to 3.9 #354
- Updated stac-fastapi api, types, and extensions libraries to 5.1.1 from 3.0.0 and made various associated changes #354
- Changed makefile commands from 'docker-compose' to 'docker compose' #354
- Updated package names in setup.py files to use underscores instead of periods for PEP 625 compliance #358
- Changed
stac_fastapi.opensearchtostac_fastapi_opensearch - Changed
stac_fastapi.elasticsearchtostac_fastapi_elasticsearch - Changed
stac_fastapi.coretostac_fastapi_core - Updated all related dependencies to use the new naming convention
- Changed
- Renamed
docker-compose.ymltocompose.ymlto align with Docker Compose V2 conventions #358 - Removed deprecated
versionfield from all compose files #358 - Updated
STAC_FASTAPI_VERSIONenvironment variables to 4.0.0 in all compose files #362 - Bumped version from 4.0.0a2 to 4.0.0 for the PEP 625 compliant release #362
- Updated dependency requirements to use compatible release specifiers (~=) for more controlled updates while allowing for bug fixes and security patches #358
- Removed elasticsearch-dsl dependency as it's now part of the elasticsearch package since version 8.18.0 #358
- Updated test suite to use
httpx.ASGITransport(app=...)for FastAPI app testing (removes deprecation warning). #359 - Updated stac-fastapi parent libraries to 5.2.0. #359
- Migrated Elasticsearch index template creation from legacy
put_templateto composableput_index_templateAPI indatabase_logic.py. This resolves deprecation warnings and ensures compatibility with Elasticsearch 7.x and 8.x. #359 - Updated all Pydantic models to use
ConfigDictinstead of class-basedConfigfor Pydantic v2 compatibility. This resolves deprecation warnings and prepares for Pydantic v3. #359 - Migrated all Pydantic
@root_validatorvalidators to@model_validatorfor Pydantic v2 compatibility. #359 - Migrated startup event handling from deprecated
@app.on_event("startup")to FastAPI's recommended lifespan context manager. This removes deprecation warnings and ensures compatibility with future FastAPI versions. #361 - Refactored all boolean environment variable parsing in both Elasticsearch and OpenSearch backends to use the shared
get_bool_envutility. This ensures robust and consistent handling of environment variables such asES_USE_SSL,ES_HTTP_COMPRESS, andES_VERIFY_CERTSacross both backends. #359
Fixed
- Improved performance of
mk_actionsandfilter-linksmethods #351 - Fixed inheritance relating to BaseDatabaseSettings and ApiBaseSettings #355
- Fixed delete_item and delete_collection methods return types #355
- Fixed inheritance relating to DatabaseLogic and BaseDatabaseLogic, and ApiBaseSettings #355
New Contributors
Full Changelog: v3.2.5...v4.0.0