openapi: 3.1.0 info: title: Hydrosat STAC Catalog Search API version: '0.1' tags: - name: Search paths: /search: post: tags: - Search summary: Search description: Endpoint. operationId: Search_search_post requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SearchPostRequest' responses: '200': description: Successful Response content: application/geo+json: schema: $ref: '#/components/schemas/ItemCollection' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' get: tags: - Search summary: Search description: Endpoint. operationId: Search_search_get parameters: - name: collections in: query required: false schema: anyOf: - type: string - type: 'null' description: Array of collection Ids to search for items. title: Collections description: Array of collection Ids to search for items. examples: user-provided: {} single-collection: value: collection1 multi-collections: value: collection1,collection2 - name: ids in: query required: false schema: anyOf: - type: string - type: 'null' description: Array of Item ids to return. title: Ids description: Array of Item ids to return. examples: user-provided: {} single-item: value: item1 multi-items: value: item1,item2 - name: bbox in: query required: false schema: anyOf: - type: string - type: 'null' description: Only return items intersecting this bounding box. Mutually exclusive with **intersects**. title: Bbox description: Only return items intersecting this bounding box. Mutually exclusive with **intersects**. examples: user-provided: {} Montreal: value: -73.896103,45.364690,-73.413734,45.674283 - name: intersects in: query required: false schema: anyOf: - type: string - type: 'null' description: "Only return items intersecting this GeoJSON Geometry. Mutually exclusive with **bbox**. \n\n*Remember to URL encode the GeoJSON geometry when using GET request*." title: Intersects description: "Only return items intersecting this GeoJSON Geometry. Mutually exclusive with **bbox**. \n\n*Remember to URL encode the GeoJSON geometry when using GET request*." examples: user-provided: {} madrid: value: type: Feature properties: {} geometry: coordinates: - - - -3.8549260500072933 - 40.54923557897152 - - -3.8549260500072933 - 40.29428000041938 - - -3.516597069715033 - 40.29428000041938 - - -3.516597069715033 - 40.54923557897152 - - -3.8549260500072933 - 40.54923557897152 type: Polygon new-york: value: type: Feature properties: {} geometry: coordinates: - - - -74.50117532354284 - 41.128266394414055 - - -74.50117532354284 - 40.35633909727355 - - -73.46713183168603 - 40.35633909727355 - - -73.46713183168603 - 41.128266394414055 - - -74.50117532354284 - 41.128266394414055 type: Polygon - name: datetime in: query required: false schema: anyOf: - type: string - type: 'null' description: 'Only return items that have a temporal property that intersects this value. Either a date-time or an interval, open or closed. Date and time expressions adhere to RFC 3339. Open intervals are expressed using double-dots.' title: Datetime description: 'Only return items that have a temporal property that intersects this value. Either a date-time or an interval, open or closed. Date and time expressions adhere to RFC 3339. Open intervals are expressed using double-dots.' examples: user-provided: {} datetime: value: '2018-02-12T23:20:50Z' closed-interval: value: 2018-02-12T00:00:00Z/2018-03-18T12:31:12Z open-interval-from: value: 2018-02-12T00:00:00Z/.. open-interval-to: value: ../2018-03-18T12:31:12Z - name: limit in: query required: false schema: anyOf: - type: integer exclusiveMinimum: 0 - type: 'null' description: Limits the number of results that are included in each page of the response (capped to 10_000). default: 10 title: Limit description: Limits the number of results that are included in each page of the response (capped to 10_000). - name: filter in: query required: false schema: anyOf: - type: string - type: 'null' description: 'A CQL2 filter expression for filtering items. Supports `CQL2-JSON` as defined in https://docs.ogc.org/is/21-065r2/21-065r2.htmln Remember to URL encode the CQL2-JSON if using GET' title: Filter description: 'A CQL2 filter expression for filtering items. Supports `CQL2-JSON` as defined in https://docs.ogc.org/is/21-065r2/21-065r2.htmln Remember to URL encode the CQL2-JSON if using GET' examples: user-provided: {} landsat8-item: value: id='LC08_L1TP_060247_20180905_20180912_01_T1_L1TP' AND collection='landsat8_l1tp' - name: filter-crs in: query required: false schema: anyOf: - type: string - type: 'null' description: The coordinate reference system (CRS) used by spatial literals in the 'filter' value. Default is `http://www.opengis.net/def/crs/OGC/1.3/CRS84` title: Filter-Crs description: The coordinate reference system (CRS) used by spatial literals in the 'filter' value. Default is `http://www.opengis.net/def/crs/OGC/1.3/CRS84` - name: filter-lang in: query required: false schema: anyOf: - enum: - cql2-json - cql2-text type: string - type: 'null' description: The CQL filter encoding that the 'filter' value uses. default: cql2-text title: Filter-Lang description: The CQL filter encoding that the 'filter' value uses. - name: fields in: query required: false schema: anyOf: - type: string - type: 'null' description: Include or exclude fields from items body. title: Fields description: Include or exclude fields from items body. examples: user-provided: {} datetime: value: properties.datetime - name: sortby in: query required: false schema: anyOf: - type: string - type: 'null' description: An array of property names, prefixed by either '+' for ascending or '-' for descending. If no prefix is provided, '+' is assumed. title: Sortby description: An array of property names, prefixed by either '+' for ascending or '-' for descending. If no prefix is provided, '+' is assumed. examples: user-provided: {} resolution: value: -gsd resolution-and-dates: value: -gsd,-datetime - name: token in: query required: false schema: anyOf: - type: string - type: 'null' title: Token - name: q in: query required: false schema: anyOf: - type: string - type: 'null' description: Parameter to perform free-text queries against STAC metadata title: Q description: Parameter to perform free-text queries against STAC metadata examples: user-provided: {} Coastal: value: ocean,coast responses: '200': description: Successful Response content: application/geo+json: schema: $ref: '#/components/schemas/ItemCollection' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' components: schemas: LineString: properties: bbox: anyOf: - prefixItems: - type: number - type: number - type: number - type: number type: array maxItems: 4 minItems: 4 - prefixItems: - type: number - type: number - type: number - type: number - type: number - type: number type: array maxItems: 6 minItems: 6 - type: 'null' title: Bbox type: type: string const: LineString title: Type coordinates: items: anyOf: - $ref: '#/components/schemas/Position2D' - $ref: '#/components/schemas/Position3D' type: array minItems: 2 title: Coordinates type: object required: - type - coordinates title: LineString description: LineString Model MimeTypes: type: string enum: - image/tiff; application=geotiff - image/tiff; application=geotiff; profile=cloud-optimized - image/jp2 - image/png - image/jpeg - application/geo+json - application/geo+json-seq - application/geopackage+sqlite3 - application/vnd.google-earth.kml+xml - application/vnd.google-earth.kmz - application/x-protobuf - application/vnd.mapbox-vector-tile - application/x-hdf - application/x-hdf5 - application/xml - application/json - application/ndjson - text/html - text/plain - application/vnd.oai.openapi+json;version=3.0 - application/vnd.oai.openapi;version=3.0 - application/schema+json - application/pdf - text/csv - application/vnd.apache.parquet - application/octet-stream title: MimeTypes description: https://github.com/radiantearth/stac-spec/blob/v1.0.0/item-spec/item-spec.md#media-types SortDirections: type: string enum: - asc - desc title: SortDirections Link: properties: href: type: string minLength: 1 title: Href rel: type: string minLength: 1 title: Rel type: anyOf: - $ref: '#/components/schemas/MimeTypes' - type: string - type: 'null' title: Type title: anyOf: - type: string - type: 'null' title: Title additionalProperties: true type: object required: - href - rel title: Link description: https://github.com/radiantearth/stac-spec/blob/v1.0.0/collection-spec/collection-spec.md#link-object MultiLineString: properties: bbox: anyOf: - prefixItems: - type: number - type: number - type: number - type: number type: array maxItems: 4 minItems: 4 - prefixItems: - type: number - type: number - type: number - type: number - type: number - type: number type: array maxItems: 6 minItems: 6 - type: 'null' title: Bbox type: type: string const: MultiLineString title: Type coordinates: items: items: anyOf: - $ref: '#/components/schemas/Position2D' - $ref: '#/components/schemas/Position3D' type: array minItems: 2 type: array title: Coordinates type: object required: - type - coordinates title: MultiLineString description: MultiLineString Model SearchLink: properties: href: type: string pattern: .*\/search(\?.*)?\b title: Href rel: type: string enum: - self - search - next - prev title: Rel type: type: string const: application/geo+json title: Type default: application/geo+json title: anyOf: - type: string - type: 'null' title: Title method: type: string enum: - GET - POST title: Method default: GET headers: anyOf: - additionalProperties: true type: object - type: 'null' title: Headers body: anyOf: - additionalProperties: true type: object - type: 'null' title: Body merge: type: boolean title: Merge default: false additionalProperties: true type: object required: - href - rel title: SearchLink description: https://github.com/radiantearth/stac-api-spec/tree/v1.0.0/item-search#link-relations Point: properties: bbox: anyOf: - prefixItems: - type: number - type: number - type: number - type: number type: array maxItems: 4 minItems: 4 - prefixItems: - type: number - type: number - type: number - type: number - type: number - type: number type: array maxItems: 6 minItems: 6 - type: 'null' title: Bbox type: type: string const: Point title: Type coordinates: anyOf: - $ref: '#/components/schemas/Position2D' - $ref: '#/components/schemas/Position3D' title: Coordinates type: object required: - type - coordinates title: Point description: Point Model stac_pydantic__api__links__Links: items: anyOf: - $ref: '#/components/schemas/SearchLink' - $ref: '#/components/schemas/PaginationLink' - $ref: '#/components/schemas/ItemsLink' - $ref: '#/components/schemas/Link' type: array title: Links HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError ItemProperties: properties: title: anyOf: - type: string - type: 'null' title: Title description: anyOf: - type: string - type: 'null' title: Description datetime: anyOf: - type: string format: date-time - type: 'null' title: Datetime created: anyOf: - type: string format: date-time - type: 'null' title: Created updated: anyOf: - type: string format: date-time - type: 'null' title: Updated start_datetime: anyOf: - type: string format: date-time - type: 'null' title: Start Datetime end_datetime: anyOf: - type: string format: date-time - type: 'null' title: End Datetime license: anyOf: - type: string - type: 'null' title: License providers: anyOf: - items: $ref: '#/components/schemas/Provider' type: array - type: 'null' title: Providers platform: anyOf: - type: string - type: 'null' title: Platform instruments: anyOf: - items: type: string type: array - type: 'null' title: Instruments constellation: anyOf: - type: string - type: 'null' title: Constellation mission: anyOf: - type: string - type: 'null' title: Mission gsd: anyOf: - type: number exclusiveMinimum: 0.0 - type: 'null' title: Gsd additionalProperties: true type: object required: - datetime title: ItemProperties description: https://github.com/radiantearth/stac-spec/blob/v1.0.0/item-spec/item-spec.md#properties-object Polygon: properties: bbox: anyOf: - prefixItems: - type: number - type: number - type: number - type: number type: array maxItems: 4 minItems: 4 - prefixItems: - type: number - type: number - type: number - type: number - type: number - type: number type: array maxItems: 6 minItems: 6 - type: 'null' title: Bbox type: type: string const: Polygon title: Type coordinates: items: items: anyOf: - $ref: '#/components/schemas/Position2D' - $ref: '#/components/schemas/Position3D' type: array minItems: 4 type: array title: Coordinates type: object required: - type - coordinates title: Polygon description: Polygon Model Item: properties: bbox: anyOf: - prefixItems: - type: number - type: number - type: number - type: number type: array maxItems: 4 minItems: 4 - prefixItems: - type: number - type: number - type: number - type: number - type: number - type: number type: array maxItems: 6 minItems: 6 - type: 'null' title: Bbox type: type: string const: Feature title: Type geometry: anyOf: - oneOf: - $ref: '#/components/schemas/Point' - $ref: '#/components/schemas/MultiPoint' - $ref: '#/components/schemas/LineString' - $ref: '#/components/schemas/MultiLineString' - $ref: '#/components/schemas/Polygon' - $ref: '#/components/schemas/MultiPolygon' - $ref: '#/components/schemas/GeometryCollection-Output' discriminator: propertyName: type mapping: GeometryCollection: '#/components/schemas/GeometryCollection-Output' LineString: '#/components/schemas/LineString' MultiLineString: '#/components/schemas/MultiLineString' MultiPoint: '#/components/schemas/MultiPoint' MultiPolygon: '#/components/schemas/MultiPolygon' Point: '#/components/schemas/Point' Polygon: '#/components/schemas/Polygon' - type: 'null' title: Geometry properties: $ref: '#/components/schemas/ItemProperties' id: type: string minLength: 1 title: Id stac_version: type: string pattern: ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$ title: Stac Version default: 1.0.0 assets: additionalProperties: $ref: '#/components/schemas/Asset' type: object title: Assets links: $ref: '#/components/schemas/stac_pydantic__links__Links' stac_extensions: anyOf: - items: type: string minLength: 1 format: uri type: array - type: 'null' title: Stac Extensions default: [] collection: anyOf: - type: string - type: 'null' title: Collection type: object required: - type - geometry - properties - id - assets - links title: Item Position3D: prefixItems: - type: number title: Longitude - type: number title: Latitude - type: number title: Altitude type: array maxItems: 3 minItems: 3 ItemsLink: properties: href: type: string pattern: .*\/items(\?.*)?\b title: Href rel: type: string enum: - self - items title: Rel type: type: string const: application/geo+json title: Type default: application/geo+json title: anyOf: - type: string - type: 'null' title: Title method: type: string enum: - GET - POST title: Method default: GET headers: anyOf: - additionalProperties: true type: object - type: 'null' title: Headers body: anyOf: - additionalProperties: true type: object - type: 'null' title: Body merge: type: boolean title: Merge default: false additionalProperties: true type: object required: - href - rel title: ItemsLink Provider: properties: name: type: string minLength: 1 title: Name description: anyOf: - type: string - type: 'null' title: Description roles: anyOf: - items: type: string type: array - type: 'null' title: Roles url: anyOf: - type: string - type: 'null' title: Url type: object required: - name title: Provider description: https://github.com/radiantearth/stac-spec/blob/v1.0.0/collection-spec/collection-spec.md#provider-object GeometryCollection-Input: properties: bbox: anyOf: - prefixItems: - type: number - type: number - type: number - type: number type: array maxItems: 4 minItems: 4 - prefixItems: - type: number - type: number - type: number - type: number - type: number - type: number type: array maxItems: 6 minItems: 6 - type: 'null' title: Bbox type: type: string const: GeometryCollection title: Type geometries: items: oneOf: - $ref: '#/components/schemas/Point' - $ref: '#/components/schemas/MultiPoint' - $ref: '#/components/schemas/LineString' - $ref: '#/components/schemas/MultiLineString' - $ref: '#/components/schemas/Polygon' - $ref: '#/components/schemas/MultiPolygon' - $ref: '#/components/schemas/GeometryCollection-Input' discriminator: propertyName: type mapping: GeometryCollection: '#/components/schemas/GeometryCollection-Input' LineString: '#/components/schemas/LineString' MultiLineString: '#/components/schemas/MultiLineString' MultiPoint: '#/components/schemas/MultiPoint' MultiPolygon: '#/components/schemas/MultiPolygon' Point: '#/components/schemas/Point' Polygon: '#/components/schemas/Polygon' type: array title: Geometries type: object required: - type - geometries title: GeometryCollection description: GeometryCollection Model GeometryCollection-Output: properties: bbox: anyOf: - prefixItems: - type: number - type: number - type: number - type: number type: array maxItems: 4 minItems: 4 - prefixItems: - type: number - type: number - type: number - type: number - type: number - type: number type: array maxItems: 6 minItems: 6 - type: 'null' title: Bbox type: type: string const: GeometryCollection title: Type geometries: items: oneOf: - $ref: '#/components/schemas/Point' - $ref: '#/components/schemas/MultiPoint' - $ref: '#/components/schemas/LineString' - $ref: '#/components/schemas/MultiLineString' - $ref: '#/components/schemas/Polygon' - $ref: '#/components/schemas/MultiPolygon' - $ref: '#/components/schemas/GeometryCollection-Output' discriminator: propertyName: type mapping: GeometryCollection: '#/components/schemas/GeometryCollection-Output' LineString: '#/components/schemas/LineString' MultiLineString: '#/components/schemas/MultiLineString' MultiPoint: '#/components/schemas/MultiPoint' MultiPolygon: '#/components/schemas/MultiPolygon' Point: '#/components/schemas/Point' Polygon: '#/components/schemas/Polygon' type: array title: Geometries type: object required: - type - geometries title: GeometryCollection description: GeometryCollection Model ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type input: title: Input ctx: type: object title: Context type: object required: - loc - msg - type title: ValidationError SortExtension: properties: field: type: string minLength: 1 title: Field direction: $ref: '#/components/schemas/SortDirections' type: object required: - field - direction title: SortExtension description: https://github.com/radiantearth/stac-api-spec/tree/master/extensions/sort#sort-api-extension MultiPoint: properties: bbox: anyOf: - prefixItems: - type: number - type: number - type: number - type: number type: array maxItems: 4 minItems: 4 - prefixItems: - type: number - type: number - type: number - type: number - type: number - type: number type: array maxItems: 6 minItems: 6 - type: 'null' title: Bbox type: type: string const: MultiPoint title: Type coordinates: items: anyOf: - $ref: '#/components/schemas/Position2D' - $ref: '#/components/schemas/Position3D' type: array title: Coordinates type: object required: - type - coordinates title: MultiPoint description: MultiPoint Model Asset: properties: href: type: string minLength: 1 title: Href type: anyOf: - type: string - type: 'null' title: Type title: anyOf: - type: string - type: 'null' title: Title description: anyOf: - type: string - type: 'null' title: Description roles: anyOf: - items: type: string type: array - type: 'null' title: Roles additionalProperties: true type: object required: - href title: Asset description: https://github.com/radiantearth/stac-spec/blob/v1.0.0/item-spec/item-spec.md#asset-object Position2D: prefixItems: - type: number title: Longitude - type: number title: Latitude type: array maxItems: 2 minItems: 2 stac_pydantic__links__Links: items: $ref: '#/components/schemas/Link' type: array title: Links PostFieldsExtension: properties: include: anyOf: - items: type: string type: array uniqueItems: true - type: 'null' title: Include default: [] exclude: anyOf: - items: type: string type: array uniqueItems: true - type: 'null' title: Exclude default: [] type: object title: PostFieldsExtension description: "FieldsExtension.\n\nAttributes:\n include: set of fields to include.\n exclude: set of fields to exclude." SearchPostRequest: properties: collections: anyOf: - items: type: string type: array - type: 'null' title: Collections ids: anyOf: - items: type: string type: array - type: 'null' title: Ids bbox: anyOf: - prefixItems: - anyOf: - type: number - type: integer - anyOf: - type: number - type: integer - anyOf: - type: number - type: integer - anyOf: - type: number - type: integer type: array maxItems: 4 minItems: 4 - prefixItems: - anyOf: - type: number - type: integer - anyOf: - type: number - type: integer - anyOf: - type: number - type: integer - anyOf: - type: number - type: integer - anyOf: - type: number - type: integer - anyOf: - type: number - type: integer type: array maxItems: 6 minItems: 6 - type: 'null' title: Bbox intersects: anyOf: - $ref: '#/components/schemas/Point' - $ref: '#/components/schemas/MultiPoint' - $ref: '#/components/schemas/LineString' - $ref: '#/components/schemas/MultiLineString' - $ref: '#/components/schemas/Polygon' - $ref: '#/components/schemas/MultiPolygon' - $ref: '#/components/schemas/GeometryCollection-Input' - type: 'null' title: Intersects datetime: anyOf: - type: string - type: 'null' title: Datetime limit: anyOf: - type: integer exclusiveMinimum: 0.0 - type: 'null' title: Limit description: Limits the number of results that are included in each page of the response (capped to 10_000). default: 10 conf: anyOf: - additionalProperties: true type: object - type: 'null' title: Conf filter: anyOf: - additionalProperties: true type: object - type: 'null' title: Filter description: A CQL filter expression for filtering items. examples: - null - args: - args: - property: id - LC08_L1TP_060247_20180905_20180912_01_T1_L1TP op: '=' - args: - property: collection - landsat8_l1tp op: '=' op: and filter-crs: anyOf: - type: string - type: 'null' title: Filter-Crs description: The coordinate reference system (CRS) used by spatial literals in the 'filter' value. Default is `http://www.opengis.net/def/crs/OGC/1.3/CRS84` filter-lang: anyOf: - type: string const: cql2-json - type: 'null' title: Filter-Lang description: The CQL filter encoding that the 'filter' value uses. default: cql2-json fields: anyOf: - $ref: '#/components/schemas/PostFieldsExtension' - type: 'null' description: Include or exclude fields from items body. default: include: [] exclude: [] sortby: anyOf: - items: $ref: '#/components/schemas/SortExtension' type: array - type: 'null' title: Sortby description: 'An array of property (field) names, and direction in form of ''{''field'': '''', ''direction'':''''}''' examples: - null - - direction: asc field: properties.created token: anyOf: - type: string - type: 'null' title: Token q: anyOf: - items: type: string type: array - type: 'null' title: Q description: Parameter to perform free-text queries against STAC metadata type: object title: SearchPostRequest ItemCollection: properties: bbox: anyOf: - prefixItems: - type: number - type: number - type: number - type: number type: array maxItems: 4 minItems: 4 - prefixItems: - type: number - type: number - type: number - type: number - type: number - type: number type: array maxItems: 6 minItems: 6 - type: 'null' title: Bbox type: type: string const: FeatureCollection title: Type features: items: $ref: '#/components/schemas/Item' type: array title: Features links: anyOf: - $ref: '#/components/schemas/stac_pydantic__api__links__Links' - type: 'null' numberMatched: anyOf: - type: integer - type: 'null' title: Numbermatched numberReturned: anyOf: - type: integer - type: 'null' title: Numberreturned type: object required: - type - features title: ItemCollection description: 'https://github.com/radiantearth/stac-api-spec/blob/v1.0.0/fragments/itemcollection/README.md https://github.com/radiantearth/stac-api-spec/blob/v1.0.0/item-search/README.md#link-relations' MultiPolygon: properties: bbox: anyOf: - prefixItems: - type: number - type: number - type: number - type: number type: array maxItems: 4 minItems: 4 - prefixItems: - type: number - type: number - type: number - type: number - type: number - type: number type: array maxItems: 6 minItems: 6 - type: 'null' title: Bbox type: type: string const: MultiPolygon title: Type coordinates: items: items: items: anyOf: - $ref: '#/components/schemas/Position2D' - $ref: '#/components/schemas/Position3D' type: array minItems: 4 type: array type: array title: Coordinates type: object required: - type - coordinates title: MultiPolygon description: MultiPolygon Model PaginationLink: properties: href: type: string minLength: 1 title: Href rel: type: string enum: - next - prev title: Rel type: anyOf: - $ref: '#/components/schemas/MimeTypes' - type: string - type: 'null' title: Type title: anyOf: - type: string - type: 'null' title: Title method: type: string enum: - GET - POST title: Method default: GET headers: anyOf: - additionalProperties: true type: object - type: 'null' title: Headers body: anyOf: - additionalProperties: true type: object - type: 'null' title: Body merge: type: boolean title: Merge default: false additionalProperties: true type: object required: - href - rel title: PaginationLink description: https://github.com/radiantearth/stac-api-spec/blob/v1.0.0/item-search/README.md#pagination