Reference

Configuration

Complete YAML structure, catalog fields, and global search settings.

Configuration sources

Python accepts a dictionary with optional catalogs, providers, and settings keys. The YAML loader is stricter: the current SuperStacConfig requires all three top-level fields, and Settings has six required fields. Start from the complete downloadable config.

The filename must be superstac.yml or superstac.yaml, even when supplied by an explicit path.

Catalog entries

FieldMeaning
idRequired local identifier.
urlAlways provide the STAC API root URL; conversion assumes it is present.
providerOptional ID of an already registered provider.
title, descriptionOptional descriptive strings.
settingsOptional complete per-catalog settings object.
collection_aliasesDictionary of canonical collection IDs to local IDs.
asset_aliasesDictionary keyed by canonical collection ID, then canonical asset key to local asset key.

If you include catalog settings, supply health_check_strategy and healthy_status_code_range. The optional enable_background_health_monitor controls that catalog's monitor.

# One catalog entry, to place inside the catalogs list.
- id: earth-search
  url: https://earth-search.aws.element84.com/v1
  settings:
    health_check_strategy: "15m"
    healthy_status_code_range: [200, 299]
    enable_background_health_monitor: false

Use these per-catalog fields to control health checks. Their defaults are hourly and HTTP 200–299; current health monitoring reads the catalog values, not the similarly named global settings.

Provider entries

id is required. Optional descriptive fields are name, description, logo_url, and website_url. Use providers: [] when no grouping is needed. Assign membership with each catalog's provider; the config conversion does not use provider catalog_ids.

Global settings

Defaults below describe a new in-memory backend. In YAML, the first six fields are still required explicitly; Rust Default is not automatically applied by the YAML deserializer.

FieldDefaultNotes
health_check_strategyhourlyRequired in YAML; current monitors read per-catalog settings.
healthy_status_code_range[200, 299]Required in YAML; inclusive range; use catalog override for monitoring.
auto_fix_duplicate_catalog_idtrueRequired in YAML; suffix duplicate IDs instead of failing.
auto_fix_duplicate_provider_idtrueRequired in YAML; same behavior for providers.
log_levelinfoRequired in YAML; info, warning, or debug.
logging_enabledtrueRequired in YAML; controls CLI tracing setup.
search_healthy_catalogs_onlytrueFilter candidates by health.
deduplicate_itemstrueCollapse records sharing Item.id.
unify_responsetrueNormalize collection and asset keys using aliases.
max_concurrent_catalogs8Concurrent catalog searches.
per_catalog_timeout_seconds30Timeout per search attempt.
max_retry_attempts2Includes initial attempt; 1 means no retry.
retry_initial_backoff_ms100Delay before first retry.
retry_max_backoff_ms2000Backoff ceiling.
max_items_per_catalog1000Hard cap; effective cap is the smaller of this and the query limit.
enable_background_health_monitortrueCurrent memory-storage update path does not apply this global field; use per-catalog override.

Use positive values for execution limits. Optional fields omitted from YAML preserve the memory backend's defaults through the loader's partial update path.

Health frequency values

Named YAML values are minutely, hourly, daily, weekly, and monthly (30 days). Custom strings accept integer seconds, minutes, or hours: "30s", "15m", "2h". Use a positive duration.

Updating Python settings

from superstac import Client

client = Client()
client.update_settings({"max_concurrent_catalogs": 4, "max_retry_attempts": 1})
print(client.get_settings())

These settings are held in memory and affect later searches. Read health and retries for lifecycle limitations. These references document the working tree, so released packages may differ.

On this page