Theme fields

The extension uses the unprefixed JSON field themes. Each entry groups concepts from one scheme. The package declares the Themes v1.0.0 schema.

JSON field Python attribute Python type Meaning
themes ThemesExtension.themes list[Theme] \| None The object's thematic classifications.
scheme Theme.scheme str URI identifying the vocabulary or knowledge organization system.
concepts Theme.concepts list[ThemeConcept] Concepts selected from that scheme.
id ThemeConcept.id str Identifier of a concept within the scheme.
title ThemeConcept.title str \| None Optional human-readable title.
description ThemeConcept.description str \| None Optional description of the concept.
url ThemeConcept.url str \| None Optional link describing the concept.

ThemeConcept.to_dict() omits optional values set to None. Theme.from_dict() and ThemeConcept.from_dict() require their mandatory keys; they do not perform schema validation or preserve unrecognized fields.

Storage

Items store themes inside properties. Catalogs and Collections store it at the top level through extra_fields. ThemesExtension.summaries(collection) separately accesses collection.summaries["themes"].

A missing or JSON-null theme field reads as None. Assigning None removes the field; assigning [] stores an empty list. These storage behaviors do not establish schema validity.

Getters deserialize new Python objects. After changing a returned theme or concept, assign the list back to the wrapper to persist the edit. Assignments serialize values immediately and preserve unrelated STAC properties.