API Reference#

This section is autogenerated from in-line code documentation. It is mostly useful as a reference for the various classes, methods, and other objects in the library, but is not intended to function as a starting point for working with pystac_client.

Client#

Client is the base PySTAC-Client that inherits from Catalog. In addition to the PySTAC functionality, Client allows opening of API URLs, understanding of conformance, and support for searching and paging through results.

class pystac_client.Client(id, description, title=None, stac_extensions=None, extra_fields=None, href=None, catalog_type=CatalogType.ABSOLUTE_PUBLISHED, *, modifier=None, **kwargs)[source]#

Bases: pystac.catalog.Catalog

A Client for interacting with the root of a STAC Catalog or API

Instances of the Client class inherit from pystac.Catalog and provide a convenient way of interacting with STAC Catalogs OR STAC APIs that conform to the STAC API spec. In addition to being a valid STAC Catalog APIs that have a "conformsTo" indicate that it supports additional functionality on top of a normal STAC Catalog, such as searching items (e.g., /search endpoint).

classmethod from_dict(d, href=None, root=None, migrate=False, preserve_dict=True, modifier=None)[source]#

Parses this STACObject from the passed in dictionary.

Parameters
  • d – The dict to parse.

  • href – Optional href that is the file location of the object being parsed.

  • root – Optional root catalog for this object. If provided, the root of the returned STACObject will be set to this parameter.

  • migrate – Use True if this dict represents JSON from an older STAC object, so that migrations are run against it.

  • preserve_dict – If False, the dict parameter d may be modified during this method call. Otherwise the dict is not mutated. Defaults to True, which results results in a deepcopy of the parameter. Set to False when possible to avoid the performance hit of a deepcopy.

Returns

The STACObject parsed from this dict.

Return type

STACObject

classmethod from_file(href, stac_io=None, headers=None, parameters=None, modifier=None)[source]#

Open a STAC Catalog/API

Returns

A Client (PySTAC Catalog) of the root Catalog for this Catalog/API

Return type

Client

get_all_items()[source]#

Get all items from this catalog and all subcatalogs. Will traverse any subcatalogs recursively, or use the /search endpoint if supported

Returns

Iterator[Item]:: All items that belong to this catalog, and all

catalogs or collections connected to this catalog through child links.

get_collection(collection_id)[source]#

Get a single collection from this Catalog/API

Parameters

collection_id – The Collection ID to get

Returns

A STAC Collection

Return type

CollectionClient

get_collections()[source]#

Get Collections in this Catalog

Gets the collections from the /collections endpoint if supported, otherwise fall back to Catalog behavior of following child links

Returns

Iterator over Collections in Catalog/API

Return type

Iterator[Collection]

get_items()[source]#

Return all items of this catalog.

Returns

Iterator[Item]:: Iterator of items whose parent is this

catalog.

Returns this client’s search link.

Searches for a link with rel=”search” and either a GEOJSON or JSON media type.

Returns

The search link, or None if there is not one found.

Return type

Optional[pystac.Link]

classmethod open(url, headers=None, parameters=None, ignore_conformance=False, modifier=None)[source]#

Opens a STAC Catalog or API This function will read the root catalog of a STAC Catalog or API

Parameters
  • url – The URL of a STAC Catalog.

  • headers – A dictionary of additional headers to use in all requests made to any part of this Catalog/API.

  • parameters – Optional dictionary of query string parameters to include in all requests.

  • ignore_conformance – Ignore any advertised Conformance Classes in this Catalog/API. This means that functions will skip checking conformance, and may throw an unknown error if that feature is not supported, rather than a NotImplementedError.

  • modifier

    A callable that modifies the children collection and items returned by this Client. This can be useful for injecting authentication parameters into child assets to access data from non-public sources.

    The callable should expect a single argument, which will be one of the following types:

    The callable should mutate the argument in place and return None.

    modifier propagates recursively to children of this Client. After getting a child collection with, e.g. Client.get_collection(), the child items of that collection will still be signed with modifier.

Returns

A Client instance for this Catalog/API

Return type

catalog

search(*, method='POST', max_items=None, limit=100, ids=None, collections=None, bbox=None, intersects=None, datetime=None, query=None, filter=None, filter_lang=None, sortby=None, fields=None)[source]#

Query the /search endpoint using the given parameters.

