From 189cc95bbb2d04d1ece2a4d3b146415e54eab1da Mon Sep 17 00:00:00 2001 From: jonhealy1 Date: Tue, 21 Oct 2025 14:16:32 +0800 Subject: [PATCH 1/8] Re;ease v6.6.0 --- CHANGELOG.md | 16 +++++++++++++++- stac_fastapi/core/stac_fastapi/core/version.py | 2 +- stac_fastapi/elasticsearch/pyproject.toml | 4 ++-- .../stac_fastapi/elasticsearch/version.py | 2 +- stac_fastapi/opensearch/pyproject.toml | 4 ++-- .../stac_fastapi/opensearch/version.py | 2 +- stac_fastapi/sfeos_helpers/pyproject.toml | 2 +- .../stac_fastapi/sfeos_helpers/version.py | 2 +- 8 files changed, 24 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac25a36ce..9b775bb94 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,19 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Added +### Changed + +### Fixed + +### Removed + +### Updated + + +## [v6.6.0] - 2025-10-21 + +### Added + - Spatial search support for collections via `bbox` parameter on `/collections` endpoint. Collections are now indexed with a `bbox_shape` field (GeoJSON polygon) derived from their spatial extent for efficient geospatial queries when created or updated. [#481](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/481 - Introduced SFEOS Tools (`sfeos_tools/`) - An installable Click-based CLI package for managing SFEOS deployments. Initial command `add-bbox-shape` adds the `bbox_shape` field to existing collections for spatial search compatibility. Install with `pip install sfeos-tools[elasticsearch]` or `pip install sfeos-tools[opensearch]`. [#481](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/481) - Moved SFEOS Tools to its own repository at [Healy-Hyperspatial/sfeos-tools](https://github.com/Healy-Hyperspatial/sfeos-tools). The CLI package is now maintained separately. [#PR_NUMBER] @@ -577,7 +590,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Use genexp in execute_search and get_all_collections to return results. - Added db_to_stac serializer to item_collection method in core.py. -[Unreleased]: https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/compare/v6.5.1...main +[Unreleased]: https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/compare/v6.6.0...main +[v6.6.0]: https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/compare/v6.5.1...v6.6.0 [v6.5.1]: https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/compare/v6.5.0...v6.5.1 [v6.5.0]: https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/compare/v6.4.0...v6.5.0 [v6.4.0]: https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/compare/v6.3.0...v6.4.0 diff --git a/stac_fastapi/core/stac_fastapi/core/version.py b/stac_fastapi/core/stac_fastapi/core/version.py index 019563e86..1335b265b 100644 --- a/stac_fastapi/core/stac_fastapi/core/version.py +++ b/stac_fastapi/core/stac_fastapi/core/version.py @@ -1,2 +1,2 @@ """library version.""" -__version__ = "6.5.1" +__version__ = "6.6.0" diff --git a/stac_fastapi/elasticsearch/pyproject.toml b/stac_fastapi/elasticsearch/pyproject.toml index 85e196b08..340f9bf5c 100644 --- a/stac_fastapi/elasticsearch/pyproject.toml +++ b/stac_fastapi/elasticsearch/pyproject.toml @@ -30,8 +30,8 @@ keywords = [ ] dynamic = ["version"] dependencies = [ - "stac-fastapi-core==6.5.1", - "sfeos-helpers==6.5.1", + "stac-fastapi-core==6.6.0", + "sfeos-helpers==6.6.0", "elasticsearch[async]~=8.19.1", "uvicorn~=0.23.0", "starlette>=0.35.0,<0.36.0", diff --git a/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/version.py b/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/version.py index 019563e86..1335b265b 100644 --- a/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/version.py +++ b/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/version.py @@ -1,2 +1,2 @@ """library version.""" -__version__ = "6.5.1" +__version__ = "6.6.0" diff --git a/stac_fastapi/opensearch/pyproject.toml b/stac_fastapi/opensearch/pyproject.toml index 4ed3222f4..24f7fb09a 100644 --- a/stac_fastapi/opensearch/pyproject.toml +++ b/stac_fastapi/opensearch/pyproject.toml @@ -30,8 +30,8 @@ keywords = [ ] dynamic = ["version"] dependencies = [ - "stac-fastapi-core==6.5.1", - "sfeos-helpers==6.5.1", + "stac-fastapi-core==6.6.0", + "sfeos-helpers==6.6.0", "opensearch-py~=2.8.0", "opensearch-py[async]~=2.8.0", "uvicorn~=0.23.0", diff --git a/stac_fastapi/opensearch/stac_fastapi/opensearch/version.py b/stac_fastapi/opensearch/stac_fastapi/opensearch/version.py index 019563e86..1335b265b 100644 --- a/stac_fastapi/opensearch/stac_fastapi/opensearch/version.py +++ b/stac_fastapi/opensearch/stac_fastapi/opensearch/version.py @@ -1,2 +1,2 @@ """library version.""" -__version__ = "6.5.1" +__version__ = "6.6.0" diff --git a/stac_fastapi/sfeos_helpers/pyproject.toml b/stac_fastapi/sfeos_helpers/pyproject.toml index a2f236529..4c49aec11 100644 --- a/stac_fastapi/sfeos_helpers/pyproject.toml +++ b/stac_fastapi/sfeos_helpers/pyproject.toml @@ -31,7 +31,7 @@ keywords = [ ] dynamic = ["version"] dependencies = [ - "stac-fastapi.core==6.5.1", + "stac-fastapi.core==6.6.0", ] [project.urls] diff --git a/stac_fastapi/sfeos_helpers/stac_fastapi/sfeos_helpers/version.py b/stac_fastapi/sfeos_helpers/stac_fastapi/sfeos_helpers/version.py index 019563e86..1335b265b 100644 --- a/stac_fastapi/sfeos_helpers/stac_fastapi/sfeos_helpers/version.py +++ b/stac_fastapi/sfeos_helpers/stac_fastapi/sfeos_helpers/version.py @@ -1,2 +1,2 @@ """library version.""" -__version__ = "6.5.1" +__version__ = "6.6.0" From 474ee276c033b265177faea4f3d6b145ad1763f9 Mon Sep 17 00:00:00 2001 From: jonhealy1 Date: Tue, 21 Oct 2025 14:20:34 +0800 Subject: [PATCH 2/8] update publish script --- .github/workflows/publish.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 51f326e13..0139f38a1 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -21,7 +21,7 @@ jobs: - name: Install build dependencies run: | python -m pip install --upgrade pip - pip install setuptools wheel twine + pip install build twine - name: Build and publish stac-fastapi-core working-directory: stac_fastapi/core @@ -30,7 +30,7 @@ jobs: TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} run: | # Build package - python setup.py sdist bdist_wheel + python -m build # Publish to PyPI twine upload dist/* @@ -42,7 +42,7 @@ jobs: TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} run: | # Build package - python setup.py sdist bdist_wheel + python -m build # Publish to PyPI twine upload dist/* @@ -54,7 +54,7 @@ jobs: TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} run: | # Build package - python setup.py sdist bdist_wheel + python -m build # Publish to PyPI twine upload dist/* @@ -66,7 +66,7 @@ jobs: TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} run: | # Build package - python setup.py sdist bdist_wheel + python -m build # Publish to PyPI twine upload dist/* From 41ab25a38540491f000314d21a946457094d9557 Mon Sep 17 00:00:00 2001 From: jonhealy1 Date: Tue, 21 Oct 2025 15:06:11 +0800 Subject: [PATCH 3/8] remove readme files --- stac_fastapi/core/README.md | 1 - stac_fastapi/elasticsearch/README.md | 1 - stac_fastapi/opensearch/README.md | 1 - stac_fastapi/sfeos_helpers/README.md | 1 - 4 files changed, 4 deletions(-) delete mode 120000 stac_fastapi/core/README.md delete mode 120000 stac_fastapi/elasticsearch/README.md delete mode 120000 stac_fastapi/opensearch/README.md delete mode 120000 stac_fastapi/sfeos_helpers/README.md diff --git a/stac_fastapi/core/README.md b/stac_fastapi/core/README.md deleted file mode 120000 index fe8400541..000000000 --- a/stac_fastapi/core/README.md +++ /dev/null @@ -1 +0,0 @@ -../../README.md \ No newline at end of file diff --git a/stac_fastapi/elasticsearch/README.md b/stac_fastapi/elasticsearch/README.md deleted file mode 120000 index fe8400541..000000000 --- a/stac_fastapi/elasticsearch/README.md +++ /dev/null @@ -1 +0,0 @@ -../../README.md \ No newline at end of file diff --git a/stac_fastapi/opensearch/README.md b/stac_fastapi/opensearch/README.md deleted file mode 120000 index fe8400541..000000000 --- a/stac_fastapi/opensearch/README.md +++ /dev/null @@ -1 +0,0 @@ -../../README.md \ No newline at end of file diff --git a/stac_fastapi/sfeos_helpers/README.md b/stac_fastapi/sfeos_helpers/README.md deleted file mode 120000 index fe8400541..000000000 --- a/stac_fastapi/sfeos_helpers/README.md +++ /dev/null @@ -1 +0,0 @@ -../../README.md \ No newline at end of file From 0d49758964b168f9bd1bce95c768d4c7f78ab00a Mon Sep 17 00:00:00 2001 From: jonhealy1 Date: Tue, 21 Oct 2025 15:08:42 +0800 Subject: [PATCH 4/8] add readme files --- stac_fastapi/core/README.md | 20 ++++++++++++++++++++ stac_fastapi/elasticsearch/README.md | 20 ++++++++++++++++++++ stac_fastapi/opensearch/README.md | 20 ++++++++++++++++++++ stac_fastapi/sfeos_helpers/README.md | 22 ++++++++++++++++++++++ 4 files changed, 82 insertions(+) create mode 100644 stac_fastapi/core/README.md create mode 100644 stac_fastapi/elasticsearch/README.md create mode 100644 stac_fastapi/opensearch/README.md create mode 100644 stac_fastapi/sfeos_helpers/README.md diff --git a/stac_fastapi/core/README.md b/stac_fastapi/core/README.md new file mode 100644 index 000000000..6f89cb4a4 --- /dev/null +++ b/stac_fastapi/core/README.md @@ -0,0 +1,20 @@ +# stac-fastapi-core + +Core functionality for stac-fastapi. For full documentation, please see the [main README](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/blob/main/README.md). + +## Package Information + +- **Package name**: stac-fastapi-core +- **Description**: Core functionality for STAC API implementations. +- **Documentation**: [https://stac-utils.github.io/stac-fastapi-elasticsearch-opensearch/](https://stac-utils.github.io/stac-fastapi-elasticsearch-opensearch/) +- **Source**: [GitHub Repository](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/) + +## Installation + +```bash +pip install stac-fastapi-core +``` + +## Quick Start + +For detailed usage and examples, please refer to the [main documentation](https://stac-utils.github.io/stac-fastapi-elasticsearch-opensearch/). diff --git a/stac_fastapi/elasticsearch/README.md b/stac_fastapi/elasticsearch/README.md new file mode 100644 index 000000000..2ffe21b2f --- /dev/null +++ b/stac_fastapi/elasticsearch/README.md @@ -0,0 +1,20 @@ +# stac-fastapi-elasticsearch + +This is the Elasticsearch backend for stac-fastapi. For full documentation, please see the [main README](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/blob/main/README.md). + +## Package Information + +- **Package name**: stac-fastapi-elasticsearch +- **Description**: An implementation of STAC API based on the FastAPI framework with Elasticsearch. +- **Documentation**: [https://stac-utils.github.io/stac-fastapi-elasticsearch-opensearch/](https://stac-utils.github.io/stac-fastapi-elasticsearch-opensearch/) +- **Source**: [GitHub Repository](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/) + +## Installation + +```bash +pip install stac-fastapi-elasticsearch +``` + +## Quick Start + +For detailed usage and examples, please refer to the [main documentation](https://stac-utils.github.io/stac-fastapi-elasticsearch-opensearch/). diff --git a/stac_fastapi/opensearch/README.md b/stac_fastapi/opensearch/README.md new file mode 100644 index 000000000..27b698413 --- /dev/null +++ b/stac_fastapi/opensearch/README.md @@ -0,0 +1,20 @@ +# stac-fastapi-opensearch + +This is the OpenSearch backend for stac-fastapi. For full documentation, please see the [main README](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/blob/main/README.md). + +## Package Information + +- **Package name**: stac-fastapi-opensearch +- **Description**: An implementation of STAC API based on the FastAPI framework with OpenSearch. +- **Documentation**: [https://stac-utils.github.io/stac-fastapi-elasticsearch-opensearch/](https://stac-utils.github.io/stac-fastapi-elasticsearch-opensearch/) +- **Source**: [GitHub Repository](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/) + +## Installation + +```bash +pip install stac-fastapi-opensearch +``` + +## Quick Start + +For detailed usage and examples, please refer to the [main documentation](https://stac-utils.github.io/stac-fastapi-elasticsearch-opensearch/). diff --git a/stac_fastapi/sfeos_helpers/README.md b/stac_fastapi/sfeos_helpers/README.md new file mode 100644 index 000000000..108ba60b6 --- /dev/null +++ b/stac_fastapi/sfeos_helpers/README.md @@ -0,0 +1,22 @@ +# sfeos-helpers + +Helper utilities for the stac-fastapi project. For full documentation, please see the [main README](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/blob/main/README.md). + +## Package Information + +- **Package name**: sfeos-helpers +- **Description**: Helper utilities for the stac-fastapi project. +- **Documentation**: [https://stac-utils.github.io/stac-fastapi-elasticsearch-opensearch/](https://stac-utils.github.io/stac-fastapi-elasticsearch-opensearch/) +- **Source**: [GitHub Repository](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/) + +## Installation + +This package is a dependency of stac-fastapi-elasticsearch and stac-fastapi-opensearch and is typically installed automatically. + +```bash +pip install stac-fastapi-elasticsearch # or stac-fastapi-opensearch +``` + +## Quick Start + +For detailed usage and examples, please refer to the [main documentation](https://stac-utils.github.io/stac-fastapi-elasticsearch-opensearch/). From f376725793743d099736d09ac92b9e54a269320d Mon Sep 17 00:00:00 2001 From: jonhealy1 Date: Wed, 22 Oct 2025 15:25:19 +0800 Subject: [PATCH 5/8] update api docs --- CHANGELOG.md | 2 + .../core/extensions/collections_search.py | 146 ++++++++++++++++-- 2 files changed, 138 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b775bb94..5268efe63 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Changed +- Improved OpenAPI docs for `/collections-search` GET and POST endpoints. + ### Fixed ### Removed diff --git a/stac_fastapi/core/stac_fastapi/core/extensions/collections_search.py b/stac_fastapi/core/stac_fastapi/core/extensions/collections_search.py index d36197d03..454dc8215 100644 --- a/stac_fastapi/core/stac_fastapi/core/extensions/collections_search.py +++ b/stac_fastapi/core/stac_fastapi/core/extensions/collections_search.py @@ -1,8 +1,8 @@ """Collections search extension.""" -from typing import List, Optional, Type, Union +from typing import Any, Dict, List, Optional, Type, Union -from fastapi import APIRouter, FastAPI, Request +from fastapi import APIRouter, Body, FastAPI, Query, Request from fastapi.responses import JSONResponse from pydantic import BaseModel from stac_pydantic.api.search import ExtendedSearch @@ -24,6 +24,112 @@ class CollectionsSearchRequest(ExtendedSearch): ] = None # Legacy query extension (deprecated but still supported) +def build_get_collections_search_doc(original_endpoint): + """Return a documented GET endpoint wrapper for /collections-search.""" + + async def documented_endpoint( + q: Optional[str] = Query( + None, + description="Free text search query", + ), + query: Optional[str] = Query( + None, + description="Additional filtering expressed as a string (legacy support)", + example="platform=landsat AND collection_category=level2", + ), + limit: int = Query( + 10, + ge=1, + description=( + "The maximum number of collections to return (page size). Defaults to 10." + ), + ), + token: Optional[str] = Query( + None, + description="Pagination token for the next page of results", + ), + bbox: Optional[str] = Query( + None, + description=( + "Bounding box for spatial filtering in format 'minx,miny,maxx,maxy' " + "or 'minx,miny,minz,maxx,maxy,maxz'" + ), + ), + datetime: Optional[str] = Query( + None, + description=( + "Temporal filter in ISO 8601 format (e.g., " + "'2020-01-01T00:00:00Z/2021-01-01T00:00:00Z')" + ), + ), + sortby: Optional[str] = Query( + None, + description=( + "Sorting criteria in the format 'field' or '-field' for descending order" + ), + ), + fields: Optional[List[str]] = Query( + None, + description=( + "Comma-separated list of fields to include or exclude (use -field to exclude)" + ), + alias="fields[]", + ), + ): + return await original_endpoint( + q=q, + query=query, + limit=limit, + token=token, + bbox=bbox, + datetime=datetime, + sortby=sortby, + fields=fields, + ) + + documented_endpoint.__name__ = original_endpoint.__name__ + return documented_endpoint + + +def build_post_collections_search_doc(original_post_endpoint): + """Return a documented POST endpoint wrapper for /collections-search.""" + + async def documented_post_endpoint( + request: Request, + body: Dict[str, Any] = Body( + ..., + description=( + "Search parameters for collections.\n\n" + "- `q`: Free text search query (string or list of strings)\n" + "- `query`: Additional filtering expressed as a string (legacy support)\n" + "- `limit`: Maximum number of results to return (default: 10)\n" + "- `token`: Pagination token for the next page of results\n" + "- `bbox`: Bounding box [minx, miny, maxx, maxy] or [minx, miny, minz, maxx, maxy, maxz]\n" + "- `datetime`: Temporal filter in ISO 8601 (e.g., '2020-01-01T00:00:00Z/2021-01-01T12:31:12Z')\n" + "- `sortby`: List of sort criteria objects with 'field' and 'direction' (asc/desc)\n" + "- `fields`: Object with 'include' and 'exclude' arrays for field selection" + ), + example={ + "q": "landsat", + "query": "platform=landsat AND collection_category=level2", + "limit": 10, + "token": "next-page-token", + "bbox": [-180, -90, 180, 90], + "datetime": "2020-01-01T00:00:00Z/2021-01-01T12:31:12Z", + "sortby": [{"field": "id", "direction": "asc"}], + "fields": { + "include": ["id", "title", "description"], + "exclude": ["properties"], + }, + }, + ), + ) -> Union[Collections, Response]: + return await original_post_endpoint(request, body) + + documented_post_endpoint.__name__ = original_post_endpoint.__name__ + return documented_post_endpoint + + class CollectionsSearchEndpointExtension(ApiExtension): """Collections search endpoint extension. @@ -54,7 +160,6 @@ def __init__( self.POST = POST self.conformance_classes = conformance_classes or [] self.router = APIRouter() - self.create_endpoints() def register(self, app: FastAPI) -> None: """Register the extension with a FastAPI application. @@ -65,32 +170,53 @@ def register(self, app: FastAPI) -> None: Returns: None """ - app.include_router(self.router) + # Remove any existing routes to avoid duplicates + self.router.routes = [] - def create_endpoints(self) -> None: - """Create endpoints for the extension.""" + # Recreate endpoints with proper OpenAPI documentation if self.GET: + original_endpoint = self.collections_search_get_endpoint + documented_endpoint = build_get_collections_search_doc(original_endpoint) + self.router.add_api_route( - name="Get Collections Search", path="/collections-search", + endpoint=documented_endpoint, response_model=None, response_class=JSONResponse, methods=["GET"], - endpoint=self.collections_search_get_endpoint, + summary="Search collections", + description=( + "Search for collections using query parameters. " + "Supports filtering, sorting, and field selection." + ), + response_description="A list of collections matching the search criteria", + tags=["Collections Search Extension"], **(self.settings if isinstance(self.settings, dict) else {}), ) if self.POST: + original_post_endpoint = self.collections_search_post_endpoint + documented_post_endpoint = build_post_collections_search_doc( + original_post_endpoint + ) + self.router.add_api_route( - name="Post Collections Search", path="/collections-search", + endpoint=documented_post_endpoint, response_model=None, response_class=JSONResponse, methods=["POST"], - endpoint=self.collections_search_post_endpoint, + summary="Search collections", + description=( + "Search for collections using a JSON request body. " + "Supports filtering, sorting, field selection, and pagination." + ), + tags=["Collections Search Extension"], **(self.settings if isinstance(self.settings, dict) else {}), ) + app.include_router(self.router) + async def collections_search_get_endpoint( self, request: Request ) -> Union[Collections, Response]: From f1b74ecd88431f01808e00a9aadea07da7e8d67f Mon Sep 17 00:00:00 2001 From: jonhealy1 Date: Wed, 22 Oct 2025 15:27:54 +0800 Subject: [PATCH 6/8] pr number --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5268efe63..315275b11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,7 +11,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Changed -- Improved OpenAPI docs for `/collections-search` GET and POST endpoints. +- Improved OpenAPI docs for `/collections-search` GET and POST endpoints. [#508](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/508) ### Fixed From d98301dd0dc488f5c090dc38c35068c0768060ca Mon Sep 17 00:00:00 2001 From: jonhealy1 Date: Wed, 22 Oct 2025 15:37:10 +0800 Subject: [PATCH 7/8] fix --- .../core/extensions/collections_search.py | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/stac_fastapi/core/stac_fastapi/core/extensions/collections_search.py b/stac_fastapi/core/stac_fastapi/core/extensions/collections_search.py index 454dc8215..0a3a0635c 100644 --- a/stac_fastapi/core/stac_fastapi/core/extensions/collections_search.py +++ b/stac_fastapi/core/stac_fastapi/core/extensions/collections_search.py @@ -28,6 +28,7 @@ def build_get_collections_search_doc(original_endpoint): """Return a documented GET endpoint wrapper for /collections-search.""" async def documented_endpoint( + request: Request, q: Optional[str] = Query( None, description="Free text search query", @@ -76,16 +77,8 @@ async def documented_endpoint( alias="fields[]", ), ): - return await original_endpoint( - q=q, - query=query, - limit=limit, - token=token, - bbox=bbox, - datetime=datetime, - sortby=sortby, - fields=fields, - ) + # Delegate to original endpoint which reads from request.query_params + return await original_endpoint(request) documented_endpoint.__name__ = original_endpoint.__name__ return documented_endpoint From 7aaaf266e71a0790c9b13fcb68305eec8e9791bb Mon Sep 17 00:00:00 2001 From: jonhealy1 Date: Thu, 23 Oct 2025 10:23:46 +0800 Subject: [PATCH 8/8] changelog fix --- CHANGELOG.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 45cd242a2..41b75fed1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,20 +9,17 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Added -- CloudFerro logo to sponsors and supporters list [#485](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/485) -- Latest news section to README [#485](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/485) - Environment variable `EXCLUDED_FROM_QUERYABLES` to exclude specific fields from queryables endpoint and filtering. Supports comma-separated list of fully qualified field names (e.g., `properties.auth:schemes,properties.storage:schemes`) [#489](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/489) ### Changed -- Improved OpenAPI docs for `/collections-search` GET and POST endpoints. [#508](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/508) - ### Fixed ### Removed ### Updated +- Improved OpenAPI docs for `/collections-search` GET and POST endpoints. [#508](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/508) ## [v6.6.0] - 2025-10-21