``stac-validator`` documentation
################################
``stac-validator`` is a library and cli tool for validating `SpatioTemporal Asset Catalogs (STAC) `_. It is written in Python and can be used to validate STAC Items, Collections, and Catalogs.
``stac-validator`` was first developed by `Sparkgeo `_. It later received support from the `Radiant Earth Foundation `_ as part of the work done for `stac-check `_, which uses the ``stac-validator`` library and adds linting functionality. The ``stac-validator`` CLI tool offers more validation options compared to stac-check. Recent development on ``stac-validator`` has been supported by `Sparkgeo `_ as well as other open-source contributors.
Installation
------------
``stac-validator`` can be installed from PyPI:
.. code-block:: bash
$ pip install stac-validator
CLI Usage
---------
``stac-validator`` can be used as a library or as a command line tool.
.. code-block:: shell
$ stac-validator --help
Usage: stac-validator [OPTIONS] STAC_FILE
The `stac-validator` command line tool. Validates a STAC
file against the STAC specification and prints the validation results to the
console.
Args:
stac_file (str): Path to the STAC file to be validated.
item_collection (bool): Whether to validate item collection responses.
pages (int): Maximum number of pages to validate via `item_collection`.
recursive (bool): Whether to recursively validate all related STAC objects.
max_depth (int): Maximum depth to traverse when recursing.
core (bool): Whether to validate core STAC objects only.
extensions (bool): Whether to validate extensions only.
links (bool): Whether to additionally validate links. Only works with default mode.
assets (bool): Whether to additionally validate assets. Only works with default mode.
custom (str): Path to a custom schema file to validate against.
verbose (bool): Whether to enable verbose output for recursive mode.
no_output (bool): Whether to print output to console.
log_file (str): Path to a log file to save full recursive output.
Returns:
None
Raises:
SystemExit: Exits the program with a status code of 0 if the STAC file is valid, or 1 if it is invalid.
Options:
--core Validate core stac object only without extensions.
--extensions Validate extensions only.
--links Additionally validate links. Only works with default mode.
--assets Additionally validate assets. Only works with default mode.
-c, --custom TEXT Validate against a custom schema (local filepath or remote schema).
-r, --recursive Recursively validate all related stac objects.
-m, --max-depth INTEGER Maximum depth to traverse when recursing. Omit this argument to get full recursion.
Ignored if `recursive == False`.
--item-collection Validate item collection response. Can be combined with --pages. Defaults to one page.
-p, --pages INTEGER Maximum number of pages to validate via --item-collection. Defaults to one page.
-v, --verbose Enables verbose output for recursive mode.
--no_output Do not print output to console.
--log_file TEXT Save full recursive output to log file (local filepath).
--version Show the version and exit.
--help Show this message and exit.
``stac-validator`` can be used to validate local or remotely-hosted STAC objects. The tool will return a list of validation errors if the STAC object is invalid.
Library
~~~~~~~
``stac-validator`` can be used as a library to validate STAC Items, Collections, and Catalogs.
It can be used with local or remotely-hosted STAC objects as well as STAC objects represented as a Python dictionary.
The library will return a list of validation errors if the STAC object is invalid.
Examples
~~~~~~~~
``python dictionary``
.. code-block:: bash
from stac_validator import stac_validator
stac = stac_validator.StacValidate()
stac.validate_dict(dictionary)
print(stac.message)
``python item-collection``
.. code-block:: bash
from stac_validator import stac_validator
stac = stac_validator.StacValidate()
stac.validate_item_collection_dict(item_collection_dict)
print(stac.message)
Versions supported
~~~~~~~~~~~~~~~~~~
``stac-validator`` supports the following versions of the STAC specification:
``[0.8.0, 0.8.1, 0.9.0, 1.0.0-beta.1, 1.0.0-beta.2, 1.0.0-rc.1, 1.0.0-rc.2, 1.0.0-rc.3, 1.0.0-rc.4, 1.0.0]``
.. toctree::
:maxdepth: 1
cli
utilities
validator