This method returns an ItemSearch instance. See that class’s documentation for details on how to get the number of matches and iterate over results. The url, stac_io`, and client keywords are supplied by this Client instance.

Warning

This method is only implemented if the API conforms to the STAC API - Item Search spec and contains a link with a "rel" type of "search" in its root catalog. If the API does not meet either of these criteria, this method will raise a NotImplementedError.

Parameters
  • method – The HTTP method to use when making a request to the service. This must be either "GET", "POST", or None. If None, this will default to "POST". If a "POST" request receives a 405 status for the response, it will automatically retry with "GET" for all subsequent requests.

  • max_items – The maximum number of items to return from the search, even if there are more matching results. This client to limit the total number of Items returned from the items(), item_collections(), and items_as_dicts methods(). The client will continue to request pages of items until the number of max items is reached. This parameter defaults to 100. Setting this to None will allow iteration over a possibly very large number of results.

  • limit – A recommendation to the service as to the number of items to return per page of results. Defaults to 100.

  • ids – List of one or more Item ids to filter on.

  • collections – List of one or more Collection IDs or pystac.Collection instances. Only Items in one of the provided Collections will be searched

  • bbox – A list, tuple, or iterator representing a bounding box of 2D or 3D coordinates. Results will be filtered to only those intersecting the bounding box.

  • intersects – A string or dictionary representing a GeoJSON geometry, or an object that implements a __geo_interface__ property, as supported by several libraries including Shapely, ArcPy, PySAL, and geojson. Results filtered to only those intersecting the geometry.

  • datetime

    Either a single datetime or datetime range used to filter results. You may express a single datetime using a datetime.datetime instance, a RFC 3339-compliant timestamp, or a simple date string (see below). Instances of datetime.datetime may be either timezone aware or unaware. Timezone aware instances will be converted to a UTC timestamp before being passed to the endpoint. Timezone unaware instances are assumed to represent UTC timestamps. You may represent a datetime range using a "/" separated string as described in the spec, or a list, tuple, or iterator of 2 timestamps or datetime instances. For open-ended ranges, use either ".." ('2020-01-01:00:00:00Z/..', ['2020-01-01:00:00:00Z', '..']) or a value of None (['2020-01-01:00:00:00Z', None]).

    If using a simple date string, the datetime can be specified in YYYY-mm-dd format, optionally truncating to YYYY-mm or just YYYY. Simple date strings will be expanded to include the entire time period, for example:

    • 2017 expands to 2017-01-01T00:00:00Z/2017-12-31T23:59:59Z

    • 2017-06 expands to 2017-06-01T00:00:00Z/2017-06-30T23:59:59Z

    • 2017-06-10 expands to 2017-06-10T00:00:00Z/2017-06-10T23:59:59Z

    If used in a range, the end of the range expands to the end of that day/month/year, for example:

    • 2017/2018 expands to 2017-01-01T00:00:00Z/2018-12-31T23:59:59Z

    • 2017-06/2017-07 expands to 2017-06-01T00:00:00Z/2017-07-31T23:59:59Z

    • 2017-06-10/2017-06-11 expands to 2017-06-10T00:00:00Z/2017-06-11T23:59:59Z

  • query – List or JSON of query parameters as per the STAC API query extension

  • filter – JSON of query parameters as per the STAC API filter extension

  • filter_lang – Language variant used in the filter body. If filter is a dictionary or not provided, defaults to ‘cql2-json’. If filter is a string, defaults to cql2-text.

  • sortby – A single field or list of fields to sort the response by

  • fields – A list of fields to include in the response. Note this may result in invalid STAC objects, as they may not have required fields. Use items_as_dicts to avoid object unmarshalling errors.

Returns

An ItemSearch instance that can be used to iterate through Items.

Return type

search

Raises

NotImplementedError – If the API does not conform to the Item Search spec or does not have a link with a "rel" type of "search".

Collection Client#

Client is the a PySTAC-Client that inherits from Collection. In addition to the PySTAC functionality, CollectionClient allows opening of API URLs, and iterating through items at a search endpoint, if supported.

class pystac_client.CollectionClient(id, description, extent, title=None, stac_extensions=None, href=None, extra_fields=None, catalog_type=None, license='proprietary', keywords=None, providers=None, summaries=None, *, modifier=None, **kwargs)[source]#
classmethod from_dict(d, href=None, root=None, migrate=False, preserve_dict=True, modifier=None)[source]#

Parses this STACObject from the passed in dictionary.

Parameters
  • d – The dict to parse.

  • href – Optional href that is the file location of the object being parsed.

  • root – Optional root catalog for this object. If provided, the root of the returned STACObject will be set to this parameter.

  • migrate – Use True if this dict represents JSON from an older STAC object, so that migrations are run against it.

  • preserve_dict – If False, the dict parameter d may be modified during this method call. Otherwise the dict is not mutated. Defaults to True, which results results in a deepcopy of the parameter. Set to False when possible to avoid the performance hit of a deepcopy.

Returns

The STACObject parsed from this dict.

Return type

STACObject

get_item(id, recursive=False)[source]#

Returns an item with a given ID.

If the collection conforms to [ogcapi-features](https://github.com/radiantearth/stac-api-spec/blob/738f4837ac6bea041dc226219e6d13b2c577fb19/ogcapi-features/README.md), this will use the /collections/{collectionId}/items/{featureId}. Otherwise, the default PySTAC behavior is used.

Parameters
  • id – The ID of the item to find.

  • recursive – If True, search this catalog and all children for the item; otherwise, only search the items of this catalog. Defaults to False.

Returns

The item with the given ID, or None if not found.

Return type

Item or None

get_items()[source]#

Return all items in this Collection.

If the Collection contains a link of with a rel value of items, that link will be used to iterate through items. Otherwise, the default PySTAC behavior is assumed.

Returns

Iterator of items whose parent is this catalog.

Return type

Iterator[Item]

modifier#

STAC API IO#

The StacApiIO class inherits from the Collection class and allows for reading over http, such as with REST APIs.

class pystac_client.stac_api_io.StacApiIO(headers=None, conformance=None, parameters=None)[source]#

Bases: pystac.stac_io.DefaultStacIO

assert_conforms_to(conformance_class)[source]#

Raises a NotImplementedError if the API does not publish the given conformance class. This method only checks against the "conformsTo" property from the API landing page and does not make any additional calls to a /conformance endpoint even if the API provides such an endpoint.

Parameters
  • conformance_class – The ConformanceClasses key to check conformance

  • against.

conforms_to(conformance_class)[source]#

Whether the API conforms to the given standard. This method only checks against the "conformsTo" property from the API landing page and does not make any additional calls to a /conformance endpoint even if the API provides such an endpoint.

Parameters

conformance_class – The ConformanceClasses key to check conformance against.

Returns

Indicates if the API conforms to the given spec or URI.

Return type

bool

get_pages(url, method=None, parameters=None)[source]#

Iterator that yields dictionaries for each page at a STAC paging endpoint, e.g., /collections, /search

Returns

JSON content from a single page

Return type

Dict[str, Any]

read_text(source, *args, **kwargs)[source]#

Read text from the given URI.

Overwrites the default method for reading text from a URL or file to allow urllib.request.Request instances as input. This method also raises any urllib.error.HTTPError exceptions rather than catching them to allow us to handle different response status codes as needed.

request(href, method=None, headers=None, parameters=None)[source]#

Makes a request to an http endpoint

Parameters
  • href (str) – The request URL

  • method (Optional[str], optional) – The http method to use, ‘GET’ or ‘POST’. Defaults to None, which will result in ‘GET’ being used.

  • headers (Optional[Dict[str, str]], optional) – Additional headers to include in request. Defaults to None.

  • parameters (Optional[Dict[str, Any]], optional) – parameters to send with request. Defaults to None.

Raises

APIError – raised if the server returns an error response

Returns

The decoded response from the endpoint

Return type

str

set_conformance(conformance)[source]#

Sets (or clears) the conformance classes for this StacIO.

stac_object_from_dict(d, href=None, root=None, preserve_dict=True)[source]#

Deserializes a STACObject sub-class instance from a dictionary.

Parameters
  • d – The dictionary to deserialize

  • href – Optional href to associate with the STAC object

  • root – Optional root Catalog to associate with the STAC object.

  • preserve_dict – If False, the dict parameter d may be modified during this method call. Otherwise the dict is not mutated. Defaults to True, which results results in a deepcopy of the parameter. Set to False when possible to avoid the performance hit of a deepcopy.

write_text_to_href(href, *args, **kwargs)[source]#

Writes text to file using UTF-8 encoding.

This implementation uses open() and therefore can only write to the local file system.

Parameters
  • href – The path to which the file will be written.

  • txt – The string content to write to the file.

Conformance#

class pystac_client.conformance.ConformanceClasses(value)[source]#

Bases: enum.Enum

Enumeration class for Conformance Classes

COLLECTIONS = 'https://api\\.stacspec\\.org/v1\\.0\\.(.*)/collections'#
CONTEXT = 'https://api\\.stacspec\\.org/v1\\.0\\.(.*)/item\\-search\\#context'#
CORE = 'https://api\\.stacspec\\.org/v1\\.0\\.(.*)/core'#
FEATURES = 'https://api\\.stacspec\\.org/v1\\.0\\.(.*)/ogcapi\\-features'#
FIELDS = 'https://api\\.stacspec\\.org/v1\\.0\\.(.*)/item\\-search\\#fields'#
FILTER = 'https://api\\.stacspec\\.org/v1\\.0\\.(.*)/item\\-search\\#filter'#
QUERY = 'https://api\\.stacspec\\.org/v1\\.0\\.(.*)/item\\-search\\#query'#
SORT = 'https://api\\.stacspec\\.org/v1\\.0\\.(.*)/item\\-search\\#sort'#
stac_prefix = 'https://api\\.stacspec\\.org/v1\\.0\\.'#

Exceptions#

exception pystac_client.exceptions.APIError[source]#

Bases: Exception

Raised when unexpected server error.

classmethod from_response(response)[source]#
status_code#
exception pystac_client.exceptions.ParametersError[source]#

Bases: Exception

Raised when invalid parameters are used in a query