All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Update to default to OpenSearch 2.13
3.7.0 - 2024-05-14
- For the first item indexed in a new collection, if all values in the
proj:transform
array were integers, the values were typed as integers, which would then cause an error for subsequent items that had float values in the array.
- Allow the following CORS headers to be configured with configuration variables:
- Access-Control-Allow-Origin:
CORS_ORIGIN
- Access-Control-Allow-Credentials:
CORS_CREDENTIALS
- Access-Control-Allow-Methods:
CORS_METHODS
- Access-Control-Allow-Headers:
CORS_HEADERS
- Access-Control-Allow-Origin:
3.6.0 - 2024-02-07
- Deprecated
grid_geohex_frequency
,grid_geohash_frequency
, andgrid_geotile_frequency
aggregations in favor of newcentroid_geohash_grid_frequency
,centroid_geohex_grid_frequency
, andcentroid_geotile_grid_frequency
aggregations
- Added
geometry_geohash_grid_frequency
andgeometry_geotile_grid_frequency
that aggregate over the geometry of each Item rather than the centroid. Note that the geohex aggregationgeometry_geohex_grid_frequency
is not implemented, as OpenSearch 2.11 does not yet support geohex_grid aggregations over geo_shape fields.
3.5.0 - 2024-01-19
- When using sortby, next links were incorrect.
3.4.0 - 2023-12-15
- Ingest lambda will return a failure if there are errors during ingesting. Previously, errors would only be logged and the lambda would always return a success response.
- Landing page (/) and collections endpoint (/collections) now return a 500 if create_indices has not been run or cannot connect to database.
3.3.0 - 2023-12-04
- redocly devDependency for docs build
- Unused devDependencies for old docs build
- Old
./docs
directory and out of date docs - Removed support for grid_code_landsat_frequency aggregation.
- STAC API Docs now build and deploy to GitHub Pages using redocly
3.2.0 - 2023-11-29
- Better error handling when create_index fails.
- Removed usages of aws-sdk that were missed in 3.0.0.
3.1.0 - 2023-11-28
- Added support for AWS IAM authentication to AWS OpenSearch Serverless
- Replaced use of aws-os-connection library for AWS IAM authentication with support in opensearch-js.
- Default to OpenSearch 2.11
3.0.0 - 2023-11-09
- Use AWS SDK for JavaScript v3 instead of v2
- Use Node 18 by default (with AWS SDK v3 preinstalled, instead of v2)
2.4.0 - 2023-11-08
- Fix OpenAPI spec version from 1.0.0-rc.4 to 1.0.0
- Update fields, sort, and query extensions to v1.0.0
- Update transaction extension to v1.0.0-rc.3
- Default to OpenSearch 2.9
- Replace geo_shape mapping for proj:geometry field with object, as this fails when the geometry is not a valid GeoJSON shape, e.g., coordinate points are not lat/lon.
2.3.0 - 2023-09-12
- Default to OpenSearch 2.7
- "AWS Connection" mode support has been re-added.
2.2.3 - 2023-07-14
- Simplify the error handling around geometry errors.
- When an OpenSearch request returns a 400 status code, use this same status code with a meaningful error message in the stac-server response, instead of always returning a 500 error.
2.2.2 - 2023-07-06
- Revert validation of Search intersects geometry added in 2.0.0, as it was too strict and rejected some usable geometries.
2.2.1 - 2023-07-06
- Aggregations 'grid_code_frequency' and 'grid_code_landsat_frequency' were inadvertently configured to only return 10 results, now they return all results.
- Added API Gateway logging config to example serverless.yml config.
2.2.0 - 2023-07-03
- Search parameters are now logged at info instead of debug.
2.1.0 - 2023-06-29
- Post-ingest SNS topic was not being published to when deployed as a Lambda.
2.0.0 - 2023-06-26
- Elasticsearch is no longer supported as a backend. Only OpenSearch is now supported.
- Only fine-grained access control is supported for connecting to OpenSearch. "AWS Connection" mode is no longer supported.
- Elasticsearch is no longer supported as a backend. Only OpenSearch is now supported.
- Only fine-grained access control is supported for connecting to OpenSearch. "AWS Connection" mode is no longer supported.
- Publish ingest results to a post-ingest SNS topic
- Add datetime and bbox attributes to post-ingest SNS messages
- Support for Query Extension operators neq, startsWith, endsWith, and contains.
- Validate intersects geometry before sending to Search + better response parsing.
- Remove node streams-based ingest code to prepare for post-ingest notifications
- Use the
type
field to determine if ingest is a Collection or Item - Aggregations
grid_code_frequency
andgrid_code_landsat_frequency
are no longer restricted to 2000 buckets
1.1.0 - 2023-05-02
- Adds API Gateway ID to cloudwatch logs.
- Logs the start of the request in case of Lambda timeout.
1.0.0 - 2023-04-24
- STAC API Foundation conformance classes are now 1.0.0
- Updated example serverless configuration to use OpenSearch 2.5.
- Added
stac_version
to the default set of fields returned when thefields
parameter is an empty value. - STAC API Fields Extension conformance class is now 1.0.0-rc.3
- POST /aggregate endpoints were removed, as they didn't work correctly.
- Added support for
/aggregations
,/collections/{collectionId}/aggregations
, and/collections/{collectionId}/aggregate
endpoints. /search
ItemCollection now hasroot
link relation.- Added grid_geohex_frequency, grid_geohash_frequency, and grid_geotile_frequency aggregations
/api
and/api.html
endpoints were broken, now fixed
0.8.1 - 2023-03-29
- Thumbnail support will now look at Asset or Item level
storage:region
field to determine the region for generating the pre-signed URL for the thumbnail. Previously used the default behavior of AWS SDK.
0.8.0 - 2023-03-06
- Added support for root and collection-level queryables to be used for Query Extension filtering.
0.7.0 - 2023-02-09
- ESM modules are used instead of CommonJS
- Updated pre-hook auth token example to use SecretsManager rather than single values.
0.6.0 - 2023-01-24
- Log level configuration now has an effect on log levels
- Log level must be configured with lowercase values error, warn, info, http, verbose, debug, silly instead of uppercase values (this config had no effect before)
- Default request logging format is now "tiny" instead of "dev". Previously, the "dev" format wrote color codes into CloudWatch logs, which cluttered output, as they were not used in display.
- Search query and response body is now logged at level "debug" rather than "info"
- Ingested item body is now logged at level "debug" rather than "info"
0.5.2 - 2023-01-17
- Fixed incorrect usage of
application/geo+json
in several link relations. - When cross-cluster search is configured, the first search without a collection returned zero results.
0.5.1 - 2023-01-10
- Max size for POST body is now 1mb instead of 100kb.
0.5.0 - 2022-12-23
- stac_api_version is no longer field in the root catalog. This was removed from the STAC API spec several versions ago, in favor of the conformance classes.
- STAC_API_VERSION environment variable is no longer supported. The version is now hard-coded to 1.0.0-rc.2
lambdaHashingVersion: 20201221
is now the default for serverless, and has been removed from the serverless example config file.
- Adds support for authenticating to OpenSearch with a username and password when fine-grained access control is enabled.
- (Experimental) Aggregation Extension endpoint /aggregate
- Added pre-hook and post-hook Lambda examples
- POST /collections endpoint to create collections
- Configuration of shards and replicas for the indices containing Items can now be done with environment variables ITEMS_INDICIES_NUM_OF_SHARDS and ITEMS_INDICIES_NUM_OF_REPLICAS.
- (Experimental) Adds Item 'thumbnail' link to presign an s3 protocol thumbnail asset ARN
- ES_HOST variable is now OPENSEARCH_HOST, but both will work for now.
- ES_BATCH_SIZE variable is now INGEST_BATCH_SIZE. Both will work. It is recommended not to configure this explicitly if not changing the value from the default of 500.
- Landing Page (root) now has links for both GET and POST methods of search link relation
- The STAC API version is now 1.0.0-rc.2
- AWS OpenSearch Service OpenSearch 2.3 is used as the default instead of Elasticsearch 7.10. See migration section in README.md.
- The serverless.example.yml file now has zone awareness enabled and an even number of Elasticsearch nodes
- Upgrade serverless to 3.x
- Remove use of serverless-psuedo-parameters
- Upgrade to Node 16
- Collections endpoint (/collections) now has
self
androot
link relations.
- ES_BATCH_SIZE variable (replaced by INGEST_BATCH_SIZE)
- ES_HOST variable (replaced by OPENSEARCH_HOST variable)
0.4.2 - 2022-12-20
- (Experimental) Adds Item 'thumbnail' link to presign an s3 protocol thumbnail asset ARN
0.4.1 - 2022-07-11
- Added proper value for 'collections' parameter in the next page link in the result of a GET request
- Added mappings for 'id' and 'collection' for default sort keys
- Added STAC_API_VERSION as an environment variable to the serverless.yml file
- Added STAC_API_VERSION to display on the API landing page within the api.js file under src/lib/api.js in the collectionsToCatalogLinks function
- Add support for pre- and post-hooks
- Modified sortby and collections parameters in nextlink
- Used map instead of foreach/push in api.js file
- Changed the rel type to 'server' for the URL to the STAC API webpage inside the Links object
- Modified sortby and collections parameters in nextlink
- Used map instead of foreach/push in api.js file
- Compression of responses is now handled by API Gateway and not Express. This means that the uncompressed response from stac-server must be less than 6 MB.
- Removed the failed-ingest Lambda function from the serverless.yml file since this function is no longer needed
- Deleted failed-ingest folder from the src/lambdas directory
0.4.0 - 2022-04-19
- Add conformance classes for
STAC API - Features
andSTAC API - Collections
. Both were already fully-supported, but were not advertised in the landing page conformsTo attribute or the /conformance endpoint. - Items larger than 256 KB can now be ingested by writing their contents to S3
- API responses are now compressed
- Transaction Extension is now implemented
- Landing Page link relation service-doc now exists, and points to a Redoc instance
- If a request includes the
X-STAC-Endpoint
header, that endpoint will be used when generating link hrefs
- Open-ended datetime intervals using either empty string or '..' now work
- Correct content types are now returned
- Searching for a nonexistent collection returns empty results
- Re-ingesting an Item maintains the existing value of properties.created and sets properties.updated to now
- Fixes the responses from
/collections/{collectionId}
,/collections/{collectionId}/items
, and/collection/{collectionId}/items/{itemId}
. - Search limit parameter is now validated to be between 1 and 10000 inclusive
- Search datetime parameter is now strictly validated as a RFC 3339 datetime or interval of two datetimes
- Added
root
link relation to Landing Page (/
) - GET /search only accepts a bbox value of a comma-separated string and POST /search only accepts a bbox array of numbers. Previously, both methods accepted both formats in violation of the STAC API spec.
- Upgrade to Node 14
- Elasticsearch version update 7.9 -> 7.10
- Use Express for API routing
- Item and collection ingest operations will full replace an item with the same ID. Previously, partial-updates were being performed.
- Improvements to Elasticsearch field mappings
- PATCH /collections/:collectionId/items/:itemId now returns 204 No Content as succcess instead of 200 and the updated Item
- Default sortby is now guaranteed to be stable. Previously, it was only by
properties.datetime
, not it is byproperties.datetime
,id
, andcollection
. - ItemCollection results no longer have a
prev
link relation. This is a by-product of changing pagination to use Elasticsearch's more performantsearch_after
mechanism rather thanpage
- Pagination works past 10,000 items now
- An invalid search
intersects
parameter may sometimes return a 500 instead of a 400 status code.
- Querying Items in a Collection by POST to /collections/:collectionId/items is no longer supported, as this is forbidden by the STAC API - Features conformance class because it conflicts with the Transaction Extension
0.3.1 - 2021-07-28
- Root catalog now properly includes
type: Catalog
0.3.0 - 2021-07-06
- Added conformsTo to root catalog
- Added geo_point mapping to items -> properties -> epsg:centroid
- Array GET parameters can now be comma-delimited, as per spec
- Collections link rel type changed to
data
- Added required rel=search links in root
- Geometry now properly being serialized
- Multiple security vulnerability updaets in dependent libraries
- Integration tests
- Elasticsearch version update 6.8 -> 7.9
- Updated all mappings
- Enforce only HTTPS access
- Migrate base configuration from t2.small -> t3.small instances
- Updated integration tests to use more update STAC 1.0.0 spec
- Some fields, such as assets and links, are now excluded from indexing
- Enforce https
- Increase SQS VisibilityTimeout and Ingest Lambda timeout
- Mapping types (deprecated in Elasticsearch)
0.2.1 - 2020-12-14
- Pagination is now STAC compliant
- Response from
/collections
is now STAC compliant - Return 404 errors when collections or items not found
- Specified mapping for temporal and spatial properties (will auto map)
0.2.0 - 2020-09-21
- Partial STAC transaction extension added, disabled by default - set ENABLE_TRANSACTIONS_EXTENSION=true to enable
- Name changed from 'stac-api' to 'stac-server' to avoid confusion with stac-api-spec
- Elasticsearch client library updated to @elastic/elasticsearch
- Collection properties no longer merged into Item on ingest (commons extension removed from STAC)
0.1.0 - 2020-03-20
Initial release, forked from sat-api.
Compliant with STAC 0.9.0