Skip to content

Commit fc9e495

Browse files
Merge branch 'main' into CAT-1449
2 parents 438c2af + 234b5bf commit fc9e495

File tree

11 files changed

+84
-24
lines changed

11 files changed

+84
-24
lines changed

CHANGELOG.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,16 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
1919

2020
### Updated
2121

22+
## [v6.7.3] - 2025-11-07
23+
24+
### Added
25+
26+
- Added validator for `REDIS_MAX_CONNECTIONS` to handle empty or null-like values ("", "null", None) and return None instead. [#519](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/519)
27+
28+
### Removed
29+
30+
- Removed `/collections-search` endpoint from default landing page. It now only shows when `ENABLE_COLLECTIONS_SEARCH_ROUTE` is set to `True`. [#524](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/524)
31+
2232
## [v6.7.2] - 2025-11-04
2333

2434
### Fixed
@@ -623,7 +633,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
623633
- Use genexp in execute_search and get_all_collections to return results.
624634
- Added db_to_stac serializer to item_collection method in core.py.
625635

626-
[Unreleased]: https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/compare/v6.7.2...main
636+
[Unreleased]: https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/compare/v6.7.3...main
637+
[v6.7.3]: https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/compare/v6.7.2...v6.7.3
627638
[v6.7.2]: https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/compare/v6.7.1...v6.7.2
628639
[v6.7.1]: https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/compare/v6.7.0...v6.7.1
629640
[v6.7.0]: https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/compare/v6.6.0...v6.7.0

README.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ The following organizations have contributed time and/or funding to support the
3030

3131
## Latest News
3232

33+
- **11/07/2025:** 🌍 The SFEOS STAC Viewer is now available at: https://healy-hyperspatial.github.io/sfeos-web. Use this site to examine your data and test your STAC API!
3334
- **10/24/2025:** Added `previous_token` pagination using Redis for efficient navigation. This feature allows users to navigate backwards through large result sets by storing pagination state in Redis. To use this feature, ensure Redis is configured (see [Redis for navigation](#redis-for-navigation)) and set `REDIS_ENABLE=true` in your environment.
3435
- **10/23/2025:** The `EXCLUDED_FROM_QUERYABLES` environment variable was added to exclude fields from the `queryables` endpoint. See [docs](#excluding-fields-from-queryables).
3536
- **10/15/2025:** 🚀 SFEOS Tools v0.1.0 Released! - The new `sfeos-tools` CLI is now available on [PyPI](https://pypi.org/project/sfeos-tools/)
@@ -94,6 +95,7 @@ This project is built on the following technologies: STAC, stac-fastapi, FastAPI
9495
- [Table of Contents](#table-of-contents)
9596
- [Collection Search Extensions](#collection-search-extensions)
9697
- [Documentation & Resources](#documentation--resources)
98+
- [SFEOS STAC Viewer](#sfeos-stac-viewer)
9799
- [Package Structure](#package-structure)
98100
- [Examples](#examples)
99101
- [Performance](#performance)
@@ -137,6 +139,31 @@ This project is built on the following technologies: STAC, stac-fastapi, FastAPI
137139
- [Gitter Chat](https://app.gitter.im/#/room/#stac-fastapi-elasticsearch_community:gitter.im) - For real-time discussions
138140
- [GitHub Discussions](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/discussions) - For longer-form questions and answers
139141

142+
## SFEOS STAC Viewer
143+
144+
The SFEOS STAC viewer is a web-based application for examining and testing STAC APIs. It provides an interactive interface to explore geospatial data catalogs, visualize spatial extents, and test API endpoints.
145+
146+
### Access
147+
148+
The viewer is available at: https://healy-hyperspatial.github.io/sfeos-web/
149+
150+
### Features
151+
152+
- Browse collections and items interactively
153+
- Interactive map visualization of spatial extents
154+
- Test API endpoints directly from the interface
155+
- Search and filter capabilities for exploring data
156+
157+
### Usage
158+
159+
Navigate to the URL above and connect to your SFEOS API instance by providing the base URL of your STAC API. This is done with the `API SERVER` button on the right side of the page.
160+
161+
You can also override the default STAC API URL by appending the `stacApiUrl` parameter to the application URL. For example:
162+
163+
https://healy-hyperspatial.github.io/sfeos-web?stacApiUrl=http://localhost:8080
164+
165+
**Note**: The parameter name `stacApiUrl` is case-sensitive. This allows you to connect to different STAC API servers without modifying the web app configuration.
166+
140167
## Collection Search Extensions
141168

142169
SFEOS provides enhanced collection search capabilities through two primary routes:

stac_fastapi/core/stac_fastapi/core/core.py

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -137,20 +137,6 @@ def _landing_page(
137137
"href": urljoin(base_url, "search"),
138138
"method": "POST",
139139
},
140-
{
141-
"rel": "collections-search",
142-
"type": "application/json",
143-
"title": "Collections Search",
144-
"href": urljoin(base_url, "collections-search"),
145-
"method": "GET",
146-
},
147-
{
148-
"rel": "collections-search",
149-
"type": "application/json",
150-
"title": "Collections Search",
151-
"href": urljoin(base_url, "collections-search"),
152-
"method": "POST",
153-
},
154140
],
155141
stac_extensions=extension_schemas,
156142
)
@@ -202,6 +188,26 @@ async def landing_page(self, **kwargs) -> stac_types.LandingPage:
202188
]
203189
)
204190

191+
if self.extension_is_enabled("CollectionsSearchEndpointExtension"):
192+
landing_page["links"].extend(
193+
[
194+
{
195+
"rel": "collections-search",
196+
"type": "application/json",
197+
"title": "Collections Search",
198+
"href": urljoin(base_url, "collections-search"),
199+
"method": "GET",
200+
},
201+
{
202+
"rel": "collections-search",
203+
"type": "application/json",
204+
"title": "Collections Search",
205+
"href": urljoin(base_url, "collections-search"),
206+
"method": "POST",
207+
},
208+
]
209+
)
210+
205211
# Add OpenAPI URL
206212
landing_page["links"].append(
207213
{

stac_fastapi/core/stac_fastapi/core/redis_utils.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,14 @@ def validate_db_sentinel(cls, v: int) -> int:
3636
raise ValueError("REDIS_DB must be a positive integer")
3737
return v
3838

39+
@field_validator("REDIS_MAX_CONNECTIONS", mode="before")
40+
@classmethod
41+
def validate_max_connections(cls, v):
42+
"""Handle empty/None values for REDIS_MAX_CONNECTIONS."""
43+
if v in ["", "null", "Null", "NULL", "none", "None", "NONE", None]:
44+
return None
45+
return v
46+
3947
@field_validator("REDIS_SELF_LINK_TTL")
4048
@classmethod
4149
def validate_self_link_ttl_sentinel(cls, v: int) -> int:
@@ -118,6 +126,14 @@ def validate_db_standalone(cls, v: int) -> int:
118126
raise ValueError("REDIS_DB must be a positive integer")
119127
return v
120128

129+
@field_validator("REDIS_MAX_CONNECTIONS", mode="before")
130+
@classmethod
131+
def validate_max_connections(cls, v):
132+
"""Handle empty/None values for REDIS_MAX_CONNECTIONS."""
133+
if v in ["", "null", "Null", "NULL", "none", "None", "NONE", None]:
134+
return None
135+
return v
136+
121137
@field_validator("REDIS_SELF_LINK_TTL")
122138
@classmethod
123139
def validate_self_link_ttl_standalone(cls, v: int) -> int:
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
"""library version."""
2-
__version__ = "6.7.2"
2+
__version__ = "6.7.3"

stac_fastapi/elasticsearch/pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ keywords = [
3030
]
3131
dynamic = ["version"]
3232
dependencies = [
33-
"stac-fastapi-core==6.7.2",
34-
"sfeos-helpers==6.7.2",
33+
"stac-fastapi-core==6.7.3",
34+
"sfeos-helpers==6.7.3",
3535
"elasticsearch[async]~=8.19.1",
3636
"uvicorn~=0.23.0",
3737
"starlette>=0.35.0,<0.36.0",
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
"""library version."""
2-
__version__ = "6.7.2"
2+
__version__ = "6.7.3"

stac_fastapi/opensearch/pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ keywords = [
3030
]
3131
dynamic = ["version"]
3232
dependencies = [
33-
"stac-fastapi-core==6.7.2",
34-
"sfeos-helpers==6.7.2",
33+
"stac-fastapi-core==6.7.3",
34+
"sfeos-helpers==6.7.3",
3535
"opensearch-py~=2.8.0",
3636
"opensearch-py[async]~=2.8.0",
3737
"uvicorn~=0.23.0",
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
"""library version."""
2-
__version__ = "6.7.2"
2+
__version__ = "6.7.3"

stac_fastapi/sfeos_helpers/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ keywords = [
3131
]
3232
dynamic = ["version"]
3333
dependencies = [
34-
"stac-fastapi.core==6.7.2",
34+
"stac-fastapi.core==6.7.3",
3535
]
3636

3737
[project.urls]

0 commit comments

Comments
 (0)