diff --git a/CHANGELOG.md b/CHANGELOG.md index 9636da4cb..e3f4a960c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ ### Fixed - Typing of `href` arguments ([#1234](https://github.com/stac-utils/pystac/pull/1234)) +- Interactions between **pytest-recording** and the validator schema cache ([#1242](https://github.com/stac-utils/pystac/pull/1242)) ## [v1.8.4] - 2023-09-22 diff --git a/pystac/validation/local_validator.py b/pystac/validation/local_validator.py index 1ac464c90..94d30bbf7 100644 --- a/pystac/validation/local_validator.py +++ b/pystac/validation/local_validator.py @@ -111,7 +111,7 @@ def _validate_from_local( def _validator(self, stac_type: str, version: str) -> Draft7Validator: schema = _read_schema(f"stac-spec/v{version}/{stac_type}.json") - return Draft7Validator(schema, registry=self.registry) + return Draft7Validator(schema, registry=self.registry()) def catalog_validator(self, version: str = VERSION) -> Draft7Validator: return self._validator("catalog", version) diff --git a/tests/cassettes/test_catalog/TestCatalog.test_read_remote.yaml b/tests/cassettes/test_catalog/TestCatalog.test_read_remote.yaml index 577635ff8..96f0e9ad7 100644 --- a/tests/cassettes/test_catalog/TestCatalog.test_read_remote.yaml +++ b/tests/cassettes/test_catalog/TestCatalog.test_read_remote.yaml @@ -37,11 +37,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:13:47 GMT + - Wed, 27 Sep 2023 21:19:53 GMT ETag: - '"e74ebcbc46d43c5b693ecb995381fbeba03583627e6d65b21ed7678a10d94729"' Expires: - - Fri, 22 Sep 2023 19:18:47 GMT + - Wed, 27 Sep 2023 21:24:53 GMT Source-Age: - '0' Strict-Transport-Security: @@ -51,21 +51,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 02289045ec4473cb0c90eb413af6020437e0a8e0 + - c8250cab95667b61e3288bcb3ed456aa681f31b2 X-Frame-Options: - deny X-GitHub-Request-Id: - - A942:394D:1B35C5:2001FB:650DE769 + - 0FCE:5675:3E60:4E0D:65149A87 X-Served-By: - - cache-den8281-DEN + - cache-lga21951-LGA X-Timer: - - S1695410027.011637,VS0,VE150 + - S1695849594.681744,VS0,VE80 X-XSS-Protection: - 1; mode=block status: @@ -127,11 +127,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:13:47 GMT + - Wed, 27 Sep 2023 21:19:53 GMT ETag: - '"ddd340bc27c120dd2e43868bcde0510a326a6223dac1b0c47c05100e20d1397e"' Expires: - - Fri, 22 Sep 2023 19:18:47 GMT + - Wed, 27 Sep 2023 21:24:53 GMT Source-Age: - '0' Strict-Transport-Security: @@ -141,21 +141,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 1faabc2f221d7528ed2cb4ce476bb4743267dec7 + - ee433958a36f405851103062a9bf386e5db2217e X-Frame-Options: - deny X-GitHub-Request-Id: - - 390A:531D:17C928:1C9465:650DE76A + - A926:6AE7:2E60:3C38:65149A88 X-Served-By: - - cache-den8274-DEN + - cache-lga21965-LGA X-Timer: - - S1695410027.284138,VS0,VE129 + - S1695849594.867877,VS0,VE81 X-XSS-Protection: - 1; mode=block status: @@ -227,11 +227,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:13:47 GMT + - Wed, 27 Sep 2023 21:19:54 GMT ETag: - '"80ec96bc0acf2e604a03f109bd730426aa82e442d44946231cbe82a531b944f7"' Expires: - - Fri, 22 Sep 2023 19:18:47 GMT + - Wed, 27 Sep 2023 21:24:54 GMT Source-Age: - '0' Strict-Transport-Security: @@ -241,21 +241,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - af8a2e5e50cf4a6b7933ef2cd7c2c27078a65d39 + - 2adea1b418fa9194e021a9cddf8940135145355d X-Frame-Options: - deny X-GitHub-Request-Id: - - 7364:1817:169CBE:1B6929:650DE76A + - 4992:28E3:3397:41F3:65149A87 X-Served-By: - - cache-den8236-DEN + - cache-lga21955-LGA X-Timer: - - S1695410028.515211,VS0,VE166 + - S1695849594.063816,VS0,VE72 X-XSS-Protection: - 1; mode=block status: @@ -327,11 +327,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:13:47 GMT + - Wed, 27 Sep 2023 21:19:54 GMT ETag: - '"726870312c74ead0b10c3125045c301e8600929684c49447d64c2db72dc779fc"' Expires: - - Fri, 22 Sep 2023 19:18:47 GMT + - Wed, 27 Sep 2023 21:24:54 GMT Source-Age: - '0' Strict-Transport-Security: @@ -341,21 +341,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 9e07dc7de7a765128e6a8ae9fc028d69a4502bdb + - a17a4b697a894e9a49687527cea60f190d84dabe X-Frame-Options: - deny X-GitHub-Request-Id: - - BB3C:61A6:15AFE9:1A7D50:650DE76B + - 5ACE:2795:4719:5769:65149A87 X-Served-By: - - cache-den8223-DEN + - cache-lga21935-LGA X-Timer: - - S1695410028.779866,VS0,VE131 + - S1695849594.236812,VS0,VE101 X-XSS-Protection: - 1; mode=block status: diff --git a/tests/cassettes/test_catalog/TestCatalog.test_validate_all[cat0].yaml b/tests/cassettes/test_catalog/TestCatalog.test_validate_all[cat0].yaml index 689ff9935..032faa633 100644 --- a/tests/cassettes/test_catalog/TestCatalog.test_validate_all[cat0].yaml +++ b/tests/cassettes/test_catalog/TestCatalog.test_validate_all[cat0].yaml @@ -110,7 +110,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '497' Cache-Control: - max-age=600 Connection: @@ -120,7 +120,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:13:49 GMT + - Wed, 27 Sep 2023 21:19:57 GMT ETag: - '"61eb1dc9-1abf"' Last-Modified: @@ -134,19 +134,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - aefd7fd863a66263bbc2b318eaf85dfe5b985226 + - 0143e3b78ec477aa5b33fac747cd6eaf4005d0d3 X-GitHub-Request-Id: - - 5F5C:6545:C45AE5:11B6DB0:650DE76B + - 821C:0FF5:2D086F:420327:6514696C X-Served-By: - - cache-den8275-DEN + - cache-lga21962-LGA X-Timer: - - S1695410030.515408,VS0,VE62 + - S1695849597.293127,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:23:49 GMT + - Wed, 27 Sep 2023 17:52:04 GMT permissions-policy: - interest-cohort=() x-proxy-cache: diff --git a/tests/cassettes/test_catalog/TestCatalog.test_validate_all[cat1].yaml b/tests/cassettes/test_catalog/TestCatalog.test_validate_all[cat1].yaml new file mode 100644 index 000000000..f8a134f5b --- /dev/null +++ b/tests/cassettes/test_catalog/TestCatalog.test_validate_all[cat1].yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '497' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:19:57 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 8e0c7f08fe1dee62273884e215cc2f9033ee7dd2 + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21932-LGA + X-Timer: + - S1695849598.593243,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_catalog/TestCatalog.test_validate_all[cat2].yaml b/tests/cassettes/test_catalog/TestCatalog.test_validate_all[cat2].yaml new file mode 100644 index 000000000..d18315630 --- /dev/null +++ b/tests/cassettes/test_catalog/TestCatalog.test_validate_all[cat2].yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '497' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:19:57 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 40583aa79d8c64a4c4de00a1d67d2f7da15866a0 + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21920-LGA + X-Timer: + - S1695849598.747809,VS0,VE2 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_catalog/TestCatalog.test_validate_all[cat3].yaml b/tests/cassettes/test_catalog/TestCatalog.test_validate_all[cat3].yaml new file mode 100644 index 000000000..8e4e13fe9 --- /dev/null +++ b/tests/cassettes/test_catalog/TestCatalog.test_validate_all[cat3].yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '498' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:19:57 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 36ce077f97f4356af8832f64e402b49007aba21d + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21929-LGA + X-Timer: + - S1695849598.916372,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_catalog/TestCatalog.test_validate_all[cat4].yaml b/tests/cassettes/test_catalog/TestCatalog.test_validate_all[cat4].yaml index 5fc08fcc0..ced08a5c4 100644 --- a/tests/cassettes/test_catalog/TestCatalog.test_validate_all[cat4].yaml +++ b/tests/cassettes/test_catalog/TestCatalog.test_validate_all[cat4].yaml @@ -85,7 +85,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '497' Cache-Control: - max-age=600 Connection: @@ -95,7 +95,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:13:50 GMT + - Wed, 27 Sep 2023 21:19:59 GMT ETag: - '"63e664c8-13bc"' Last-Modified: @@ -113,15 +113,15 @@ interactions: X-Cache-Hits: - '1' X-Fastly-Request-ID: - - 34bfba703d8150e35a453f4af84d3d862ca94966 + - ac3c4742b7d0edc667adacf9999a77ea34dad7c9 X-GitHub-Request-Id: - - D89E:3BBF:B6F7AA:10422C7:650D90B7 + - 784C:6B89:1EE369:2AD4C5:65148553 X-Served-By: - - cache-den8253-DEN + - cache-lga21927-LGA X-Timer: - - S1695410031.785385,VS0,VE63 + - S1695849599.136545,VS0,VE2 expires: - - Fri, 22 Sep 2023 13:13:52 GMT + - Wed, 27 Sep 2023 19:51:07 GMT permissions-policy: - interest-cohort=() x-proxy-cache: @@ -205,7 +205,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '497' Cache-Control: - max-age=600 Connection: @@ -215,7 +215,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:13:51 GMT + - Wed, 27 Sep 2023 21:19:59 GMT ETag: - '"63e6651b-1111"' Last-Modified: @@ -233,15 +233,15 @@ interactions: X-Cache-Hits: - '1' X-Fastly-Request-ID: - - cf5f154be03b272bd20702b29aff6e0ca790bc7e + - 04e5b1ad5706e9d96f13be2740f1e6ee7cc3af03 X-GitHub-Request-Id: - - 2566:766F:B3FD95:10129A2:650D90B9 + - 303E:20A2:70F70E:9F20FD:65149A8D X-Served-By: - - cache-den8232-DEN + - cache-lga21960-LGA X-Timer: - - S1695410031.948773,VS0,VE65 + - S1695849599.233177,VS0,VE1 expires: - - Fri, 22 Sep 2023 13:13:53 GMT + - Wed, 27 Sep 2023 21:21:41 GMT permissions-policy: - interest-cohort=() x-proxy-cache: @@ -315,7 +315,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '497' Cache-Control: - max-age=600 Connection: @@ -325,7 +325,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:13:51 GMT + - Wed, 27 Sep 2023 21:19:59 GMT ETag: - '"60635220-dff"' Last-Modified: @@ -343,15 +343,15 @@ interactions: X-Cache-Hits: - '1' X-Fastly-Request-ID: - - c1693722e23e5e49b9c504a4411f58edf4817f73 + - 936e2d9c5f411973caab94becb422034d0d553e1 X-GitHub-Request-Id: - - 7ACA:10AA:1E0558:2D3A24:650D90B7 + - AA28:096C:44DFB1:66DC9F:65143010 X-Served-By: - - cache-den8257-DEN + - cache-lga21979-LGA X-Timer: - - S1695410031.125531,VS0,VE63 + - S1695849599.339421,VS0,VE1 expires: - - Fri, 22 Sep 2023 13:13:53 GMT + - Wed, 27 Sep 2023 13:47:21 GMT permissions-policy: - interest-cohort=() x-proxy-cache: diff --git a/tests/cassettes/test_catalog/TestCatalog.test_validate_all[cat5].yaml b/tests/cassettes/test_catalog/TestCatalog.test_validate_all[cat5].yaml new file mode 100644 index 000000000..91e394559 --- /dev/null +++ b/tests/cassettes/test_catalog/TestCatalog.test_validate_all[cat5].yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '499' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:19:59 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - d45252cbbf2e4ce55d796a35b3d5bf125b9d71d1 + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21974-LGA + X-Timer: + - S1695849599.495394,VS0,VE2 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_catalog/TestCatalog.test_validate_all[cat6].yaml b/tests/cassettes/test_catalog/TestCatalog.test_validate_all[cat6].yaml new file mode 100644 index 000000000..7fe282fcf --- /dev/null +++ b/tests/cassettes/test_catalog/TestCatalog.test_validate_all[cat6].yaml @@ -0,0 +1,362 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '499' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:00 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 2544543013732ac5caef3e008ce652a9c39d1e45 + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21976-LGA + X-Timer: + - S1695849601.650321,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '499' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:00 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 09bf4790c62d45fc34cd2d10a4d4ddb403e22d45 + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849601.750950,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"$comment\": \"This schema succeeds if the proj: fields + are not used at all, please keep this in mind.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n }\n ]\n },\n + \ {\n \"$comment\": \"This is the schema for STAC Collections.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Collection\"\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"proj:epsg\":{\n \"title\":\"EPSG + code\",\n \"type\":[\n \"integer\",\n \"null\"\n + \ ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.5/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '499' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4369' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:00 GMT + ETag: + - '"63e6651b-1111"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - b6a6b6031804eb3387f2af4de9deb401c81d270c + X-GitHub-Request-Id: + - 303E:20A2:70F70E:9F20FD:65149A8D + X-Served-By: + - cache-lga21979-LGA + X-Timer: + - S1695849601.883571,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:21:41 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_catalog/test_validate_all_with_max_n.yaml b/tests/cassettes/test_catalog/test_validate_all_with_max_n.yaml new file mode 100644 index 000000000..b59db7965 --- /dev/null +++ b/tests/cassettes/test_catalog/test_validate_all_with_max_n.yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '501' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:01 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - e4dd4ac98d5ed83d31c40a36de09bba6ab933dca + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21920-LGA + X-Timer: + - S1695849602.831986,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_catalog/test_validate_all_with_recusive_off.yaml b/tests/cassettes/test_catalog/test_validate_all_with_recusive_off.yaml new file mode 100644 index 000000000..7cda5524f --- /dev/null +++ b/tests/cassettes/test_catalog/test_validate_all_with_recusive_off.yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '502' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:02 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 6ab0739bef3f031af0afb8c28ef2eec093796ca2 + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21972-LGA + X-Timer: + - S1695849602.211392,VS0,VE2 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_item/ItemTest.test_null_geometry.yaml b/tests/cassettes/test_item/ItemTest.test_null_geometry.yaml index fd5c5a201..db57e11e5 100644 --- a/tests/cassettes/test_item/ItemTest.test_null_geometry.yaml +++ b/tests/cassettes/test_item/ItemTest.test_null_geometry.yaml @@ -89,7 +89,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '498' Cache-Control: - max-age=600 Connection: @@ -99,11 +99,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:13:53 GMT + - Wed, 27 Sep 2023 21:20:02 GMT ETag: - - '"647f85f4-147c"' + - '"65147dc1-147c"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -111,19 +111,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - d2e77400358f2dded53fb96ae1cb917f85241854 + - 027f1a1c6163fac3ab414596ef47305ef019b261 X-GitHub-Request-Id: - - E90A:10AA:3C688F:5584EA:650DE771 + - AB30:4783:1F4627:2B8068:6514854D X-Served-By: - - cache-den8260-DEN + - cache-lga21962-LGA X-Timer: - - S1695410034.621027,VS0,VE60 + - S1695849603.986870,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:23:53 GMT + - Wed, 27 Sep 2023 19:51:02 GMT x-proxy-cache: - MISS status: @@ -156,7 +156,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '498' Cache-Control: - max-age=600 Connection: @@ -166,11 +166,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:13:53 GMT + - Wed, 27 Sep 2023 21:20:03 GMT ETag: - - '"647f85f4-21c"' + - '"65147dc1-21c"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -178,19 +178,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 8fa62bea01ba92bd2b5300f2a3ee654c71cef57c + - fa7b67fa9b491b7084a6c7adccbb617187c5b6f7 X-GitHub-Request-Id: - - 2FD8:3952:CD18A6:1243801:650DE76F + - 5360:5029:1F4534:2B5CD9:6514854E X-Served-By: - - cache-den8273-DEN + - cache-lga21980-LGA X-Timer: - - S1695410034.787395,VS0,VE68 + - S1695849603.100112,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:23:53 GMT + - Wed, 27 Sep 2023 19:51:03 GMT x-proxy-cache: - MISS status: @@ -253,7 +253,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '498' Cache-Control: - max-age=600 Connection: @@ -263,11 +263,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:13:54 GMT + - Wed, 27 Sep 2023 21:20:03 GMT ETag: - - '"647f85f4-a82"' + - '"65147dc1-a82"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -275,19 +275,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - d30e484a5d8afe2ffda6d1ebd2887ae42fe4d8ac + - 7152a6cc675f526c83c54dc88d64d065daa43ecc X-GitHub-Request-Id: - - 3DDE:5F5A:C41375:11B2BFB:650DE771 + - 3CD0:6E26:1C4920:284DE3:6514854F X-Served-By: - - cache-den8246-DEN + - cache-lga21983-LGA X-Timer: - - S1695410034.967056,VS0,VE59 + - S1695849603.206610,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:23:54 GMT + - Wed, 27 Sep 2023 19:51:03 GMT x-proxy-cache: - MISS status: @@ -322,7 +322,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '498' Cache-Control: - max-age=600 Connection: @@ -332,11 +332,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:13:54 GMT + - Wed, 27 Sep 2023 21:20:03 GMT ETag: - - '"647f85f4-2a2"' + - '"65147dc1-2a2"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -344,19 +344,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 06560147c7c18ac6ecd77939106296d7eb6b9540 + - 3eeda9f6b41c999e62ab4a32a1a6efe8c1c06d55 X-GitHub-Request-Id: - - CAF2:6545:C45CB5:11B7006:650DE771 + - 86E8:6B32:1B76C5:2793AB:65148543 X-Served-By: - - cache-den8236-DEN + - cache-lga21932-LGA X-Timer: - - S1695410034.125754,VS0,VE59 + - S1695849603.320132,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:23:54 GMT + - Wed, 27 Sep 2023 19:51:03 GMT x-origin-cache: - HIT x-proxy-cache: @@ -388,7 +388,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '498' Cache-Control: - max-age=600 Connection: @@ -398,11 +398,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:13:54 GMT + - Wed, 27 Sep 2023 21:20:03 GMT ETag: - - '"647f85f4-135"' + - '"65147dc1-135"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -410,19 +410,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - f93f9caa08592f047b691546736f9794e2ba2af3 + - 6e59e0ba5afeb3d6355a82dd7f96dc704d29fe98 X-GitHub-Request-Id: - - C654:3952:CD18C7:1243831:650DE771 + - 4CDE:3891:1D619A:2926C0:6514854F X-Served-By: - - cache-den8280-DEN + - cache-lga21975-LGA X-Timer: - - S1695410034.293604,VS0,VE64 + - S1695849603.449084,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:23:54 GMT + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT x-proxy-cache: - MISS status: @@ -462,7 +464,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '498' Cache-Control: - max-age=600 Connection: @@ -472,11 +474,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:13:54 GMT + - Wed, 27 Sep 2023 21:20:03 GMT ETag: - - '"647f85f4-40e"' + - '"65147dc1-40e"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -484,19 +486,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - a2a73ec212cafed7589c65ce8349567ab16ed703 + - 2c37280b59852a373f5e09d4a6e443e02e960c16 X-GitHub-Request-Id: - - 4D88:10FE:45A0B2:675F26:650DE770 + - F08E:5657:1CFE0E:29014D:6514854F X-Served-By: - - cache-den8241-DEN + - cache-lga21929-LGA X-Timer: - - S1695410034.466669,VS0,VE57 + - S1695849604.558712,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:23:54 GMT + - Wed, 27 Sep 2023 19:51:03 GMT x-origin-cache: - HIT x-proxy-cache: diff --git a/tests/cassettes/test_item/test_non_hierarchical_relative_link.yaml b/tests/cassettes/test_item/test_non_hierarchical_relative_link.yaml index ffe2ffdda..a467ccca9 100644 --- a/tests/cassettes/test_item/test_non_hierarchical_relative_link.yaml +++ b/tests/cassettes/test_item/test_non_hierarchical_relative_link.yaml @@ -94,11 +94,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:13:54 GMT + - Wed, 27 Sep 2023 21:20:03 GMT ETag: - '"7b5b9590049813a43b1a9c064eb61dd6b9c25e8e649fff820d3ac83580b7e559"' Expires: - - Fri, 22 Sep 2023 19:18:54 GMT + - Wed, 27 Sep 2023 21:25:03 GMT Source-Age: - '0' Strict-Transport-Security: @@ -108,21 +108,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 7bd7084ab4ef9d3fab220e461194bf29e885b537 + - 53b46e380d24296e4767fb47fad858d55fc8ecf4 X-Frame-Options: - deny X-GitHub-Request-Id: - - 793E:2684:1441F9:190DAB:650DE771 + - 0E34:28F4:31D6:4132:65149A8F X-Served-By: - - cache-den8231-DEN + - cache-lga21947-LGA X-Timer: - - S1695410035.766024,VS0,VE146 + - S1695849604.886682,VS0,VE87 X-XSS-Protection: - 1; mode=block status: diff --git a/tests/cassettes/test_stac_io/test_retry_stac_io.yaml b/tests/cassettes/test_stac_io/test_retry_stac_io.yaml index 48791da18..d0e4dac1b 100644 --- a/tests/cassettes/test_stac_io/test_retry_stac_io.yaml +++ b/tests/cassettes/test_stac_io/test_retry_stac_io.yaml @@ -34,7 +34,8 @@ interactions: 3DEP Lidar Height above Ground","href":"https://planetarycomputer.microsoft.com/api/stac/v1/collections/3dep-lidar-hag"},{"rel":"child","type":"application/json","title":"USGS 3DEP Lidar Intensity","href":"https://planetarycomputer.microsoft.com/api/stac/v1/collections/3dep-lidar-intensity"},{"rel":"child","type":"application/json","title":"USGS 3DEP Lidar Point Source","href":"https://planetarycomputer.microsoft.com/api/stac/v1/collections/3dep-lidar-pointsourceid"},{"rel":"child","type":"application/json","title":"MTBS: - Monitoring Trends in Burn Severity","href":"https://planetarycomputer.microsoft.com/api/stac/v1/collections/mtbs"},{"rel":"child","type":"application/json","title":"C-CAP + Monitoring Trends in Burn Severity","href":"https://planetarycomputer.microsoft.com/api/stac/v1/collections/mtbs"},{"rel":"child","type":"application/json","title":"Landsat + 8 Collection 2 Level-2","href":"https://planetarycomputer.microsoft.com/api/stac/v1/collections/landsat-8-c2-l2"},{"rel":"child","type":"application/json","title":"C-CAP Regional Land Cover and Change","href":"https://planetarycomputer.microsoft.com/api/stac/v1/collections/noaa-c-cap"},{"rel":"child","type":"application/json","title":"USGS 3DEP Lidar Point Cloud","href":"https://planetarycomputer.microsoft.com/api/stac/v1/collections/3dep-lidar-copc"},{"rel":"child","type":"application/json","title":"MODIS Burned Area Monthly","href":"https://planetarycomputer.microsoft.com/api/stac/v1/collections/modis-64A1-061"},{"rel":"child","type":"application/json","title":"ALOS @@ -140,15 +141,15 @@ interactions: Access-Control-Allow-Origin: - '*' Content-Length: - - '23957' + - '24129' Content-Type: - application/json Date: - - Fri, 22 Sep 2023 19:13:55 GMT + - Wed, 27 Sep 2023 21:20:04 GMT Strict-Transport-Security: - max-age=15724800; includeSubDomains X-Azure-Ref: - - 0c+cNZQAAAADu4qrKOq7CTqJo34iEVhR8REVOMzAxMDAwMTA5MDE5ADkyN2FiZmE2LTE5ZjYtNGFmMS1hMDlkLWM5NTlkOWExZTY0NA== + - 0hJwUZQAAAAAXJe5yFrMBRKpJnPgmkEPUTU5aMjIxMDYwNjExMDE3ADkyN2FiZmE2LTE5ZjYtNGFmMS1hMDlkLWM5NTlkOWExZTY0NA== X-Cache: - CONFIG_NOCACHE status: diff --git a/tests/cassettes/test_stac_io/test_retry_stac_io_404.yaml b/tests/cassettes/test_stac_io/test_retry_stac_io_404.yaml index 3c3280d59..70525a0da 100644 --- a/tests/cassettes/test_stac_io/test_retry_stac_io_404.yaml +++ b/tests/cassettes/test_stac_io/test_retry_stac_io_404.yaml @@ -13,20 +13,18 @@ interactions: - 'true' Access-Control-Allow-Origin: - '*' - Connection: - - keep-alive Content-Length: - '91' Content-Type: - application/json Date: - - Fri, 22 Sep 2023 19:13:57 GMT + - Wed, 27 Sep 2023 21:20:05 GMT Strict-Transport-Security: - max-age=15724800; includeSubDomains + X-Azure-Ref: + - 0hZwUZQAAAADvyvhAJ0UlT5d19SkjNUbBTU5aMjIxMDYwNjEyMDIzADkyN2FiZmE2LTE5ZjYtNGFmMS1hMDlkLWM5NTlkOWExZTY0NA== X-Cache: - CONFIG_NOCACHE - x-azure-ref: - - 20230922T191356Z-h3bkbtr83x2m5133xb9z9rzw1g0000000dk000000000xwqr status: code: 404 message: Not Found diff --git a/tests/cassettes/test_writing/TestSTACWriting.test_testcases[ABSOLUTE_PUBLISHED-catalog0].yaml b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[ABSOLUTE_PUBLISHED-catalog0].yaml new file mode 100644 index 000000000..ebbff1503 --- /dev/null +++ b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[ABSOLUTE_PUBLISHED-catalog0].yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '507' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:07 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 83e963734d6148c14b6b5eb6d0a68b91458b45d6 + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21968-LGA + X-Timer: + - S1695849607.053852,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_writing/TestSTACWriting.test_testcases[ABSOLUTE_PUBLISHED-catalog1].yaml b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[ABSOLUTE_PUBLISHED-catalog1].yaml new file mode 100644 index 000000000..81dedfd71 --- /dev/null +++ b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[ABSOLUTE_PUBLISHED-catalog1].yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '507' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:07 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - e4beaef7b15e04921b3a74298e0ea4ee538dfc8c + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21925-LGA + X-Timer: + - S1695849607.474460,VS0,VE2 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_writing/TestSTACWriting.test_testcases[ABSOLUTE_PUBLISHED-catalog2].yaml b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[ABSOLUTE_PUBLISHED-catalog2].yaml new file mode 100644 index 000000000..5bf7e585a --- /dev/null +++ b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[ABSOLUTE_PUBLISHED-catalog2].yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '507' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:07 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 2ab142e003b8ee7aa70ab6bb3042a711afaada89 + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21977-LGA + X-Timer: + - S1695849608.710566,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_writing/TestSTACWriting.test_testcases[ABSOLUTE_PUBLISHED-catalog3].yaml b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[ABSOLUTE_PUBLISHED-catalog3].yaml new file mode 100644 index 000000000..233dfbdfc --- /dev/null +++ b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[ABSOLUTE_PUBLISHED-catalog3].yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '508' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:08 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 0ef792ffdacbeae52b20314f7e62706e517bc961 + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21924-LGA + X-Timer: + - S1695849608.113785,VS0,VE2 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_writing/TestSTACWriting.test_testcases[ABSOLUTE_PUBLISHED-catalog4].yaml b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[ABSOLUTE_PUBLISHED-catalog4].yaml new file mode 100644 index 000000000..458dadf5f --- /dev/null +++ b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[ABSOLUTE_PUBLISHED-catalog4].yaml @@ -0,0 +1,362 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '508' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:10 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '6' + X-Fastly-Request-ID: + - b6d9436241f0064da9821f1416659dab14d50d93 + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21942-LGA + X-Timer: + - S1695849610.283388,VS0,VE0 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"$comment\": \"This schema succeeds if the proj: fields + are not used at all, please keep this in mind.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n }\n ]\n },\n + \ {\n \"$comment\": \"This is the schema for STAC Collections.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Collection\"\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"proj:epsg\":{\n \"title\":\"EPSG + code\",\n \"type\":[\n \"integer\",\n \"null\"\n + \ ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.5/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '508' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4369' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:10 GMT + ETag: + - '"63e6651b-1111"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - ade18ade8a295f37a42450e0bf33857223f03552 + X-GitHub-Request-Id: + - 303E:20A2:70F70E:9F20FD:65149A8D + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849610.378977,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:21:41 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '508' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:10 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 19f0b189af501e1bd1928ef526f924b124204ad2 + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21921-LGA + X-Timer: + - S1695849610.474981,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_writing/TestSTACWriting.test_testcases[ABSOLUTE_PUBLISHED-catalog5].yaml b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[ABSOLUTE_PUBLISHED-catalog5].yaml new file mode 100644 index 000000000..599c4bc30 --- /dev/null +++ b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[ABSOLUTE_PUBLISHED-catalog5].yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '510' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:10 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - baf040dae212ed82b4db0591b15912304b2f4e15 + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21933-LGA + X-Timer: + - S1695849611.873702,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_writing/TestSTACWriting.test_testcases[ABSOLUTE_PUBLISHED-catalog6].yaml b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[ABSOLUTE_PUBLISHED-catalog6].yaml new file mode 100644 index 000000000..4fb52bd7a --- /dev/null +++ b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[ABSOLUTE_PUBLISHED-catalog6].yaml @@ -0,0 +1,362 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '512' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:13 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 99265f91b4aae1680bfd242bf57c5ebad716278e + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21979-LGA + X-Timer: + - S1695849613.117367,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '511' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:13 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 81f9ee74bc3b84474c88e3cb1cb16648cef03664 + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21976-LGA + X-Timer: + - S1695849613.225044,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"$comment\": \"This schema succeeds if the proj: fields + are not used at all, please keep this in mind.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n }\n ]\n },\n + \ {\n \"$comment\": \"This is the schema for STAC Collections.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Collection\"\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"proj:epsg\":{\n \"title\":\"EPSG + code\",\n \"type\":[\n \"integer\",\n \"null\"\n + \ ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.5/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '511' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4369' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:13 GMT + ETag: + - '"63e6651b-1111"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 7fa9e1568050ce4382fd93292b73aa1716050dca + X-GitHub-Request-Id: + - 303E:20A2:70F70E:9F20FD:65149A8D + X-Served-By: + - cache-lga21963-LGA + X-Timer: + - S1695849613.368849,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:21:41 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_writing/TestSTACWriting.test_testcases[RELATIVE_PUBLISHED-catalog0].yaml b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[RELATIVE_PUBLISHED-catalog0].yaml new file mode 100644 index 000000000..fa2e29813 --- /dev/null +++ b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[RELATIVE_PUBLISHED-catalog0].yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '513' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:13 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 19bde322c89740c0ef1c7b333144ef659d28687e + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21936-LGA + X-Timer: + - S1695849614.742224,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_writing/TestSTACWriting.test_testcases[RELATIVE_PUBLISHED-catalog1].yaml b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[RELATIVE_PUBLISHED-catalog1].yaml new file mode 100644 index 000000000..0c344f744 --- /dev/null +++ b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[RELATIVE_PUBLISHED-catalog1].yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '514' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:14 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 17b46eb5e3a4e72721688a425ef50c3d788b6b3d + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21982-LGA + X-Timer: + - S1695849614.153821,VS0,VE2 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_writing/TestSTACWriting.test_testcases[RELATIVE_PUBLISHED-catalog2].yaml b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[RELATIVE_PUBLISHED-catalog2].yaml new file mode 100644 index 000000000..8e6ff63c2 --- /dev/null +++ b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[RELATIVE_PUBLISHED-catalog2].yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '514' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:14 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 572bc880314bda9beea0b49e08ff6c186b29b14b + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849614.399698,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_writing/TestSTACWriting.test_testcases[RELATIVE_PUBLISHED-catalog3].yaml b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[RELATIVE_PUBLISHED-catalog3].yaml new file mode 100644 index 000000000..51194132a --- /dev/null +++ b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[RELATIVE_PUBLISHED-catalog3].yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '514' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:14 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - f684563297c1fa6935d80eb0e8927e012e195050 + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21979-LGA + X-Timer: + - S1695849615.766093,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_writing/TestSTACWriting.test_testcases[RELATIVE_PUBLISHED-catalog4].yaml b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[RELATIVE_PUBLISHED-catalog4].yaml new file mode 100644 index 000000000..712ee6083 --- /dev/null +++ b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[RELATIVE_PUBLISHED-catalog4].yaml @@ -0,0 +1,362 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '515' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:17 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 510b3ee5286704ececb448d3c14bc0a255b0ae20 + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849617.104713,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"$comment\": \"This schema succeeds if the proj: fields + are not used at all, please keep this in mind.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n }\n ]\n },\n + \ {\n \"$comment\": \"This is the schema for STAC Collections.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Collection\"\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"proj:epsg\":{\n \"title\":\"EPSG + code\",\n \"type\":[\n \"integer\",\n \"null\"\n + \ ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.5/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '515' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4369' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:17 GMT + ETag: + - '"63e6651b-1111"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 11180949189ec90ec0369a9f033d9e2f2d816855 + X-GitHub-Request-Id: + - 303E:20A2:70F70E:9F20FD:65149A8D + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849617.215229,VS0,VE8 + expires: + - Wed, 27 Sep 2023 21:21:41 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '515' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:17 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 12ec32d8fce3917cf6d63b5667576cfe2a2d4544 + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21970-LGA + X-Timer: + - S1695849617.330955,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_writing/TestSTACWriting.test_testcases[RELATIVE_PUBLISHED-catalog5].yaml b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[RELATIVE_PUBLISHED-catalog5].yaml new file mode 100644 index 000000000..702d285ed --- /dev/null +++ b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[RELATIVE_PUBLISHED-catalog5].yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '518' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:17 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - a9f39d0439869e08a5e8cf2e8f0f72c25e2a161b + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21982-LGA + X-Timer: + - S1695849618.717057,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_writing/TestSTACWriting.test_testcases[RELATIVE_PUBLISHED-catalog6].yaml b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[RELATIVE_PUBLISHED-catalog6].yaml new file mode 100644 index 000000000..d98414d35 --- /dev/null +++ b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[RELATIVE_PUBLISHED-catalog6].yaml @@ -0,0 +1,362 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '518' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:20 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 69d4ac43243c1e959f61eed1f7b94586a94a5c01 + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849620.048651,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '518' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:20 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 088c636266c02a8367c04ef8a187060bab5c7fb5 + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21943-LGA + X-Timer: + - S1695849620.164730,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"$comment\": \"This schema succeeds if the proj: fields + are not used at all, please keep this in mind.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n }\n ]\n },\n + \ {\n \"$comment\": \"This is the schema for STAC Collections.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Collection\"\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"proj:epsg\":{\n \"title\":\"EPSG + code\",\n \"type\":[\n \"integer\",\n \"null\"\n + \ ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.5/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '518' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4369' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:20 GMT + ETag: + - '"63e6651b-1111"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 5c026972221cbc617fd720cbcc00cba44b27e184 + X-GitHub-Request-Id: + - 303E:20A2:70F70E:9F20FD:65149A8D + X-Served-By: + - cache-lga21924-LGA + X-Timer: + - S1695849620.315727,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:21:41 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_writing/TestSTACWriting.test_testcases[SELF_CONTAINED-catalog0].yaml b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[SELF_CONTAINED-catalog0].yaml new file mode 100644 index 000000000..4fb77b506 --- /dev/null +++ b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[SELF_CONTAINED-catalog0].yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '520' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:20 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 118e16d41ae3beb7bd5489e09c4d6667c12db6d0 + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21963-LGA + X-Timer: + - S1695849621.688544,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_writing/TestSTACWriting.test_testcases[SELF_CONTAINED-catalog1].yaml b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[SELF_CONTAINED-catalog1].yaml new file mode 100644 index 000000000..9023f5704 --- /dev/null +++ b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[SELF_CONTAINED-catalog1].yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '521' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:21 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 11530a5f3b7423a0e9b9444750e44c9efa2c1c95 + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21976-LGA + X-Timer: + - S1695849621.245084,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_writing/TestSTACWriting.test_testcases[SELF_CONTAINED-catalog2].yaml b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[SELF_CONTAINED-catalog2].yaml new file mode 100644 index 000000000..34622361d --- /dev/null +++ b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[SELF_CONTAINED-catalog2].yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '521' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:21 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 42e5c0898dc8d0527a1de6bc8916abd5b3740a87 + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21978-LGA + X-Timer: + - S1695849622.593099,VS0,VE2 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_writing/TestSTACWriting.test_testcases[SELF_CONTAINED-catalog3].yaml b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[SELF_CONTAINED-catalog3].yaml new file mode 100644 index 000000000..b0b257e8a --- /dev/null +++ b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[SELF_CONTAINED-catalog3].yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '521' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:22 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 0c76f9246c39e278924d8565e36f2d423acbd6f6 + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21933-LGA + X-Timer: + - S1695849622.029119,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_writing/TestSTACWriting.test_testcases[SELF_CONTAINED-catalog4].yaml b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[SELF_CONTAINED-catalog4].yaml new file mode 100644 index 000000000..1b592bb58 --- /dev/null +++ b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[SELF_CONTAINED-catalog4].yaml @@ -0,0 +1,362 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '523' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:24 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '3' + X-Fastly-Request-ID: + - 89750ee8951705938cc4d6d4df66b51e17e8384c + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21979-LGA + X-Timer: + - S1695849624.487310,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"$comment\": \"This schema succeeds if the proj: fields + are not used at all, please keep this in mind.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n }\n ]\n },\n + \ {\n \"$comment\": \"This is the schema for STAC Collections.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Collection\"\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"proj:epsg\":{\n \"title\":\"EPSG + code\",\n \"type\":[\n \"integer\",\n \"null\"\n + \ ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.5/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '522' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4369' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:24 GMT + ETag: + - '"63e6651b-1111"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 6b769807c49a9cb1ed136a39e61b7cc64ca8f231 + X-GitHub-Request-Id: + - 303E:20A2:70F70E:9F20FD:65149A8D + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849625.591469,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:21:41 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '523' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:24 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 7f57f72d8d5585030d3f8a62181656829469e8ca + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21982-LGA + X-Timer: + - S1695849625.690047,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_writing/TestSTACWriting.test_testcases[SELF_CONTAINED-catalog5].yaml b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[SELF_CONTAINED-catalog5].yaml new file mode 100644 index 000000000..2ac387ca1 --- /dev/null +++ b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[SELF_CONTAINED-catalog5].yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '524' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:25 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - d11078b9a874552e596a2354c3e4c6e829188b2b + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21936-LGA + X-Timer: + - S1695849625.110562,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_writing/TestSTACWriting.test_testcases[SELF_CONTAINED-catalog6].yaml b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[SELF_CONTAINED-catalog6].yaml new file mode 100644 index 000000000..bc1f0adc5 --- /dev/null +++ b/tests/cassettes/test_writing/TestSTACWriting.test_testcases[SELF_CONTAINED-catalog6].yaml @@ -0,0 +1,362 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '526' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:27 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 1bafaf6129ab8cb1a34aca9a6026df29e804deb4 + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21982-LGA + X-Timer: + - S1695849627.411720,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '525' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:27 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 9fea721ea343143509706f8d953b95ebda85f413 + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21970-LGA + X-Timer: + - S1695849628.528070,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"$comment\": \"This schema succeeds if the proj: fields + are not used at all, please keep this in mind.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n }\n ]\n },\n + \ {\n \"$comment\": \"This is the schema for STAC Collections.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Collection\"\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"proj:epsg\":{\n \"title\":\"EPSG + code\",\n \"type\":[\n \"integer\",\n \"null\"\n + \ ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.5/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '525' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4369' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:27 GMT + ETag: + - '"63e6651b-1111"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '3' + X-Fastly-Request-ID: + - 8d2a3ee6e3cf3144cbf0c324ac3f3e2fb052edde + X-GitHub-Request-Id: + - 303E:20A2:70F70E:9F20FD:65149A8D + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849628.687022,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:21:41 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/conftest.py b/tests/conftest.py index fbe820471..12470792b 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -64,3 +64,10 @@ def tmp_asset(tmp_path: Path) -> Asset: catalog = Catalog.from_file(f"{dst}/catalog.json") item = next(catalog.get_items(recursive=True)) return next(v for v in item.assets.values()) + + +@pytest.fixture(autouse=True) +def clear_validator() -> None: + from pystac.validation import RegisteredValidator + + RegisteredValidator._validator = None diff --git a/tests/extensions/cassettes/test_classification/test_apply_bitfields.yaml b/tests/extensions/cassettes/test_classification/test_apply_bitfields.yaml index 8d490fe40..1d04160f5 100644 --- a/tests/extensions/cassettes/test_classification/test_apply_bitfields.yaml +++ b/tests/extensions/cassettes/test_classification/test_apply_bitfields.yaml @@ -122,7 +122,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '502' Cache-Control: - max-age=600 Connection: @@ -132,7 +132,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:14 GMT + - Wed, 27 Sep 2023 21:20:28 GMT ETag: - '"62719998-202a"' Last-Modified: @@ -146,19 +146,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - b9eb5d0ce95c524aa2a449c459378001165e6fc7 + - f0fbfe79c05809b05b1dae49298bf0a57b88d2f4 X-GitHub-Request-Id: - - DB94:5C8C:CCDADD:123F6CA:650DE783 + - 7F5A:8027:2AA2CF:3AB1F3:65149AA6 X-Served-By: - - cache-den8266-DEN + - cache-lga21973-LGA X-Timer: - - S1695410055.709253,VS0,VE68 + - S1695849628.022387,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:24:14 GMT + - Wed, 27 Sep 2023 21:22:06 GMT permissions-policy: - interest-cohort=() x-proxy-cache: diff --git a/tests/extensions/cassettes/test_classification/test_validate_classification.yaml b/tests/extensions/cassettes/test_classification/test_validate_classification.yaml index 1eab32212..b6cad4188 100644 --- a/tests/extensions/cassettes/test_classification/test_validate_classification.yaml +++ b/tests/extensions/cassettes/test_classification/test_validate_classification.yaml @@ -104,7 +104,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '502' Cache-Control: - max-age=600 Connection: @@ -114,7 +114,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:14 GMT + - Wed, 27 Sep 2023 21:20:28 GMT ETag: - '"60e44dd0-18ae"' Last-Modified: @@ -132,15 +132,375 @@ interactions: X-Cache-Hits: - '1' X-Fastly-Request-ID: - - d2430a4e2c2bbea6b0bbb8cb1f3adb4a8635a2a8 + - 06caaac1a14c02c6f924feb84880cad98c12a290 X-GitHub-Request-Id: - - 9F38:2E03:AF2011:FC4EA5:650D90B1 + - 135C:6FEB:2BC07D:3B8DB8:65149AA6 X-Served-By: - - cache-den8255-DEN + - cache-lga21926-LGA X-Timer: - - S1695410055.914476,VS0,VE63 + - S1695849628.197557,VS0,VE1 expires: - - Fri, 22 Sep 2023 13:13:53 GMT + - Wed, 27 Sep 2023 21:22:06 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '526' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:28 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 8638a724691abeb0f4c2d04907851e1ac6bcc919 + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21938-LGA + X-Timer: + - S1695849628.314720,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '526' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:28 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - a081d04ecf7fb2ab8c2f56fd2078dcea9949c070 + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21969-LGA + X-Timer: + - S1695849628.431586,VS0,VE2 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"$comment\": \"This schema succeeds if the proj: fields + are not used at all, please keep this in mind.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n }\n ]\n },\n + \ {\n \"$comment\": \"This is the schema for STAC Collections.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Collection\"\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"proj:epsg\":{\n \"title\":\"EPSG + code\",\n \"type\":[\n \"integer\",\n \"null\"\n + \ ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.5/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '527' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4369' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:28 GMT + ETag: + - '"63e6651b-1111"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 895aa89a8ba6f02e471f3ce6e7f3bf18ed39c029 + X-GitHub-Request-Id: + - 303E:20A2:70F70E:9F20FD:65149A8D + X-Served-By: + - cache-lga21923-LGA + X-Timer: + - S1695849629.547438,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:21:41 GMT permissions-policy: - interest-cohort=() x-proxy-cache: @@ -222,7 +582,7 @@ interactions: Content-Type: - application/json Date: - - Fri, 22 Sep 2023 19:14:15 GMT + - Wed, 27 Sep 2023 21:20:28 GMT ETag: - '"f5d-5c78e5c04950e"' Last-Modified: @@ -230,8 +590,8 @@ interactions: Server: - Apache Set-Cookie: - - fwb=429bb9b17ca48ed3eeddde0787e70d65;max-age=300;Path=/;Secure;HttpOnly - - cookiesession1=678A3E65FCF80CD37D49EC1954CD2644;Expires=Sat, 21 Sep 2024 19:14:15 + - fwb=429bb9b17ca48ed3eeddde079c9c1465;max-age=300;Path=/;Secure;HttpOnly + - cookiesession1=678A3E6598CEFD2A02B7E1774016C618;Expires=Thu, 26 Sep 2024 21:20:28 GMT;Path=/;HttpOnly Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload @@ -336,7 +696,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '501' Cache-Control: - max-age=600 Connection: @@ -346,7 +706,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:15 GMT + - Wed, 27 Sep 2023 21:20:28 GMT ETag: - '"60febab7-15fa"' Last-Modified: @@ -360,19 +720,186 @@ interactions: Via: - 1.1 varnish X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 328a92521c86ef942a82381a96212c01a6aed6ae + X-GitHub-Request-Id: + - 13A2:20A2:6B2A6D:96E7BB:65148554 + X-Served-By: + - cache-lga21983-LGA + X-Timer: + - S1695849629.908686,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/classification/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n + \ \"$id\": \"https://stac-extensions.github.io/classification/v1.1.0/schema.json#\",\n + \ \"title\": \"Classification Extension\",\n \"description\": \"STAC + Classification Extension for STAC Items and STAC Collections.\",\n \"oneOf\": + [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n },\n {\n + \ \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": + {\n \"$comment\": \"This validates the fields in + Item Properties, but does not require them.\",\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in + Item Assets (including in Raster Band Objects), but does not require them.\",\n + \ \"type\": \"object\",\n \"additionalProperties\": + {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/fields\"\n + \ },\n {\n + \ \"$ref\": \"#/definitions/raster_bands\"\n + \ }\n ]\n + \ }\n }\n }\n + \ }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n + \ \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"$comment\": + \"This validates the fields in Collection Assets, but does not require them.\",\n + \ \"type\": \"object\",\n \"additionalProperties\": + {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/fields\"\n + \ },\n {\n + \ \"$ref\": \"#/definitions/raster_bands\"\n + \ }\n ]\n + \ }\n },\n \"item_assets\": + {\n \"$comment\": \"This validates the fields in + Item Asset Definitions, but does not require them.\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"allOf\": + [\n {\n \"$ref\": + \"#/definitions/fields\"\n },\n {\n + \ \"$ref\": \"#/definitions/raster_bands\"\n + \ }\n ]\n + \ }\n },\n \"summaries\": + {\n \"$comment\": \"This validates the fields in + Summaries, but does not require them.\",\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n + \ }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": + {\n \"stac_extensions\": {\n \"type\": \"array\",\n + \ \"contains\": {\n \"const\": \"https://stac-extensions.github.io/classification/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"require_any_field\": + {\n \"$comment\": \"Please list all fields here so that we can + force the existance of one of them in other parts of the schemas.\",\n \"anyOf\": + [\n {\n \"required\": [\n \"classification:bitfields\"\n + \ ]\n },\n {\n \"required\": + [\n \"classification:classes\"\n ]\n + \ }\n ]\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + corresponding schema.\",\n \"type\": \"object\",\n \"properties\": + {\n \"classification:bitfields\": {\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"minItems\": + 1,\n \"items\": {\n \"$ref\": \"#/definitions/bit_field_object\"\n + \ }\n },\n \"classification:classes\": + {\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"minItems\": 1,\n \"items\": + {\n \"$ref\": \"#/definitions/class_object\"\n }\n + \ }\n },\n \"patternProperties\": {\n + \ \"^(?!classification:)\": {}\n },\n \"additionalProperties\": + false\n },\n \"class_object\": {\n \"$comment\": + \"Object for storing classes\",\n \"type\": \"object\",\n \"required\": + [\n \"value\",\n \"description\"\n ],\n + \ \"properties\": {\n \"value\": {\n \"type\": + \"integer\"\n },\n \"description\": {\n \"type\": + \"string\"\n },\n \"name\": {\n \"type\": + \"string\"\n },\n \"color_hint\": {\n \"type\": + \"string\",\n \"pattern\": \"^([0-9A-Fa-f]{6})$\"\n }\n + \ }\n },\n \"bit_field_object\": {\n \"$comment\": + \"Object for storing bit fields\",\n \"type\": \"object\",\n \"required\": + [\n \"offset\",\n \"length\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"offset\": + {\n \"type\": \"integer\",\n \"minimum\": + 0\n },\n \"length\": {\n \"type\": + \"integer\",\n \"minimum\": 1\n },\n \"classes\": + {\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"minItems\": 1,\n \"items\": + {\n \"$ref\": \"#/definitions/class_object\"\n }\n + \ },\n \"roles\": {\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"minItems\": + 1,\n \"items\": {\n \"type\": \"string\"\n + \ }\n },\n \"description\": + {\n \"type\": \"string\"\n },\n \"name\": + {\n \"type\": \"string\"\n }\n }\n + \ },\n \"raster_bands\": {\n \"$comment\": \"Classification + fields on the Raster Extension raster:bands object\",\n \"type\": + \"object\",\n \"properties\": {\n \"raster:bands\": + {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n + \ }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '503' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '8234' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:29 GMT + ETag: + - '"62719998-202a"' + Last-Modified: + - Tue, 03 May 2022 21:07:36 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 6b3cfcbf1a28f2f13e760eab450f042598791280 + - f54921e007c0c0ed9394790a9c2bc52bdf51d107 X-GitHub-Request-Id: - - 11F6:265B:C2E4EC:119FAFA:650DE787 + - 7F5A:8027:2AA2CF:3AB1F3:65149AA6 X-Served-By: - - cache-den8266-DEN + - cache-lga21980-LGA X-Timer: - - S1695410055.331223,VS0,VE62 + - S1695849629.022619,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:15 GMT + - Wed, 27 Sep 2023 21:22:06 GMT permissions-policy: - interest-cohort=() x-proxy-cache: diff --git a/tests/extensions/cassettes/test_datacube/test_set_dimensions.yaml b/tests/extensions/cassettes/test_datacube/test_set_dimensions.yaml new file mode 100644 index 000000000..4cac8415a --- /dev/null +++ b/tests/extensions/cassettes/test_datacube/test_set_dimensions.yaml @@ -0,0 +1,224 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/datacube/v2.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/datacube/v2.0.0/schema.json\",\n \"title\": + \"Datacube Extension\",\n \"description\": \"Datacube Extension for STAC + Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items. Remove this object if this extension + only applies to Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for Item Properties.\",\n \"required\": + [\n \"cube:dimensions\"\n ]\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for Collections (top-level).\",\n \"required\": + [\n \"cube:dimensions\"\n ]\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This validates + the fields in Collection Assets, but does not require them.\",\n \"required\": + [\n \"assets\"\n ],\n \"properties\": {\n \"assets\": + {\n \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/datacube/v2.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"cube:dimensions\"]},\n {\"required\": [\"cube:variables\"]}\n ]\n + \ },\n \"fields\": {\n \"$comment\": \"Add your new fields here. + Don't require them here, do that above in the corresponding schema.\",\n \"type\": + \"object\",\n \"properties\": {\n \"cube:dimensions\": {\n \"$ref\": + \"#/definitions/cube:dimensions\"\n },\n \"cube:variables\": + {\n \"$ref\": \"#/definitions/cube:variables\"\n }\n },\n + \ \"patternProperties\": {\n \"^(?!cube:)\": {}\n },\n \"additionalProperties\": + false\n },\n \"cube:dimensions\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"anyOf\": [\n {\n \"$ref\": \"#/definitions/additional_dimension\"\n + \ },\n {\n \"$ref\": \"#/definitions/horizontal_spatial_dimension\"\n + \ },\n {\n \"$ref\": \"#/definitions/vertical_spatial_dimension\"\n + \ },\n {\n \"$ref\": \"#/definitions/temporal_dimension\"\n + \ }\n ]\n }\n },\n \"cube:variables\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": \"#/definitions/variable\"\n + \ }\n },\n \"additional_dimension\": {\n \"title\": \"Additional + Dimension Object\",\n \"type\": \"object\",\n \"anyOf\": [\n {\n + \ \"required\": [\n \"type\",\n \"extent\"\n + \ ]\n },\n {\n \"required\": [\n \"type\",\n + \ \"values\"\n ]\n }\n ],\n \"not\": {\n + \ \"required\": [\n \"axis\"\n ]\n },\n \"properties\": + {\n \"type\": {\n \"allOf\": [\n {\n \"type\": + \"string\"\n },\n {\n \"not\": {\n \"type\": + \"string\",\n \"const\": \"spatial\"\n }\n }\n + \ ]\n },\n \"description\": {\n \"$ref\": \"#/definitions/description\"\n + \ },\n \"extent\": {\n \"$ref\": \"#/definitions/extent_open\"\n + \ },\n \"values\": {\n \"$ref\": \"#/definitions/values\"\n + \ },\n \"step\": {\n \"$ref\": \"#/definitions/step\"\n + \ },\n \"unit\": {\n \"$ref\": \"#/definitions/unit\"\n + \ },\n \"reference_system\": {\n \"type\": \"string\"\n + \ },\n \"dimensions\": {\n \"type\": \"array\",\n \"items\": + {\n \"type\": [\n \"string\"\n ]\n }\n + \ }\n }\n },\n \"horizontal_spatial_dimension\": {\n \"title\": + \"Horizontal Spatial Dimension Object\",\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"axis\",\n \"extent\"\n ],\n \"properties\": + {\n \"type\": {\n \"$ref\": \"#/definitions/type_spatial\"\n + \ },\n \"axis\": {\n \"$ref\": \"#/definitions/axis_xy\"\n + \ },\n \"description\": {\n \"$ref\": \"#/definitions/description\"\n + \ },\n \"extent\": {\n \"$ref\": \"#/definitions/extent_closed\"\n + \ },\n \"values\": {\n \"$ref\": \"#/definitions/values_numeric\"\n + \ },\n \"step\": {\n \"$ref\": \"#/definitions/step\"\n + \ },\n \"reference_system\": {\n \"$ref\": \"#/definitions/reference_system_spatial\"\n + \ }\n }\n },\n \"vertical_spatial_dimension\": {\n \"title\": + \"Vertical Spatial Dimension Object\",\n \"type\": \"object\",\n \"anyOf\": + [\n {\n \"required\": [\n \"type\",\n \"axis\",\n + \ \"extent\"\n ]\n },\n {\n \"required\": + [\n \"type\",\n \"axis\",\n \"values\"\n + \ ]\n }\n ],\n \"properties\": {\n \"type\": + {\n \"$ref\": \"#/definitions/type_spatial\"\n },\n \"axis\": + {\n \"$ref\": \"#/definitions/axis_z\"\n },\n \"description\": + {\n \"$ref\": \"#/definitions/description\"\n },\n \"extent\": + {\n \"$ref\": \"#/definitions/extent_open\"\n },\n \"values\": + {\n \"$ref\": \"#/definitions/values\"\n },\n \"step\": + {\n \"$ref\": \"#/definitions/step\"\n },\n \"unit\": + {\n \"$ref\": \"#/definitions/unit\"\n },\n \"reference_system\": + {\n \"$ref\": \"#/definitions/reference_system_spatial\"\n }\n + \ }\n },\n \"temporal_dimension\": {\n \"title\": \"Temporal + Dimension Object\",\n \"type\": \"object\",\n \"required\": [\n + \ \"type\",\n \"extent\"\n ],\n \"not\": {\n \"required\": + [\n \"axis\"\n ]\n },\n \"properties\": {\n \"type\": + {\n \"type\": \"string\",\n \"const\": \"temporal\"\n },\n + \ \"description\": {\n \"$ref\": \"#/definitions/description\"\n + \ },\n \"values\": {\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"type\": \"string\"\n }\n + \ },\n \"extent\": {\n \"type\": \"array\",\n \"minItems\": + 2,\n \"maxItems\": 2,\n \"items\": {\n \"type\": + [\n \"string\",\n \"null\"\n ]\n }\n + \ },\n \"step\": {\n \"type\": [\n \"string\",\n + \ \"null\"\n ]\n }\n }\n },\n \"variable\": + {\n \"title\": \"Variable Object\",\n \"type\": \"object\",\n \"required\": + [\n \"dimensions\"\n ],\n \"properties\": {\n \"variable_type\": + {\n \"type\": \"string\",\n \"enum\": [\n \"data\",\n + \ \"auxiliary\"\n ]\n },\n \"description\": + {\n \"$ref\": \"#/definitions/description\"\n },\n \"dimensions\": + {\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"values\": {\n \"type\": + \"array\",\n \"minItems\": 1\n },\n \"extent\": {\n + \ \"type\": \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n \"string\",\n + \ \"number\",\n \"null\"\n ]\n }\n + \ },\n \"unit\": {\n \"$ref\": \"#/definitions/unit\"\n + \ }\n }\n },\n \"type_spatial\": {\n \"type\": \"string\",\n + \ \"const\": \"spatial\"\n },\n \"axis_xy\": {\n \"type\": + \"string\",\n \"enum\": [\n \"x\",\n \"y\"\n ]\n },\n + \ \"axis_z\": {\n \"type\": \"string\",\n \"const\": \"z\"\n },\n + \ \"extent_closed\": {\n \"type\": \"array\",\n \"minItems\": + 2,\n \"maxItems\": 2,\n \"items\": {\n \"type\": \"number\"\n + \ }\n },\n \"extent_open\": {\n \"type\": \"array\",\n \"minItems\": + 2,\n \"maxItems\": 2,\n \"items\": {\n \"type\": [\n \"number\",\n + \ \"null\"\n ]\n }\n },\n \"values_numeric\": {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"type\": + \"number\"\n }\n },\n \"values\": {\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"oneOf\": [\n {\n + \ \"type\": \"number\"\n },\n {\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"step\": {\n \"type\": + [\n \"number\",\n \"null\"\n ]\n },\n \"unit\": {\n + \ \"type\": \"string\"\n },\n \"reference_system_spatial\": {\n + \ \"type\": [\n \"string\",\n \"number\",\n \"object\"\n + \ ],\n \"default\": 4326\n },\n \"description\": {\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '502' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '11920' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:29 GMT + ETag: + - '"64527b1d-2e90"' + Last-Modified: + - Wed, 03 May 2023 15:17:49 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 3494b41852149cd5a45b4dece775f61c6c800982 + X-GitHub-Request-Id: + - AAC6:3224:2D88AB:3D9637:65149AA7 + X-Served-By: + - cache-lga21983-LGA + X-Timer: + - S1695849630.549557,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_datacube/test_set_variables.yaml b/tests/extensions/cassettes/test_datacube/test_set_variables.yaml new file mode 100644 index 000000000..c5e8883bb --- /dev/null +++ b/tests/extensions/cassettes/test_datacube/test_set_variables.yaml @@ -0,0 +1,224 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/datacube/v2.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/datacube/v2.0.0/schema.json\",\n \"title\": + \"Datacube Extension\",\n \"description\": \"Datacube Extension for STAC + Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items. Remove this object if this extension + only applies to Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for Item Properties.\",\n \"required\": + [\n \"cube:dimensions\"\n ]\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for Collections (top-level).\",\n \"required\": + [\n \"cube:dimensions\"\n ]\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This validates + the fields in Collection Assets, but does not require them.\",\n \"required\": + [\n \"assets\"\n ],\n \"properties\": {\n \"assets\": + {\n \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/datacube/v2.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"cube:dimensions\"]},\n {\"required\": [\"cube:variables\"]}\n ]\n + \ },\n \"fields\": {\n \"$comment\": \"Add your new fields here. + Don't require them here, do that above in the corresponding schema.\",\n \"type\": + \"object\",\n \"properties\": {\n \"cube:dimensions\": {\n \"$ref\": + \"#/definitions/cube:dimensions\"\n },\n \"cube:variables\": + {\n \"$ref\": \"#/definitions/cube:variables\"\n }\n },\n + \ \"patternProperties\": {\n \"^(?!cube:)\": {}\n },\n \"additionalProperties\": + false\n },\n \"cube:dimensions\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"anyOf\": [\n {\n \"$ref\": \"#/definitions/additional_dimension\"\n + \ },\n {\n \"$ref\": \"#/definitions/horizontal_spatial_dimension\"\n + \ },\n {\n \"$ref\": \"#/definitions/vertical_spatial_dimension\"\n + \ },\n {\n \"$ref\": \"#/definitions/temporal_dimension\"\n + \ }\n ]\n }\n },\n \"cube:variables\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": \"#/definitions/variable\"\n + \ }\n },\n \"additional_dimension\": {\n \"title\": \"Additional + Dimension Object\",\n \"type\": \"object\",\n \"anyOf\": [\n {\n + \ \"required\": [\n \"type\",\n \"extent\"\n + \ ]\n },\n {\n \"required\": [\n \"type\",\n + \ \"values\"\n ]\n }\n ],\n \"not\": {\n + \ \"required\": [\n \"axis\"\n ]\n },\n \"properties\": + {\n \"type\": {\n \"allOf\": [\n {\n \"type\": + \"string\"\n },\n {\n \"not\": {\n \"type\": + \"string\",\n \"const\": \"spatial\"\n }\n }\n + \ ]\n },\n \"description\": {\n \"$ref\": \"#/definitions/description\"\n + \ },\n \"extent\": {\n \"$ref\": \"#/definitions/extent_open\"\n + \ },\n \"values\": {\n \"$ref\": \"#/definitions/values\"\n + \ },\n \"step\": {\n \"$ref\": \"#/definitions/step\"\n + \ },\n \"unit\": {\n \"$ref\": \"#/definitions/unit\"\n + \ },\n \"reference_system\": {\n \"type\": \"string\"\n + \ },\n \"dimensions\": {\n \"type\": \"array\",\n \"items\": + {\n \"type\": [\n \"string\"\n ]\n }\n + \ }\n }\n },\n \"horizontal_spatial_dimension\": {\n \"title\": + \"Horizontal Spatial Dimension Object\",\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"axis\",\n \"extent\"\n ],\n \"properties\": + {\n \"type\": {\n \"$ref\": \"#/definitions/type_spatial\"\n + \ },\n \"axis\": {\n \"$ref\": \"#/definitions/axis_xy\"\n + \ },\n \"description\": {\n \"$ref\": \"#/definitions/description\"\n + \ },\n \"extent\": {\n \"$ref\": \"#/definitions/extent_closed\"\n + \ },\n \"values\": {\n \"$ref\": \"#/definitions/values_numeric\"\n + \ },\n \"step\": {\n \"$ref\": \"#/definitions/step\"\n + \ },\n \"reference_system\": {\n \"$ref\": \"#/definitions/reference_system_spatial\"\n + \ }\n }\n },\n \"vertical_spatial_dimension\": {\n \"title\": + \"Vertical Spatial Dimension Object\",\n \"type\": \"object\",\n \"anyOf\": + [\n {\n \"required\": [\n \"type\",\n \"axis\",\n + \ \"extent\"\n ]\n },\n {\n \"required\": + [\n \"type\",\n \"axis\",\n \"values\"\n + \ ]\n }\n ],\n \"properties\": {\n \"type\": + {\n \"$ref\": \"#/definitions/type_spatial\"\n },\n \"axis\": + {\n \"$ref\": \"#/definitions/axis_z\"\n },\n \"description\": + {\n \"$ref\": \"#/definitions/description\"\n },\n \"extent\": + {\n \"$ref\": \"#/definitions/extent_open\"\n },\n \"values\": + {\n \"$ref\": \"#/definitions/values\"\n },\n \"step\": + {\n \"$ref\": \"#/definitions/step\"\n },\n \"unit\": + {\n \"$ref\": \"#/definitions/unit\"\n },\n \"reference_system\": + {\n \"$ref\": \"#/definitions/reference_system_spatial\"\n }\n + \ }\n },\n \"temporal_dimension\": {\n \"title\": \"Temporal + Dimension Object\",\n \"type\": \"object\",\n \"required\": [\n + \ \"type\",\n \"extent\"\n ],\n \"not\": {\n \"required\": + [\n \"axis\"\n ]\n },\n \"properties\": {\n \"type\": + {\n \"type\": \"string\",\n \"const\": \"temporal\"\n },\n + \ \"description\": {\n \"$ref\": \"#/definitions/description\"\n + \ },\n \"values\": {\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"type\": \"string\"\n }\n + \ },\n \"extent\": {\n \"type\": \"array\",\n \"minItems\": + 2,\n \"maxItems\": 2,\n \"items\": {\n \"type\": + [\n \"string\",\n \"null\"\n ]\n }\n + \ },\n \"step\": {\n \"type\": [\n \"string\",\n + \ \"null\"\n ]\n }\n }\n },\n \"variable\": + {\n \"title\": \"Variable Object\",\n \"type\": \"object\",\n \"required\": + [\n \"dimensions\"\n ],\n \"properties\": {\n \"variable_type\": + {\n \"type\": \"string\",\n \"enum\": [\n \"data\",\n + \ \"auxiliary\"\n ]\n },\n \"description\": + {\n \"$ref\": \"#/definitions/description\"\n },\n \"dimensions\": + {\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"values\": {\n \"type\": + \"array\",\n \"minItems\": 1\n },\n \"extent\": {\n + \ \"type\": \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n \"string\",\n + \ \"number\",\n \"null\"\n ]\n }\n + \ },\n \"unit\": {\n \"$ref\": \"#/definitions/unit\"\n + \ }\n }\n },\n \"type_spatial\": {\n \"type\": \"string\",\n + \ \"const\": \"spatial\"\n },\n \"axis_xy\": {\n \"type\": + \"string\",\n \"enum\": [\n \"x\",\n \"y\"\n ]\n },\n + \ \"axis_z\": {\n \"type\": \"string\",\n \"const\": \"z\"\n },\n + \ \"extent_closed\": {\n \"type\": \"array\",\n \"minItems\": + 2,\n \"maxItems\": 2,\n \"items\": {\n \"type\": \"number\"\n + \ }\n },\n \"extent_open\": {\n \"type\": \"array\",\n \"minItems\": + 2,\n \"maxItems\": 2,\n \"items\": {\n \"type\": [\n \"number\",\n + \ \"null\"\n ]\n }\n },\n \"values_numeric\": {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"type\": + \"number\"\n }\n },\n \"values\": {\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"oneOf\": [\n {\n + \ \"type\": \"number\"\n },\n {\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"step\": {\n \"type\": + [\n \"number\",\n \"null\"\n ]\n },\n \"unit\": {\n + \ \"type\": \"string\"\n },\n \"reference_system_spatial\": {\n + \ \"type\": [\n \"string\",\n \"number\",\n \"object\"\n + \ ],\n \"default\": 4326\n },\n \"description\": {\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '502' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '11920' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:29 GMT + ETag: + - '"64527b1d-2e90"' + Last-Modified: + - Wed, 03 May 2023 15:17:49 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 71f26459c55644735a4670270079a8b6697a853d + X-GitHub-Request-Id: + - AAC6:3224:2D88AB:3D9637:65149AA7 + X-Served-By: + - cache-lga21932-LGA + X-Timer: + - S1695849629.409080,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_datacube/test_validate.yaml b/tests/extensions/cassettes/test_datacube/test_validate.yaml index 3d3879db6..301741a64 100644 --- a/tests/extensions/cassettes/test_datacube/test_validate.yaml +++ b/tests/extensions/cassettes/test_datacube/test_validate.yaml @@ -177,7 +177,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '502' Cache-Control: - max-age=600 Connection: @@ -187,7 +187,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:15 GMT + - Wed, 27 Sep 2023 21:20:29 GMT ETag: - '"64527b1d-2e90"' Last-Modified: @@ -201,19 +201,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - e2397fbbdfb0051ff3313c71a3cec8e77019bbc2 + - a916a13ac9747497c6458923c0fee30f1beaa65a X-GitHub-Request-Id: - - 11F6:265B:C2E4FD:119FB11:650DE787 + - AAC6:3224:2D88AB:3D9637:65149AA7 X-Served-By: - - cache-den8281-DEN + - cache-lga21962-LGA X-Timer: - - S1695410056.595604,VS0,VE62 + - S1695849629.262982,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:24:15 GMT + - Wed, 27 Sep 2023 21:22:07 GMT permissions-policy: - interest-cohort=() x-proxy-cache: diff --git a/tests/extensions/cassettes/test_eo/EOTest.test_asset_bands.yaml b/tests/extensions/cassettes/test_eo/EOTest.test_asset_bands.yaml new file mode 100644 index 000000000..be0841b79 --- /dev/null +++ b/tests/extensions/cassettes/test_eo/EOTest.test_asset_bands.yaml @@ -0,0 +1,242 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '528' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:29 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - a9e82c526ce9f4bf1859a6eb110ad1a1689e8ee4 + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21929-LGA + X-Timer: + - S1695849630.717394,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '528' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:29 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 9f76d7fa4df602d8413343dfa24534a81f69bc85 + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21974-LGA + X-Timer: + - S1695849630.832593,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_eo/EOTest.test_bands.yaml b/tests/extensions/cassettes/test_eo/EOTest.test_bands.yaml new file mode 100644 index 000000000..0ec715228 --- /dev/null +++ b/tests/extensions/cassettes/test_eo/EOTest.test_bands.yaml @@ -0,0 +1,242 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '528' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:29 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 79a40a161e60c291f72e9bab7495f10c89a77cda + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21977-LGA + X-Timer: + - S1695849630.991122,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '528' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:30 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - b098fb05129a221b6e1eee5ac4c3681bbac1eedf + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21926-LGA + X-Timer: + - S1695849630.102307,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_eo/EOTest.test_cloud_cover.yaml b/tests/extensions/cassettes/test_eo/EOTest.test_cloud_cover.yaml new file mode 100644 index 000000000..16843cfeb --- /dev/null +++ b/tests/extensions/cassettes/test_eo/EOTest.test_cloud_cover.yaml @@ -0,0 +1,242 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '528' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:30 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 54e403c4d5dc70bc02298d1f7c9449ab108cede7 + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21968-LGA + X-Timer: + - S1695849630.245266,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '528' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:30 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 3f883f75cdec58831d17f75262a5d6d42409c988 + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21923-LGA + X-Timer: + - S1695849630.378551,VS0,VE2 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_eo/EOTest.test_validate_eo.yaml b/tests/extensions/cassettes/test_eo/EOTest.test_validate_eo.yaml new file mode 100644 index 000000000..a35164265 --- /dev/null +++ b/tests/extensions/cassettes/test_eo/EOTest.test_validate_eo.yaml @@ -0,0 +1,242 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '529' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:30 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - fa82983894540b56931d1947fd10ec54de32b2ff + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21923-LGA + X-Timer: + - S1695849631.561020,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '528' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:30 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - a0b0c13ebcd25606ef92488d86128d0bc371b897 + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21969-LGA + X-Timer: + - S1695849631.666897,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_eo/test_set_field[cloud_cover-7.8].yaml b/tests/extensions/cassettes/test_eo/test_set_field[cloud_cover-7.8].yaml new file mode 100644 index 000000000..955e91d75 --- /dev/null +++ b/tests/extensions/cassettes/test_eo/test_set_field[cloud_cover-7.8].yaml @@ -0,0 +1,242 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '529' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:30 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 78b26fc8c4bfb09c6ffc20a813a6e1de680fb450 + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21938-LGA + X-Timer: + - S1695849631.841962,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '529' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:30 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - eb9998bf8f7aa3a40b7fc33d838abfa12618220d + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21926-LGA + X-Timer: + - S1695849631.940771,VS0,VE0 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_eo/test_set_field[snow_cover-99].yaml b/tests/extensions/cassettes/test_eo/test_set_field[snow_cover-99].yaml new file mode 100644 index 000000000..dd3512cb8 --- /dev/null +++ b/tests/extensions/cassettes/test_eo/test_set_field[snow_cover-99].yaml @@ -0,0 +1,242 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '529' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:31 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - f641ce942e1d5aa75f6922f6bec2e03ce6d8d4f6 + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21980-LGA + X-Timer: + - S1695849631.085196,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '529' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:31 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 454d8f9ba4a6e25c56bbb80df6cd9952a3ff84fa + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21983-LGA + X-Timer: + - S1695849631.215014,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_file/FileTest.test_item_asset_byte_order.yaml b/tests/extensions/cassettes/test_file/FileTest.test_item_asset_byte_order.yaml index 9aa0b2fc2..96f495215 100644 --- a/tests/extensions/cassettes/test_file/FileTest.test_item_asset_byte_order.yaml +++ b/tests/extensions/cassettes/test_file/FileTest.test_item_asset_byte_order.yaml @@ -65,7 +65,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '503' Cache-Control: - max-age=600 Connection: @@ -75,7 +75,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:16 GMT + - Wed, 27 Sep 2023 21:20:31 GMT ETag: - '"61b4cf00-d9d"' Last-Modified: @@ -89,19 +89,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 946f1fd9dd30a8450fb76058c49d44f5ae2c3f48 + - 006d141e50fa534c67d01476d54548b5d062c3cb X-GitHub-Request-Id: - - CA0C:09C1:C8EB32:120047B:650DE786 + - 1AF0:3FBB:2C04DD:3BB84C:65149AA8 X-Served-By: - - cache-den8228-DEN + - cache-lga21931-LGA X-Timer: - - S1695410056.162356,VS0,VE62 + - S1695849631.448890,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:16 GMT + - Wed, 27 Sep 2023 21:22:08 GMT permissions-policy: - interest-cohort=() x-proxy-cache: diff --git a/tests/extensions/cassettes/test_file/FileTest.test_item_asset_checksum.yaml b/tests/extensions/cassettes/test_file/FileTest.test_item_asset_checksum.yaml new file mode 100644 index 000000000..b62651ca5 --- /dev/null +++ b/tests/extensions/cassettes/test_file/FileTest.test_item_asset_checksum.yaml @@ -0,0 +1,112 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/file/v2.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/file/v2.0.0/schema.json#\",\n \"title\": + \"File Info Extension\",\n \"description\": \"STAC File Info Extension for + STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/file/v2.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"file:byte_order\": + {\n \"type\": \"string\",\n \"enum\": [\n \"big-endian\",\n + \ \"little-endian\"\n ],\n \"title\": \"File Byte + Order\"\n },\n \"file:checksum\": {\n \"type\": \"string\",\n + \ \"pattern\": \"^[a-f0-9]+$\",\n \"title\": \"File Checksum + (Multihash)\"\n },\n \"file:header_size\": {\n \"type\": + \"integer\",\n \"minimum\": 0,\n \"title\": \"File Header + Size\"\n },\n \"file:size\": {\n \"type\": \"integer\",\n + \ \"minimum\": 0,\n \"title\": \"File Size\"\n },\n + \ \"file:values\": {\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"type\": \"object\",\n \"required\": + [\n \"values\",\n \"summary\"\n ],\n + \ \"properties\": {\n \"values\": {\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n + \ \"description\": \"Any data type is allowed\"\n }\n + \ },\n \"summary\": {\n \"type\": + \"string\",\n \"minLength\": 1\n }\n }\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!file:)\": + {\n \"$comment\": \"Above, change `template` to the prefix of this + extension\"\n }\n },\n \"additionalProperties\": false\n + \ }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '503' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3485' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:31 GMT + ETag: + - '"61b4cf00-d9d"' + Last-Modified: + - Sat, 11 Dec 2021 16:17:04 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 25d633409a1ae21fdf5e4117783f410a0e17a0d7 + X-GitHub-Request-Id: + - 1AF0:3FBB:2C04DD:3BB84C:65149AA8 + X-Served-By: + - cache-lga21974-LGA + X-Timer: + - S1695849632.594862,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_file/FileTest.test_item_asset_header_size.yaml b/tests/extensions/cassettes/test_file/FileTest.test_item_asset_header_size.yaml new file mode 100644 index 000000000..b1a82a280 --- /dev/null +++ b/tests/extensions/cassettes/test_file/FileTest.test_item_asset_header_size.yaml @@ -0,0 +1,112 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/file/v2.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/file/v2.0.0/schema.json#\",\n \"title\": + \"File Info Extension\",\n \"description\": \"STAC File Info Extension for + STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/file/v2.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"file:byte_order\": + {\n \"type\": \"string\",\n \"enum\": [\n \"big-endian\",\n + \ \"little-endian\"\n ],\n \"title\": \"File Byte + Order\"\n },\n \"file:checksum\": {\n \"type\": \"string\",\n + \ \"pattern\": \"^[a-f0-9]+$\",\n \"title\": \"File Checksum + (Multihash)\"\n },\n \"file:header_size\": {\n \"type\": + \"integer\",\n \"minimum\": 0,\n \"title\": \"File Header + Size\"\n },\n \"file:size\": {\n \"type\": \"integer\",\n + \ \"minimum\": 0,\n \"title\": \"File Size\"\n },\n + \ \"file:values\": {\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"type\": \"object\",\n \"required\": + [\n \"values\",\n \"summary\"\n ],\n + \ \"properties\": {\n \"values\": {\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n + \ \"description\": \"Any data type is allowed\"\n }\n + \ },\n \"summary\": {\n \"type\": + \"string\",\n \"minLength\": 1\n }\n }\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!file:)\": + {\n \"$comment\": \"Above, change `template` to the prefix of this + extension\"\n }\n },\n \"additionalProperties\": false\n + \ }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '503' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3485' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:31 GMT + ETag: + - '"61b4cf00-d9d"' + Last-Modified: + - Sat, 11 Dec 2021 16:17:04 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - ed9334cab7f8eb9cf4a1859db594a172dcf80897 + X-GitHub-Request-Id: + - 1AF0:3FBB:2C04DD:3BB84C:65149AA8 + X-Served-By: + - cache-lga21929-LGA + X-Timer: + - S1695849632.731124,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_file/FileTest.test_item_asset_size.yaml b/tests/extensions/cassettes/test_file/FileTest.test_item_asset_size.yaml new file mode 100644 index 000000000..d93cd355a --- /dev/null +++ b/tests/extensions/cassettes/test_file/FileTest.test_item_asset_size.yaml @@ -0,0 +1,112 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/file/v2.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/file/v2.0.0/schema.json#\",\n \"title\": + \"File Info Extension\",\n \"description\": \"STAC File Info Extension for + STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/file/v2.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"file:byte_order\": + {\n \"type\": \"string\",\n \"enum\": [\n \"big-endian\",\n + \ \"little-endian\"\n ],\n \"title\": \"File Byte + Order\"\n },\n \"file:checksum\": {\n \"type\": \"string\",\n + \ \"pattern\": \"^[a-f0-9]+$\",\n \"title\": \"File Checksum + (Multihash)\"\n },\n \"file:header_size\": {\n \"type\": + \"integer\",\n \"minimum\": 0,\n \"title\": \"File Header + Size\"\n },\n \"file:size\": {\n \"type\": \"integer\",\n + \ \"minimum\": 0,\n \"title\": \"File Size\"\n },\n + \ \"file:values\": {\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"type\": \"object\",\n \"required\": + [\n \"values\",\n \"summary\"\n ],\n + \ \"properties\": {\n \"values\": {\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n + \ \"description\": \"Any data type is allowed\"\n }\n + \ },\n \"summary\": {\n \"type\": + \"string\",\n \"minLength\": 1\n }\n }\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!file:)\": + {\n \"$comment\": \"Above, change `template` to the prefix of this + extension\"\n }\n },\n \"additionalProperties\": false\n + \ }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '504' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3485' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:31 GMT + ETag: + - '"61b4cf00-d9d"' + Last-Modified: + - Sat, 11 Dec 2021 16:17:04 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 793320dad25f82957197eebc3135085dc24de73e + X-GitHub-Request-Id: + - 1AF0:3FBB:2C04DD:3BB84C:65149AA8 + X-Served-By: + - cache-lga21920-LGA + X-Timer: + - S1695849632.865628,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_file/FileTest.test_validate_collection.yaml b/tests/extensions/cassettes/test_file/FileTest.test_validate_collection.yaml new file mode 100644 index 000000000..b7df0b17c --- /dev/null +++ b/tests/extensions/cassettes/test_file/FileTest.test_validate_collection.yaml @@ -0,0 +1,112 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/file/v2.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/file/v2.0.0/schema.json#\",\n \"title\": + \"File Info Extension\",\n \"description\": \"STAC File Info Extension for + STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/file/v2.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"file:byte_order\": + {\n \"type\": \"string\",\n \"enum\": [\n \"big-endian\",\n + \ \"little-endian\"\n ],\n \"title\": \"File Byte + Order\"\n },\n \"file:checksum\": {\n \"type\": \"string\",\n + \ \"pattern\": \"^[a-f0-9]+$\",\n \"title\": \"File Checksum + (Multihash)\"\n },\n \"file:header_size\": {\n \"type\": + \"integer\",\n \"minimum\": 0,\n \"title\": \"File Header + Size\"\n },\n \"file:size\": {\n \"type\": \"integer\",\n + \ \"minimum\": 0,\n \"title\": \"File Size\"\n },\n + \ \"file:values\": {\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"type\": \"object\",\n \"required\": + [\n \"values\",\n \"summary\"\n ],\n + \ \"properties\": {\n \"values\": {\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n + \ \"description\": \"Any data type is allowed\"\n }\n + \ },\n \"summary\": {\n \"type\": + \"string\",\n \"minLength\": 1\n }\n }\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!file:)\": + {\n \"$comment\": \"Above, change `template` to the prefix of this + extension\"\n }\n },\n \"additionalProperties\": false\n + \ }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '504' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3485' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:32 GMT + ETag: + - '"61b4cf00-d9d"' + Last-Modified: + - Sat, 11 Dec 2021 16:17:04 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 7524f92fc120474ea0bda84f297e1a7067bb3fbd + X-GitHub-Request-Id: + - 1AF0:3FBB:2C04DD:3BB84C:65149AA8 + X-Served-By: + - cache-lga21932-LGA + X-Timer: + - S1695849632.003684,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_file/FileTest.test_validate_item.yaml b/tests/extensions/cassettes/test_file/FileTest.test_validate_item.yaml new file mode 100644 index 000000000..348221fec --- /dev/null +++ b/tests/extensions/cassettes/test_file/FileTest.test_validate_item.yaml @@ -0,0 +1,112 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/file/v2.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/file/v2.0.0/schema.json#\",\n \"title\": + \"File Info Extension\",\n \"description\": \"STAC File Info Extension for + STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/file/v2.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"file:byte_order\": + {\n \"type\": \"string\",\n \"enum\": [\n \"big-endian\",\n + \ \"little-endian\"\n ],\n \"title\": \"File Byte + Order\"\n },\n \"file:checksum\": {\n \"type\": \"string\",\n + \ \"pattern\": \"^[a-f0-9]+$\",\n \"title\": \"File Checksum + (Multihash)\"\n },\n \"file:header_size\": {\n \"type\": + \"integer\",\n \"minimum\": 0,\n \"title\": \"File Header + Size\"\n },\n \"file:size\": {\n \"type\": \"integer\",\n + \ \"minimum\": 0,\n \"title\": \"File Size\"\n },\n + \ \"file:values\": {\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"type\": \"object\",\n \"required\": + [\n \"values\",\n \"summary\"\n ],\n + \ \"properties\": {\n \"values\": {\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n + \ \"description\": \"Any data type is allowed\"\n }\n + \ },\n \"summary\": {\n \"type\": + \"string\",\n \"minLength\": 1\n }\n }\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!file:)\": + {\n \"$comment\": \"Above, change `template` to the prefix of this + extension\"\n }\n },\n \"additionalProperties\": false\n + \ }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '504' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3485' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:32 GMT + ETag: + - '"61b4cf00-d9d"' + Last-Modified: + - Sat, 11 Dec 2021 16:17:04 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 1d99f3336db9d650f5ee720f537320ec43562207 + X-GitHub-Request-Id: + - 1AF0:3FBB:2C04DD:3BB84C:65149AA8 + X-Served-By: + - cache-lga21923-LGA + X-Timer: + - S1695849632.142290,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_grid/GridTest.test_attributes.yaml b/tests/extensions/cassettes/test_grid/GridTest.test_attributes.yaml index 2859fbc7b..0fb5ad61d 100644 --- a/tests/extensions/cassettes/test_grid/GridTest.test_attributes.yaml +++ b/tests/extensions/cassettes/test_grid/GridTest.test_attributes.yaml @@ -41,7 +41,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '504' Cache-Control: - max-age=600 Connection: @@ -51,7 +51,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:16 GMT + - Wed, 27 Sep 2023 21:20:32 GMT ETag: - '"638a24f0-6d8"' Last-Modified: @@ -69,15 +69,15 @@ interactions: X-Cache-Hits: - '1' X-Fastly-Request-ID: - - 6a5fe720ecfde9bd8cc1bd049194ffa98eb5efe9 + - a69b5ad098af92c3fb4a236136ee5a9ad0561b4d X-GitHub-Request-Id: - - A560:3952:B2C3A7:FFFAC8:650D90B9 + - 4E9E:6F22:2C0F91:3C0D6A:65149AA8 X-Served-By: - - cache-den8276-DEN + - cache-lga21968-LGA X-Timer: - - S1695410056.443445,VS0,VE59 + - S1695849632.260510,VS0,VE2 expires: - - Fri, 22 Sep 2023 13:13:53 GMT + - Wed, 27 Sep 2023 21:22:08 GMT permissions-policy: - interest-cohort=() x-proxy-cache: diff --git a/tests/extensions/cassettes/test_grid/GridTest.test_modify.yaml b/tests/extensions/cassettes/test_grid/GridTest.test_modify.yaml new file mode 100644 index 000000000..8ca6df385 --- /dev/null +++ b/tests/extensions/cassettes/test_grid/GridTest.test_modify.yaml @@ -0,0 +1,88 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/grid/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/grid/v1.1.0/schema.json#\",\n \"title\": + \"Grid Extension\",\n \"description\": \"STAC Grid Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"allOf\": + [\n {\n \"required\": [\n \"grid:code\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n }\n + \ }\n }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/grid/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"require_any_field\": {\n \"anyOf\": + [\n {\"required\": [\"grid:code\"]}\n ]\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"grid:code\": + {\n \"type\": \"string\",\n \"pattern\": \"^[A-Z0-9]+-[-_.A-Za-z0-9]+$\"\n + \ }\n },\n \"patternProperties\": {\n \"^(?!grid:)\": + {\n \"$comment\": \"Do not allow other fields with this prefix\"\n + \ }\n },\n \"additionalProperties\": false\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '504' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1752' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:32 GMT + ETag: + - '"638a24f0-6d8"' + Last-Modified: + - Fri, 02 Dec 2022 16:16:48 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 697d768e2744c608722e6442677475bacf54273a + X-GitHub-Request-Id: + - 4E9E:6F22:2C0F91:3C0D6A:65149AA8 + X-Served-By: + - cache-lga21925-LGA + X-Timer: + - S1695849632.412708,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_label/LabelTest.test_from_file.yaml b/tests/extensions/cassettes/test_label/LabelTest.test_from_file.yaml new file mode 100644 index 000000000..9b28419fc --- /dev/null +++ b/tests/extensions/cassettes/test_label/LabelTest.test_from_file.yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '532' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:32 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 351fbafd90c387553f929244b2af4413ef4939b8 + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21977-LGA + X-Timer: + - S1695849633.608346,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_label/LabelTest.test_label_classes.yaml b/tests/extensions/cassettes/test_label/LabelTest.test_label_classes.yaml new file mode 100644 index 000000000..27a30c1dd --- /dev/null +++ b/tests/extensions/cassettes/test_label/LabelTest.test_label_classes.yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '533' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:32 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 68db49da8d4e7948cc40d4aba28d5907d20006f5 + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21924-LGA + X-Timer: + - S1695849633.783766,VS0,VE0 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_label/LabelTest.test_label_description.yaml b/tests/extensions/cassettes/test_label/LabelTest.test_label_description.yaml new file mode 100644 index 000000000..4a70140ff --- /dev/null +++ b/tests/extensions/cassettes/test_label/LabelTest.test_label_description.yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '533' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:32 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - b746573be0e8b4f955e469be89318e33488cf1e8 + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21942-LGA + X-Timer: + - S1695849633.918008,VS0,VE5 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_label/LabelTest.test_label_methods.yaml b/tests/extensions/cassettes/test_label/LabelTest.test_label_methods.yaml new file mode 100644 index 000000000..db411972f --- /dev/null +++ b/tests/extensions/cassettes/test_label/LabelTest.test_label_methods.yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '533' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:33 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 095de4fa2ee175e1b8b191190ab0fdd795b889aa + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849633.052099,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_label/LabelTest.test_label_overviews.yaml b/tests/extensions/cassettes/test_label/LabelTest.test_label_overviews.yaml new file mode 100644 index 000000000..1ec9e38ba --- /dev/null +++ b/tests/extensions/cassettes/test_label/LabelTest.test_label_overviews.yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '533' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:33 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 96908c4970e4cf24143f3829a68257ec97ee004e + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21921-LGA + X-Timer: + - S1695849633.189502,VS0,VE2 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_label/LabelTest.test_label_properties.yaml b/tests/extensions/cassettes/test_label/LabelTest.test_label_properties.yaml new file mode 100644 index 000000000..93ff28245 --- /dev/null +++ b/tests/extensions/cassettes/test_label/LabelTest.test_label_properties.yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '532' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:33 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '3' + X-Fastly-Request-ID: + - 497a01b8ab9210fc0018782459c76e622a1e92ca + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21933-LGA + X-Timer: + - S1695849633.323635,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_label/LabelTest.test_label_tasks.yaml b/tests/extensions/cassettes/test_label/LabelTest.test_label_tasks.yaml new file mode 100644 index 000000000..b696478df --- /dev/null +++ b/tests/extensions/cassettes/test_label/LabelTest.test_label_tasks.yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '533' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:33 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '3' + X-Fastly-Request-ID: + - 49523848edf72afb645f734fb7d3d250e2c02180 + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21979-LGA + X-Timer: + - S1695849633.460346,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_label/LabelTest.test_label_type.yaml b/tests/extensions/cassettes/test_label/LabelTest.test_label_type.yaml new file mode 100644 index 000000000..746651ada --- /dev/null +++ b/tests/extensions/cassettes/test_label/LabelTest.test_label_type.yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '533' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:33 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - c64caf5818bb36b553bffb2b98d7cc007c8f5ffc + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21976-LGA + X-Timer: + - S1695849634.599944,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_label/LabelTest.test_validate_label.yaml b/tests/extensions/cassettes/test_label/LabelTest.test_validate_label.yaml new file mode 100644 index 000000000..a174bdfa6 --- /dev/null +++ b/tests/extensions/cassettes/test_label/LabelTest.test_validate_label.yaml @@ -0,0 +1,157 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '533' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:33 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 1a00ee3c76cffe93b604474432da819ab99141f1 + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21964-LGA + X-Timer: + - S1695849634.769099,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_mgrs/test_set_field[grid_square-ZA].yaml b/tests/extensions/cassettes/test_mgrs/test_set_field[grid_square-ZA].yaml new file mode 100644 index 000000000..871f4be8b --- /dev/null +++ b/tests/extensions/cassettes/test_mgrs/test_set_field[grid_square-ZA].yaml @@ -0,0 +1,104 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/mgrs/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/mgrs/v1.0.0/schema.json#\",\n \"title\": + \"MGRS Extension\",\n \"description\": \"STAC MGRS Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"allOf\": + [\n {\n \"$comment\": \"Require fields here + for item properties.\",\n \"required\": [\n \"mgrs:latitude_band\",\n + \ \"mgrs:grid_square\"\n ]\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/mgrs/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"mgrs:latitude_band\": + {\n \"type\": \"string\"\n },\n \"mgrs:grid_square\": + {\n \"type\": \"string\"\n },\n \"mgrs:utm_zone\": + {\n \"type\": \"integer\"\n }\n },\n \"patternProperties\": + {\n \"^(?!mgrs:)\": {\n \"$comment\": \"Do not allow other + fields with this prefix\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '505' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2889' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:34 GMT + ETag: + - '"60c20ce1-b49"' + Last-Modified: + - Thu, 10 Jun 2021 13:00:17 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 2002f276dfb20bbe2a35f862aebe89d0d9de2db7 + X-GitHub-Request-Id: + - 7960:22B5:28EFF5:38AE77:65149AA8 + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849634.330161,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:09 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_mgrs/test_set_field[latitude_band-C].yaml b/tests/extensions/cassettes/test_mgrs/test_set_field[latitude_band-C].yaml new file mode 100644 index 000000000..b78f1b703 --- /dev/null +++ b/tests/extensions/cassettes/test_mgrs/test_set_field[latitude_band-C].yaml @@ -0,0 +1,104 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/mgrs/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/mgrs/v1.0.0/schema.json#\",\n \"title\": + \"MGRS Extension\",\n \"description\": \"STAC MGRS Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"allOf\": + [\n {\n \"$comment\": \"Require fields here + for item properties.\",\n \"required\": [\n \"mgrs:latitude_band\",\n + \ \"mgrs:grid_square\"\n ]\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/mgrs/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"mgrs:latitude_band\": + {\n \"type\": \"string\"\n },\n \"mgrs:grid_square\": + {\n \"type\": \"string\"\n },\n \"mgrs:utm_zone\": + {\n \"type\": \"integer\"\n }\n },\n \"patternProperties\": + {\n \"^(?!mgrs:)\": {\n \"$comment\": \"Do not allow other + fields with this prefix\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '505' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2889' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:34 GMT + ETag: + - '"60c20ce1-b49"' + Last-Modified: + - Thu, 10 Jun 2021 13:00:17 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 72c23cf09e2185d1c9ddad5e09bc29593da9b8c1 + X-GitHub-Request-Id: + - 7960:22B5:28EFF5:38AE77:65149AA8 + X-Served-By: + - cache-lga21982-LGA + X-Timer: + - S1695849634.208548,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:09 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_mgrs/test_set_field[utm_zone-59].yaml b/tests/extensions/cassettes/test_mgrs/test_set_field[utm_zone-59].yaml new file mode 100644 index 000000000..03f6b84d0 --- /dev/null +++ b/tests/extensions/cassettes/test_mgrs/test_set_field[utm_zone-59].yaml @@ -0,0 +1,104 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/mgrs/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/mgrs/v1.0.0/schema.json#\",\n \"title\": + \"MGRS Extension\",\n \"description\": \"STAC MGRS Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"allOf\": + [\n {\n \"$comment\": \"Require fields here + for item properties.\",\n \"required\": [\n \"mgrs:latitude_band\",\n + \ \"mgrs:grid_square\"\n ]\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/mgrs/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"mgrs:latitude_band\": + {\n \"type\": \"string\"\n },\n \"mgrs:grid_square\": + {\n \"type\": \"string\"\n },\n \"mgrs:utm_zone\": + {\n \"type\": \"integer\"\n }\n },\n \"patternProperties\": + {\n \"^(?!mgrs:)\": {\n \"$comment\": \"Do not allow other + fields with this prefix\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '505' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2889' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:34 GMT + ETag: + - '"60c20ce1-b49"' + Last-Modified: + - Thu, 10 Jun 2021 13:00:17 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 4b954d8f3442d32a7b917759f177c25c33115a90 + X-GitHub-Request-Id: + - 7960:22B5:28EFF5:38AE77:65149AA8 + X-Served-By: + - cache-lga21979-LGA + X-Timer: + - S1695849634.463547,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:09 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_mgrs/test_validate.yaml b/tests/extensions/cassettes/test_mgrs/test_validate.yaml index 357b27879..8a86a35f6 100644 --- a/tests/extensions/cassettes/test_mgrs/test_validate.yaml +++ b/tests/extensions/cassettes/test_mgrs/test_validate.yaml @@ -57,7 +57,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '505' Cache-Control: - max-age=600 Connection: @@ -67,7 +67,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:17 GMT + - Wed, 27 Sep 2023 21:20:34 GMT ETag: - '"60c20ce1-b49"' Last-Modified: @@ -85,15 +85,15 @@ interactions: X-Cache-Hits: - '1' X-Fastly-Request-ID: - - 3baec84d451892c42858c68368d30505be4cbf41 + - 91d3f84689a49bc5fcade583bab68d7bd1204220 X-GitHub-Request-Id: - - FFAC:02AD:BAC0C3:107F5D9:650D90B8 + - 7960:22B5:28EFF5:38AE77:65149AA8 X-Served-By: - - cache-den8276-DEN + - cache-lga21936-LGA X-Timer: - - S1695410057.012842,VS0,VE65 + - S1695849634.068041,VS0,VE2 expires: - - Fri, 22 Sep 2023 13:13:53 GMT + - Wed, 27 Sep 2023 21:22:09 GMT permissions-policy: - interest-cohort=() x-proxy-cache: diff --git a/tests/extensions/cassettes/test_pointcloud/PointcloudTest.test_count.yaml b/tests/extensions/cassettes/test_pointcloud/PointcloudTest.test_count.yaml index 31501e2d2..4bd1473aa 100644 --- a/tests/extensions/cassettes/test_pointcloud/PointcloudTest.test_count.yaml +++ b/tests/extensions/cassettes/test_pointcloud/PointcloudTest.test_count.yaml @@ -79,7 +79,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '505' Cache-Control: - max-age=600 Connection: @@ -89,7 +89,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:17 GMT + - Wed, 27 Sep 2023 21:20:34 GMT ETag: - '"6046b7f8-114a"' Last-Modified: @@ -103,19 +103,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - c3a1681b99cc8ee3f4ed8206ea084a5eb5e7db48 + - af53889d5aa4bb79947a009b16060850bd06325d X-GitHub-Request-Id: - - 5D28:3BBF:CDFFAA:1251579:650DE787 + - 333A:6FEB:2BC132:3B8EC1:65149AA8 X-Served-By: - - cache-den8271-DEN + - cache-lga21972-LGA X-Timer: - - S1695410057.273161,VS0,VE60 + - S1695849635.608961,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:17 GMT + - Wed, 27 Sep 2023 21:22:09 GMT permissions-policy: - interest-cohort=() x-proxy-cache: diff --git a/tests/extensions/cassettes/test_pointcloud/PointcloudTest.test_density.yaml b/tests/extensions/cassettes/test_pointcloud/PointcloudTest.test_density.yaml new file mode 100644 index 000000000..23c72f9af --- /dev/null +++ b/tests/extensions/cassettes/test_pointcloud/PointcloudTest.test_density.yaml @@ -0,0 +1,126 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/pointcloud/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/pointcloud/v1.0.0/schema.json#\",\n \"title\": + \"Point Cloud Extension\",\n \"description\": \"STAC Point Cloud Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for item properties.\",\n \"required\": + [\n \"pc:count\",\n \"pc:type\",\n \"pc:encoding\",\n + \ \"pc:schemas\"\n ]\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$comment\": \"Remove this + and the following object if this is not an extension to a Collection.\",\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n ]\n }\n + \ ],\n \"definitions\": {\n \"stac_extensions\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_extensions\"\n ],\n \"properties\": + {\n \"stac_extensions\": {\n \"type\": \"array\",\n \"contains\": + {\n \"const\": \"https://stac-extensions.github.io/pointcloud/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"pc:count\": {\n \"type\": + \"integer\",\n \"minimum\": 0\n },\n \"pc:type\": {\n + \ \"type\": \"string\"\n },\n \"pc:encoding\": {\n \"type\": + \"string\"\n },\n \"pc:schemas\": {\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"$ref\": + \"#/definitions/schema\"\n }\n },\n \"pc:density\": + {\n \"type\": \"number\",\n \"minimum\": 0\n },\n + \ \"pc:statistics\": {\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"$ref\": \"#/definitions/stats\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!pc:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"schema\": + {\n \"type\": \"object\",\n \"required\": [\n \"name\",\n + \ \"size\",\n \"type\"\n ],\n \"properties\": {\n \"name\": + {\n \"type\": \"string\"\n },\n \"size\": {\n \"type\": + \"integer\"\n },\n \"type\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"floating\",\n \"unsigned\",\n + \ \"signed\"\n ]\n }\n }\n },\n \"stats\": + {\n \"type\": \"object\",\n \"minProperties\": 2,\n \"required\": + [\n \"name\"\n ],\n \"properties\": {\n \"name\": + {\n \"type\": \"string\"\n },\n \"position\": {\n \"type\": + \"integer\"\n },\n \"average\": {\n \"type\": \"number\"\n + \ },\n \"count\": {\n \"type\": \"integer\"\n },\n + \ \"maximum\": {\n \"type\": \"number\"\n },\n \"minimum\": + {\n \"type\": \"number\"\n },\n \"stddev\": {\n \"type\": + \"number\"\n },\n \"variance\": {\n \"type\": \"number\"\n + \ }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '505' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4426' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:34 GMT + ETag: + - '"6046b7f8-114a"' + Last-Modified: + - Mon, 08 Mar 2021 23:49:12 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 1641574b07d681d918931a806004e7cae782c579 + X-GitHub-Request-Id: + - 333A:6FEB:2BC132:3B8EC1:65149AA8 + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849635.756345,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:09 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_pointcloud/PointcloudTest.test_encoding.yaml b/tests/extensions/cassettes/test_pointcloud/PointcloudTest.test_encoding.yaml new file mode 100644 index 000000000..f51fea3f9 --- /dev/null +++ b/tests/extensions/cassettes/test_pointcloud/PointcloudTest.test_encoding.yaml @@ -0,0 +1,126 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/pointcloud/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/pointcloud/v1.0.0/schema.json#\",\n \"title\": + \"Point Cloud Extension\",\n \"description\": \"STAC Point Cloud Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for item properties.\",\n \"required\": + [\n \"pc:count\",\n \"pc:type\",\n \"pc:encoding\",\n + \ \"pc:schemas\"\n ]\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$comment\": \"Remove this + and the following object if this is not an extension to a Collection.\",\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n ]\n }\n + \ ],\n \"definitions\": {\n \"stac_extensions\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_extensions\"\n ],\n \"properties\": + {\n \"stac_extensions\": {\n \"type\": \"array\",\n \"contains\": + {\n \"const\": \"https://stac-extensions.github.io/pointcloud/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"pc:count\": {\n \"type\": + \"integer\",\n \"minimum\": 0\n },\n \"pc:type\": {\n + \ \"type\": \"string\"\n },\n \"pc:encoding\": {\n \"type\": + \"string\"\n },\n \"pc:schemas\": {\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"$ref\": + \"#/definitions/schema\"\n }\n },\n \"pc:density\": + {\n \"type\": \"number\",\n \"minimum\": 0\n },\n + \ \"pc:statistics\": {\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"$ref\": \"#/definitions/stats\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!pc:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"schema\": + {\n \"type\": \"object\",\n \"required\": [\n \"name\",\n + \ \"size\",\n \"type\"\n ],\n \"properties\": {\n \"name\": + {\n \"type\": \"string\"\n },\n \"size\": {\n \"type\": + \"integer\"\n },\n \"type\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"floating\",\n \"unsigned\",\n + \ \"signed\"\n ]\n }\n }\n },\n \"stats\": + {\n \"type\": \"object\",\n \"minProperties\": 2,\n \"required\": + [\n \"name\"\n ],\n \"properties\": {\n \"name\": + {\n \"type\": \"string\"\n },\n \"position\": {\n \"type\": + \"integer\"\n },\n \"average\": {\n \"type\": \"number\"\n + \ },\n \"count\": {\n \"type\": \"integer\"\n },\n + \ \"maximum\": {\n \"type\": \"number\"\n },\n \"minimum\": + {\n \"type\": \"number\"\n },\n \"stddev\": {\n \"type\": + \"number\"\n },\n \"variance\": {\n \"type\": \"number\"\n + \ }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '505' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4426' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:34 GMT + ETag: + - '"6046b7f8-114a"' + Last-Modified: + - Mon, 08 Mar 2021 23:49:12 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 09cc1da36fcbf3d670cb46258ec4f33cb7fa8377 + X-GitHub-Request-Id: + - 333A:6FEB:2BC132:3B8EC1:65149AA8 + X-Served-By: + - cache-lga21970-LGA + X-Timer: + - S1695849635.884731,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:09 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_pointcloud/PointcloudTest.test_schemas.yaml b/tests/extensions/cassettes/test_pointcloud/PointcloudTest.test_schemas.yaml new file mode 100644 index 000000000..613c3f447 --- /dev/null +++ b/tests/extensions/cassettes/test_pointcloud/PointcloudTest.test_schemas.yaml @@ -0,0 +1,126 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/pointcloud/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/pointcloud/v1.0.0/schema.json#\",\n \"title\": + \"Point Cloud Extension\",\n \"description\": \"STAC Point Cloud Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for item properties.\",\n \"required\": + [\n \"pc:count\",\n \"pc:type\",\n \"pc:encoding\",\n + \ \"pc:schemas\"\n ]\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$comment\": \"Remove this + and the following object if this is not an extension to a Collection.\",\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n ]\n }\n + \ ],\n \"definitions\": {\n \"stac_extensions\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_extensions\"\n ],\n \"properties\": + {\n \"stac_extensions\": {\n \"type\": \"array\",\n \"contains\": + {\n \"const\": \"https://stac-extensions.github.io/pointcloud/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"pc:count\": {\n \"type\": + \"integer\",\n \"minimum\": 0\n },\n \"pc:type\": {\n + \ \"type\": \"string\"\n },\n \"pc:encoding\": {\n \"type\": + \"string\"\n },\n \"pc:schemas\": {\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"$ref\": + \"#/definitions/schema\"\n }\n },\n \"pc:density\": + {\n \"type\": \"number\",\n \"minimum\": 0\n },\n + \ \"pc:statistics\": {\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"$ref\": \"#/definitions/stats\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!pc:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"schema\": + {\n \"type\": \"object\",\n \"required\": [\n \"name\",\n + \ \"size\",\n \"type\"\n ],\n \"properties\": {\n \"name\": + {\n \"type\": \"string\"\n },\n \"size\": {\n \"type\": + \"integer\"\n },\n \"type\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"floating\",\n \"unsigned\",\n + \ \"signed\"\n ]\n }\n }\n },\n \"stats\": + {\n \"type\": \"object\",\n \"minProperties\": 2,\n \"required\": + [\n \"name\"\n ],\n \"properties\": {\n \"name\": + {\n \"type\": \"string\"\n },\n \"position\": {\n \"type\": + \"integer\"\n },\n \"average\": {\n \"type\": \"number\"\n + \ },\n \"count\": {\n \"type\": \"integer\"\n },\n + \ \"maximum\": {\n \"type\": \"number\"\n },\n \"minimum\": + {\n \"type\": \"number\"\n },\n \"stddev\": {\n \"type\": + \"number\"\n },\n \"variance\": {\n \"type\": \"number\"\n + \ }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '506' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4426' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:35 GMT + ETag: + - '"6046b7f8-114a"' + Last-Modified: + - Mon, 08 Mar 2021 23:49:12 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 28e6ae8f469cbc1a6f89fab500b7571127725838 + X-GitHub-Request-Id: + - 333A:6FEB:2BC132:3B8EC1:65149AA8 + X-Served-By: + - cache-lga21982-LGA + X-Timer: + - S1695849635.031479,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:09 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_pointcloud/PointcloudTest.test_statistics.yaml b/tests/extensions/cassettes/test_pointcloud/PointcloudTest.test_statistics.yaml new file mode 100644 index 000000000..89f6d24cc --- /dev/null +++ b/tests/extensions/cassettes/test_pointcloud/PointcloudTest.test_statistics.yaml @@ -0,0 +1,126 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/pointcloud/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/pointcloud/v1.0.0/schema.json#\",\n \"title\": + \"Point Cloud Extension\",\n \"description\": \"STAC Point Cloud Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for item properties.\",\n \"required\": + [\n \"pc:count\",\n \"pc:type\",\n \"pc:encoding\",\n + \ \"pc:schemas\"\n ]\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$comment\": \"Remove this + and the following object if this is not an extension to a Collection.\",\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n ]\n }\n + \ ],\n \"definitions\": {\n \"stac_extensions\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_extensions\"\n ],\n \"properties\": + {\n \"stac_extensions\": {\n \"type\": \"array\",\n \"contains\": + {\n \"const\": \"https://stac-extensions.github.io/pointcloud/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"pc:count\": {\n \"type\": + \"integer\",\n \"minimum\": 0\n },\n \"pc:type\": {\n + \ \"type\": \"string\"\n },\n \"pc:encoding\": {\n \"type\": + \"string\"\n },\n \"pc:schemas\": {\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"$ref\": + \"#/definitions/schema\"\n }\n },\n \"pc:density\": + {\n \"type\": \"number\",\n \"minimum\": 0\n },\n + \ \"pc:statistics\": {\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"$ref\": \"#/definitions/stats\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!pc:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"schema\": + {\n \"type\": \"object\",\n \"required\": [\n \"name\",\n + \ \"size\",\n \"type\"\n ],\n \"properties\": {\n \"name\": + {\n \"type\": \"string\"\n },\n \"size\": {\n \"type\": + \"integer\"\n },\n \"type\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"floating\",\n \"unsigned\",\n + \ \"signed\"\n ]\n }\n }\n },\n \"stats\": + {\n \"type\": \"object\",\n \"minProperties\": 2,\n \"required\": + [\n \"name\"\n ],\n \"properties\": {\n \"name\": + {\n \"type\": \"string\"\n },\n \"position\": {\n \"type\": + \"integer\"\n },\n \"average\": {\n \"type\": \"number\"\n + \ },\n \"count\": {\n \"type\": \"integer\"\n },\n + \ \"maximum\": {\n \"type\": \"number\"\n },\n \"minimum\": + {\n \"type\": \"number\"\n },\n \"stddev\": {\n \"type\": + \"number\"\n },\n \"variance\": {\n \"type\": \"number\"\n + \ }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '506' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4426' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:35 GMT + ETag: + - '"6046b7f8-114a"' + Last-Modified: + - Mon, 08 Mar 2021 23:49:12 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - d84afa9d11b620ea4693ade9e47344cbce95d57d + X-GitHub-Request-Id: + - 333A:6FEB:2BC132:3B8EC1:65149AA8 + X-Served-By: + - cache-lga21921-LGA + X-Timer: + - S1695849635.166128,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:09 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_pointcloud/PointcloudTest.test_type.yaml b/tests/extensions/cassettes/test_pointcloud/PointcloudTest.test_type.yaml new file mode 100644 index 000000000..042dcb4bb --- /dev/null +++ b/tests/extensions/cassettes/test_pointcloud/PointcloudTest.test_type.yaml @@ -0,0 +1,126 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/pointcloud/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/pointcloud/v1.0.0/schema.json#\",\n \"title\": + \"Point Cloud Extension\",\n \"description\": \"STAC Point Cloud Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for item properties.\",\n \"required\": + [\n \"pc:count\",\n \"pc:type\",\n \"pc:encoding\",\n + \ \"pc:schemas\"\n ]\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$comment\": \"Remove this + and the following object if this is not an extension to a Collection.\",\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n ]\n }\n + \ ],\n \"definitions\": {\n \"stac_extensions\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_extensions\"\n ],\n \"properties\": + {\n \"stac_extensions\": {\n \"type\": \"array\",\n \"contains\": + {\n \"const\": \"https://stac-extensions.github.io/pointcloud/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"pc:count\": {\n \"type\": + \"integer\",\n \"minimum\": 0\n },\n \"pc:type\": {\n + \ \"type\": \"string\"\n },\n \"pc:encoding\": {\n \"type\": + \"string\"\n },\n \"pc:schemas\": {\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"$ref\": + \"#/definitions/schema\"\n }\n },\n \"pc:density\": + {\n \"type\": \"number\",\n \"minimum\": 0\n },\n + \ \"pc:statistics\": {\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"$ref\": \"#/definitions/stats\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!pc:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"schema\": + {\n \"type\": \"object\",\n \"required\": [\n \"name\",\n + \ \"size\",\n \"type\"\n ],\n \"properties\": {\n \"name\": + {\n \"type\": \"string\"\n },\n \"size\": {\n \"type\": + \"integer\"\n },\n \"type\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"floating\",\n \"unsigned\",\n + \ \"signed\"\n ]\n }\n }\n },\n \"stats\": + {\n \"type\": \"object\",\n \"minProperties\": 2,\n \"required\": + [\n \"name\"\n ],\n \"properties\": {\n \"name\": + {\n \"type\": \"string\"\n },\n \"position\": {\n \"type\": + \"integer\"\n },\n \"average\": {\n \"type\": \"number\"\n + \ },\n \"count\": {\n \"type\": \"integer\"\n },\n + \ \"maximum\": {\n \"type\": \"number\"\n },\n \"minimum\": + {\n \"type\": \"number\"\n },\n \"stddev\": {\n \"type\": + \"number\"\n },\n \"variance\": {\n \"type\": \"number\"\n + \ }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '506' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4426' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:35 GMT + ETag: + - '"6046b7f8-114a"' + Last-Modified: + - Mon, 08 Mar 2021 23:49:12 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - d317c2035f6eac9efd733747f30c15fe612b016a + X-GitHub-Request-Id: + - 333A:6FEB:2BC132:3B8EC1:65149AA8 + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849635.307626,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:09 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_pointcloud/PointcloudTest.test_validate_pointcloud.yaml b/tests/extensions/cassettes/test_pointcloud/PointcloudTest.test_validate_pointcloud.yaml new file mode 100644 index 000000000..7ed12529a --- /dev/null +++ b/tests/extensions/cassettes/test_pointcloud/PointcloudTest.test_validate_pointcloud.yaml @@ -0,0 +1,126 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/pointcloud/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/pointcloud/v1.0.0/schema.json#\",\n \"title\": + \"Point Cloud Extension\",\n \"description\": \"STAC Point Cloud Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for item properties.\",\n \"required\": + [\n \"pc:count\",\n \"pc:type\",\n \"pc:encoding\",\n + \ \"pc:schemas\"\n ]\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$comment\": \"Remove this + and the following object if this is not an extension to a Collection.\",\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n ]\n }\n + \ ],\n \"definitions\": {\n \"stac_extensions\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_extensions\"\n ],\n \"properties\": + {\n \"stac_extensions\": {\n \"type\": \"array\",\n \"contains\": + {\n \"const\": \"https://stac-extensions.github.io/pointcloud/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"pc:count\": {\n \"type\": + \"integer\",\n \"minimum\": 0\n },\n \"pc:type\": {\n + \ \"type\": \"string\"\n },\n \"pc:encoding\": {\n \"type\": + \"string\"\n },\n \"pc:schemas\": {\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"$ref\": + \"#/definitions/schema\"\n }\n },\n \"pc:density\": + {\n \"type\": \"number\",\n \"minimum\": 0\n },\n + \ \"pc:statistics\": {\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"$ref\": \"#/definitions/stats\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!pc:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"schema\": + {\n \"type\": \"object\",\n \"required\": [\n \"name\",\n + \ \"size\",\n \"type\"\n ],\n \"properties\": {\n \"name\": + {\n \"type\": \"string\"\n },\n \"size\": {\n \"type\": + \"integer\"\n },\n \"type\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"floating\",\n \"unsigned\",\n + \ \"signed\"\n ]\n }\n }\n },\n \"stats\": + {\n \"type\": \"object\",\n \"minProperties\": 2,\n \"required\": + [\n \"name\"\n ],\n \"properties\": {\n \"name\": + {\n \"type\": \"string\"\n },\n \"position\": {\n \"type\": + \"integer\"\n },\n \"average\": {\n \"type\": \"number\"\n + \ },\n \"count\": {\n \"type\": \"integer\"\n },\n + \ \"maximum\": {\n \"type\": \"number\"\n },\n \"minimum\": + {\n \"type\": \"number\"\n },\n \"stddev\": {\n \"type\": + \"number\"\n },\n \"variance\": {\n \"type\": \"number\"\n + \ }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '506' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4426' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:35 GMT + ETag: + - '"6046b7f8-114a"' + Last-Modified: + - Mon, 08 Mar 2021 23:49:12 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - ff8e414d9677f3b2abea02e734ae23040cc3315e + X-GitHub-Request-Id: + - 333A:6FEB:2BC132:3B8EC1:65149AA8 + X-Served-By: + - cache-lga21942-LGA + X-Timer: + - S1695849635.445108,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:09 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_projection/ProjectionTest.test_bbox.yaml b/tests/extensions/cassettes/test_projection/ProjectionTest.test_bbox.yaml index d4a7b366e..547f37006 100644 --- a/tests/extensions/cassettes/test_projection/ProjectionTest.test_bbox.yaml +++ b/tests/extensions/cassettes/test_projection/ProjectionTest.test_bbox.yaml @@ -1,4 +1,254 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '534' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:35 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - bea1dc2edcb9ae4ac8a9912d05a8a1efe364d4ab + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21924-LGA + X-Timer: + - S1695849636.600949,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"$comment\": \"This schema succeeds if the proj: fields + are not used at all, please keep this in mind.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n }\n ]\n },\n + \ {\n \"$comment\": \"This is the schema for STAC Collections.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Collection\"\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"proj:epsg\":{\n \"title\":\"EPSG + code\",\n \"type\":[\n \"integer\",\n \"null\"\n + \ ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.5/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '534' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4369' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:35 GMT + ETag: + - '"63e6651b-1111"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 0422e25767d3bfeea270649a298d958ba6f0add5 + X-GitHub-Request-Id: + - 303E:20A2:70F70E:9F20FD:65149A8D + X-Served-By: + - cache-lga21964-LGA + X-Timer: + - S1695849636.698176,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:21:41 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK - request: body: null headers: @@ -14,12 +264,14 @@ interactions: body: string: '' headers: + Age: + - '506' CDN-Cache-Control: - public CF-Cache-Status: - - EXPIRED - CF-RAY: - - 80acdebd1b305380-DEN + - HIT + CF-Ray: + - 80d6caa0d808c427-EWR Cache-Control: - max-age=1200 Connection: @@ -33,7 +285,7 @@ interactions: Cross-Origin-Opener-Policy: - same-origin Date: - - Fri, 22 Sep 2023 19:14:17 GMT + - Wed, 27 Sep 2023 21:20:36 GMT Location: - https://proj.org/en/9.3/schemas/v0.5/projjson.schema.json Referrer-Policy: @@ -43,7 +295,7 @@ interactions: Vary: - Accept-Language, Cookie, Accept-Encoding X-Backend: - - web-i-097db139fd15f93c3 + - web-i-00190b17db4987e5f X-Content-Type-Options: - nosniff X-RTD-Domain: @@ -580,14 +832,18 @@ interactions: \"ids\": {}\n },\n \"required\" : [ \"name\" ],\n \"additionalProperties\": false\n }\n\n }\n}\n" headers: + Access-Control-Allow-Methods: + - HEAD, OPTIONS, GET Access-Control-Allow-Origin: - '*' + Age: + - '506' CDN-Cache-Control: - public CF-Cache-Status: - - MISS - CF-RAY: - - 80acdebf0c5c5202-DEN + - HIT + CF-Ray: + - 80d6caa1a8120f75-EWR Cache-Control: - max-age=1200 Connection: @@ -595,7 +851,7 @@ interactions: Content-Type: - application/json Date: - - Fri, 22 Sep 2023 19:14:18 GMT + - Wed, 27 Sep 2023 21:20:36 GMT ETag: - W/"567e3992b5fd3188af907a4cdc4781b3" Last-Modified: @@ -609,7 +865,7 @@ interactions: Vary: - Accept-Encoding X-Backend: - - web-i-01770b2aec355d681 + - web-i-04a0936e538e90895 X-Content-Type-Options: - nosniff X-RTD-Domain: @@ -629,11 +885,11 @@ interactions: alt-svc: - h3=":443"; ma=86400 x-amz-id-2: - - MffyiA0jKwkdmkXWqTjJEwAy/Dj8yOSr7y/l96hy9mlvPhMc2fWkHzRhbxn7AmCvClLP8LihAsE= + - UBlptQ6CoU1gOcZjt2RSY1lr3wEiR3bA6BF4Ck7ffEb2Gvy2wrxxhJ3mNAJRYDJ1sJ9j4auUgjI= x-amz-meta-mtime: - '1693732240.238196845' x-amz-request-id: - - 26C0710CPSESA837 + - 7M5G3K3ZTHPYERHZ x-amz-server-side-encryption: - AES256 status: diff --git a/tests/extensions/cassettes/test_projection/ProjectionTest.test_centroid.yaml b/tests/extensions/cassettes/test_projection/ProjectionTest.test_centroid.yaml new file mode 100644 index 000000000..bd9ae71b7 --- /dev/null +++ b/tests/extensions/cassettes/test_projection/ProjectionTest.test_centroid.yaml @@ -0,0 +1,898 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '534' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:36 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 5eb0761a1bc2880f93dfcbfa47de5a6af18d7563 + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21933-LGA + X-Timer: + - S1695849636.334791,VS0,VE7 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"$comment\": \"This schema succeeds if the proj: fields + are not used at all, please keep this in mind.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n }\n ]\n },\n + \ {\n \"$comment\": \"This is the schema for STAC Collections.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Collection\"\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"proj:epsg\":{\n \"title\":\"EPSG + code\",\n \"type\":[\n \"integer\",\n \"null\"\n + \ ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.5/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '535' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4369' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:36 GMT + ETag: + - '"63e6651b-1111"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - a708d7639f018965af918e499b27bfcb55545fbf + X-GitHub-Request-Id: + - 303E:20A2:70F70E:9F20FD:65149A8D + X-Served-By: + - cache-lga21979-LGA + X-Timer: + - S1695849636.487564,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:21:41 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - proj.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://proj.org/schemas/v0.5/projjson.schema.json + response: + body: + string: '' + headers: + Age: + - '506' + CDN-Cache-Control: + - public + CF-Cache-Status: + - HIT + CF-Ray: + - 80d6caa4cbc60fa3-EWR + Cache-Control: + - max-age=1200 + Connection: + - close + Content-Language: + - en + Content-Length: + - '0' + Content-Type: + - text/html; charset=utf-8 + Cross-Origin-Opener-Policy: + - same-origin + Date: + - Wed, 27 Sep 2023 21:20:36 GMT + Location: + - https://proj.org/en/9.3/schemas/v0.5/projjson.schema.json + Referrer-Policy: + - no-referrer-when-downgrade + Server: + - cloudflare + Vary: + - Accept-Language, Cookie, Accept-Encoding + X-Backend: + - web-i-00190b17db4987e5f + X-Content-Type-Options: + - nosniff + X-RTD-Domain: + - proj.org + X-RTD-Project: + - osgeo-proj + X-RTD-Project-Method: + - custom_domain + X-RTD-Redirect: + - user + X-RTD-Version-Method: + - path + X-Served: + - Proxito-404 + alt-svc: + - h3=":443"; ma=86400 + status: + code: 302 + message: Found +- request: + body: null + headers: + Connection: + - close + Host: + - proj.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://proj.org/en/9.3/schemas/v0.5/projjson.schema.json + response: + body: + string: "{\n \"$id\": \"https://proj.org/schemas/v0.5/projjson.schema.json\",\n + \ \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"description\": + \"Schema for PROJJSON (v0.5)\",\n \"$comment\": \"This file exists both in + data/ and in schemas/vXXX/. Keep both in sync. And if changing the value of + $id, change PROJJSON_DEFAULT_VERSION accordingly in io.cpp\",\n\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/crs\" },\n { \"$ref\": \"#/definitions/datum\" + },\n { \"$ref\": \"#/definitions/datum_ensemble\" },\n { \"$ref\": \"#/definitions/ellipsoid\" + },\n { \"$ref\": \"#/definitions/prime_meridian\" },\n { \"$ref\": \"#/definitions/single_operation\" + },\n { \"$ref\": \"#/definitions/concatenated_operation\" }\n ],\n\n \"definitions\": + {\n\n \"abridged_transformation\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"AbridgedTransformation\"] },\n \"name\": { + \"type\": \"string\" },\n \"method\": { \"$ref\": \"#/definitions/method\" + },\n \"parameters\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/parameter_value\" }\n },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"method\", \"parameters\" ],\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"axis\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"Axis\"] },\n \"name\": { \"type\": \"string\" },\n \"abbreviation\": + { \"type\": \"string\" },\n \"direction\": { \"type\": \"string\",\n + \ \"enum\": [ \"north\",\n \"northNorthEast\",\n + \ \"northEast\",\n \"eastNorthEast\",\n + \ \"east\",\n \"eastSouthEast\",\n + \ \"southEast\",\n \"southSouthEast\",\n + \ \"south\",\n \"southSouthWest\",\n + \ \"southWest\",\n \"westSouthWest\",\n + \ \"west\",\n \"westNorthWest\",\n + \ \"northWest\",\n \"northNorthWest\",\n + \ \"up\",\n \"down\",\n + \ \"geocentricX\",\n \"geocentricY\",\n + \ \"geocentricZ\",\n \"columnPositive\",\n + \ \"columnNegative\",\n \"rowPositive\",\n + \ \"rowNegative\",\n \"displayRight\",\n + \ \"displayLeft\",\n \"displayUp\",\n + \ \"displayDown\",\n \"forward\",\n + \ \"aft\",\n \"port\",\n + \ \"starboard\",\n \"clockwise\",\n + \ \"counterClockwise\",\n \"towards\",\n + \ \"awayFrom\",\n \"future\",\n + \ \"past\",\n \"unspecified\" + ] },\n \"meridian\": { \"$ref\": \"#/definitions/meridian\" },\n \"unit\": + { \"$ref\": \"#/definitions/unit\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\", \"abbreviation\", \"direction\" ],\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n },\n\n \"bbox\": {\n \"type\": \"object\",\n \"properties\": + {\n \"east_longitude\": { \"type\": \"number\" },\n \"west_longitude\": + { \"type\": \"number\" },\n \"south_latitude\": { \"type\": \"number\" + },\n \"north_latitude\": { \"type\": \"number\" }\n },\n \"required\" + : [ \"east_longitude\", \"west_longitude\",\n \"south_latitude\", + \"north_latitude\" ],\n \"additionalProperties\": false\n },\n\n \"bound_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"$schema\" : { \"type\": \"string\" + },\n \"type\": { \"type\": \"string\", \"enum\": [\"BoundCRS\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"source_crs\": { \"$ref\": + \"#/definitions/crs\" },\n \"target_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"transformation\": { \"$ref\": \"#/definitions/abridged_transformation\" + },\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"source_crs\", \"target_crs\", \"transformation\" ],\n + \ \"additionalProperties\": false\n },\n\n \"compound_crs\": {\n + \ \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"CompoundCRS\"] },\n \"name\": { \"type\": \"string\" },\n \"components\": + \ {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/crs\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"components\" ],\n + \ \"additionalProperties\": false\n },\n\n \"concatenated_operation\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"ConcatenatedOperation\"] },\n \"name\": { \"type\": \"string\" },\n + \ \"source_crs\": { \"$ref\": \"#/definitions/crs\" },\n \"target_crs\": + { \"$ref\": \"#/definitions/crs\" },\n \"steps\": {\n \"type\": + \"array\",\n \"items\": { \"$ref\": \"#/definitions/single_operation\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"source_crs\", \"target_crs\", + \"steps\" ],\n \"additionalProperties\": false\n },\n\n \"conversion\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"Conversion\"] },\n \"name\": { \"type\": \"string\" },\n \"method\": + { \"$ref\": \"#/definitions/method\" },\n \"parameters\": {\n \"type\": + \"array\",\n \"items\": { \"$ref\": \"#/definitions/parameter_value\" + }\n },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\", + \"method\" ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"coordinate_system\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"CoordinateSystem\"] },\n \"name\": { \"type\": \"string\" },\n \"subtype\": + { \"type\": \"string\",\n \"enum\": [\"Cartesian\",\n + \ \"spherical\",\n \"ellipsoidal\",\n + \ \"vertical\",\n \"ordinal\",\n + \ \"parametric\",\n \"TemporalDateTime\",\n + \ \"TemporalCount\",\n \"TemporalMeasure\"] + \ },\n \"axis\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/axis\" }\n },\n \"id\": { \"$ref\": + \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"subtype\", \"axis\" ],\n \"allOf\": + [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"crs\": {\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/bound_crs\" },\n { \"$ref\": + \"#/definitions/compound_crs\" },\n { \"$ref\": \"#/definitions/derived_engineering_crs\" + },\n { \"$ref\": \"#/definitions/derived_geodetic_crs\" },\n { + \"$ref\": \"#/definitions/derived_parametric_crs\" },\n { \"$ref\": + \"#/definitions/derived_projected_crs\" },\n { \"$ref\": \"#/definitions/derived_temporal_crs\" + },\n { \"$ref\": \"#/definitions/derived_vertical_crs\" },\n { + \"$ref\": \"#/definitions/engineering_crs\" },\n { \"$ref\": \"#/definitions/geodetic_crs\" + },\n { \"$ref\": \"#/definitions/parametric_crs\" },\n { \"$ref\": + \"#/definitions/projected_crs\" },\n { \"$ref\": \"#/definitions/temporal_crs\" + },\n { \"$ref\": \"#/definitions/vertical_crs\" }\n ]\n },\n\n + \ \"datum\": {\n \"oneOf\": [\n { \"$ref\": \"#/definitions/geodetic_reference_frame\" + },\n { \"$ref\": \"#/definitions/vertical_reference_frame\" },\n { + \"$ref\": \"#/definitions/dynamic_geodetic_reference_frame\" },\n { + \"$ref\": \"#/definitions/dynamic_vertical_reference_frame\" },\n { + \"$ref\": \"#/definitions/temporal_datum\" },\n { \"$ref\": \"#/definitions/parametric_datum\" + },\n { \"$ref\": \"#/definitions/engineering_datum\" }\n ]\n },\n\n + \ \"datum_ensemble\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"DatumEnsemble\"] },\n \"name\": { \"type\": + \"string\" },\n \"members\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": { \"type\": \"string\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": + \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\" ],\n \"allOf\": [\n { \"$ref\": + \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n }\n },\n \"ellipsoid\": { \"$ref\": \"#/definitions/ellipsoid\" + },\n \"accuracy\": { \"type\": \"string\" },\n \"id\": { \"$ref\": + \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"members\", \"accuracy\" ],\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"deformation_model\": + {\n \"description\": \"Association to a PointMotionOperation\",\n \"type\": + \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" }\n },\n \"required\" + : [ \"name\" ],\n \"additionalProperties\": false\n },\n\n \"derived_engineering_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\",\n + \ \"enum\": [\"DerivedEngineeringCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": \"#/definitions/engineering_crs\" + },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" },\n + \ \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_geodetic_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedGeodeticCRS\",\n + \ \"DerivedGeographicCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": \"#/definitions/geodetic_crs\" + },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" },\n + \ \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_parametric_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedParametricCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/parametric_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_projected_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedProjectedCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/projected_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_temporal_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedTemporalCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/temporal_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_vertical_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedVerticalCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/vertical_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"dynamic_geodetic_reference_frame\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"DynamicGeodeticReferenceFrame\"] + },\n \"name\": {},\n \"anchor\": {},\n \"ellipsoid\": + {},\n \"prime_meridian\": {},\n \"frame_reference_epoch\": { + \"type\": \"number\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"ellipsoid\", \"frame_reference_epoch\" ],\n \"additionalProperties\": + false\n },\n\n \"dynamic_vertical_reference_frame\": {\n \"type\": + \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"DynamicVerticalReferenceFrame\"] },\n \"name\": {},\n \"anchor\": + {},\n \"frame_reference_epoch\": { \"type\": \"number\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"frame_reference_epoch\" ],\n \"additionalProperties\": + false\n },\n\n \"ellipsoid\": {\n \"type\": \"object\",\n \"oneOf\":[\n + \ {\n \"properties\": {\n \"$schema\" : { \"type\": + \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] + },\n \"name\": { \"type\": \"string\" },\n \"semi_major_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"semi_minor_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"semi_major_axis\", + \"semi_minor_axis\" ],\n \"additionalProperties\": false\n },\n + \ {\n \"properties\": {\n \"$schema\" : { \"type\": + \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] + },\n \"name\": { \"type\": \"string\" },\n \"semi_major_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"inverse_flattening\": + { \"type\": \"number\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n + \ \"required\" : [ \"name\", \"semi_major_axis\", \"inverse_flattening\" + ],\n \"additionalProperties\": false\n },\n {\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": + { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] },\n \"name\": + { \"type\": \"string\" },\n \"radius\": { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\", \"radius\" ],\n \"additionalProperties\": false\n }\n + \ ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ]\n },\n\n \"engineering_crs\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"EngineeringCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"datum\": { \"$ref\": + \"#/definitions/engineering_datum\" },\n \"coordinate_system\": { \"$ref\": + \"#/definitions/coordinate_system\" },\n \"$schema\" : {},\n \"scope\": + {},\n \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"datum\" ],\n \"additionalProperties\": false\n },\n\n \"engineering_datum\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"EngineeringDatum\"] },\n \"name\": { \"type\": \"string\" },\n \"anchor\": + { \"type\": \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\" + ],\n \"additionalProperties\": false\n },\n\n \"geodetic_crs\": + {\n \"type\": \"object\",\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"GeodeticCRS\", \"GeographicCRS\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"datum\": {\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/geodetic_reference_frame\" + },\n { \"$ref\": \"#/definitions/dynamic_geodetic_reference_frame\" + }\n ]\n },\n \"datum_ensemble\": { \"$ref\": \"#/definitions/datum_ensemble\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"deformation_models\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/deformation_model\" }\n },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\" ],\n \"description\": \"One and only + one of datum and datum_ensemble must be provided\",\n \"allOf\": [\n + \ { \"$ref\": \"#/definitions/object_usage\" },\n { \"$ref\": + \"#/definitions/one_and_only_one_of_datum_or_datum_ensemble\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"geodetic_reference_frame\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"GeodeticReferenceFrame\"] },\n \"name\": { \"type\": \"string\" + },\n \"anchor\": { \"type\": \"string\" },\n \"ellipsoid\": + { \"$ref\": \"#/definitions/ellipsoid\" },\n \"prime_meridian\": { + \"$ref\": \"#/definitions/prime_meridian\" },\n \"$schema\" : {},\n + \ \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"ellipsoid\" ],\n \"additionalProperties\": false\n },\n\n \"geoid_model\": + {\n \"type\": \"object\",\n \"properties\": {\n \"name\": + { \"type\": \"string\" },\n \"interpolation_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" }\n },\n \"required\" + : [ \"name\" ],\n \"additionalProperties\": false\n },\n\n \"id\": + {\n \"type\": \"object\",\n \"properties\": {\n \"authority\": + { \"type\": \"string\" },\n \"code\": {\n \"oneOf\": [ { \"type\": + \"string\" }, { \"type\": \"integer\" } ]\n },\n \"version\": + {\n \"oneOf\": [ { \"type\": \"string\" }, { \"type\": \"number\" + } ]\n },\n \"authority_citation\": { \"type\": \"string\" },\n + \ \"uri\": { \"type\": \"string\" }\n },\n \"required\" : + [ \"authority\", \"code\" ],\n \"additionalProperties\": false\n },\n\n + \ \"ids\": {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/id\" + }\n },\n\n \"method\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"OperationMethod\"]},\n \"name\": { \"type\": + \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\" + ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"id_ids_mutually_exclusive\": + {\n \"not\": {\n \"type\": \"object\",\n \"required\": + [ \"id\", \"ids\" ]\n }\n },\n\n \"one_and_only_one_of_datum_or_datum_ensemble\": + {\n \"allOf\": [\n {\n \"not\": {\n \"type\": + \"object\",\n \"required\": [ \"datum\", \"datum_ensemble\" + ]\n }\n },\n {\n \"oneOf\": [\n { + \"type\": \"object\", \"required\": [\"datum\"] },\n { \"type\": + \"object\", \"required\": [\"datum_ensemble\"] }\n ]\n }\n + \ ]\n },\n\n \"meridian\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"Meridian\"] },\n \"longitude\": { \"$ref\": + \"#/definitions/value_in_degree_or_value_and_unit\" },\n \"id\": { + \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"longitude\" ],\n \"allOf\": [\n + \ { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"object_usage\": {\n + \ \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"scope\": + { \"type\": \"string\" },\n \"area\": { \"type\": \"string\" },\n + \ \"bbox\": { \"$ref\": \"#/definitions/bbox\" },\n \"vertical_extent\": + { \"$ref\": \"#/definitions/vertical_extent\" },\n \"temporal_extent\": + { \"$ref\": \"#/definitions/temporal_extent\" },\n \"remarks\": + { \"type\": \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"usages\": + { \"$ref\": \"#/definitions/usages\" },\n \"remarks\": { \"type\": + \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ]\n }\n + \ ]\n },\n\n \"parameter_value\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"$schema\" : { \"type\": \"string\" },\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"ParameterValue\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"value\": {\n \"oneOf\": + [\n { \"type\": \"string\" },\n { \"type\": \"number\" + }\n ]\n },\n \"unit\": { \"$ref\": \"#/definitions/unit\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\", + \"value\" ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"parametric_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"ParametricCRS\"] },\n \"name\": { \"type\": \"string\" },\n \"datum\": + { \"$ref\": \"#/definitions/parametric_datum\" },\n \"coordinate_system\": + { \"$ref\": \"#/definitions/coordinate_system\" },\n \"$schema\" : + {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"datum\" ],\n \"additionalProperties\": + false\n },\n\n \"parametric_datum\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"ParametricDatum\"] + },\n \"name\": { \"type\": \"string\" },\n \"anchor\": { \"type\": + \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\" ],\n \"additionalProperties\": + false\n },\n\n \"point_motion_operation\": {\n \"$comment\": \"Not + implemented in PROJ (at least as of PROJ 9.1)\",\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"PointMotionOperation\"] + },\n \"name\": { \"type\": \"string\" },\n \"source_crs\": { + \"$ref\": \"#/definitions/crs\" },\n \"method\": { \"$ref\": \"#/definitions/method\" + },\n \"parameters\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/parameter_value\" }\n },\n \"accuracy\": + { \"type\": \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"source_crs\", \"method\", \"parameters\" ],\n \"additionalProperties\": + false\n },\n\n \"prime_meridian\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"$schema\" : { \"type\": \"string\" },\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"PrimeMeridian\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"longitude\": { \"$ref\": + \"#/definitions/value_in_degree_or_value_and_unit\" },\n \"id\": { + \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\" ],\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n },\n\n \"single_operation\": {\n \"oneOf\": [\n { + \"$ref\": \"#/definitions/conversion\" },\n { \"$ref\": \"#/definitions/transformation\" + },\n { \"$ref\": \"#/definitions/point_motion_operation\" }\n ]\n + \ },\n\n \"projected_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"ProjectedCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/geodetic_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"temporal_crs\": {\n \"type\": \"object\",\n \"allOf\": [{ + \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"TemporalCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"datum\": { \"$ref\": \"#/definitions/temporal_datum\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"datum\" ],\n \"additionalProperties\": + false\n },\n\n \"temporal_datum\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"TemporalDatum\"] + },\n \"name\": { \"type\": \"string\" },\n \"calendar\": { \"type\": + \"string\" },\n \"time_origin\": { \"type\": \"string\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"calendar\" ],\n \"additionalProperties\": + false\n },\n\n \"temporal_extent\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"start\": { \"type\": \"string\" },\n \"end\": + { \"type\": \"string\" }\n },\n \"required\" : [ \"start\", \"end\" + ],\n \"additionalProperties\": false\n },\n\n \"transformation\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"Transformation\"] },\n \"name\": { \"type\": \"string\" },\n \"source_crs\": + { \"$ref\": \"#/definitions/crs\" },\n \"target_crs\": { \"$ref\": + \"#/definitions/crs\" },\n \"interpolation_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"method\": { \"$ref\": \"#/definitions/method\" },\n \"parameters\": + {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/parameter_value\" + }\n },\n \"accuracy\": { \"type\": \"string\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"source_crs\", \"target_crs\", \"method\", + \"parameters\" ],\n \"additionalProperties\": false\n },\n\n \"unit\": + {\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"enum\": + [\"metre\", \"degree\", \"unity\"]\n },\n {\n \"type\": \"object\",\n + \ \"properties\": {\n \"type\": { \"type\": \"string\",\n \"enum\": + [\"LinearUnit\", \"AngularUnit\", \"ScaleUnit\",\n \"TimeUnit\", + \"ParametricUnit\", \"Unit\"] },\n \"name\": { \"type\": \"string\" + },\n \"conversion_factor\": { \"type\": \"number\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"type\", \"name\" ],\n \"allOf\": + [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n + \ ],\n \"additionalProperties\": false\n }\n ]\n + \ },\n\n \"usages\": {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": {\n \"scope\": + { \"type\": \"string\" },\n \"area\": { \"type\": \"string\" },\n + \ \"bbox\": { \"$ref\": \"#/definitions/bbox\" },\n \"vertical_extent\": + { \"$ref\": \"#/definitions/vertical_extent\" },\n \"temporal_extent\": + { \"$ref\": \"#/definitions/temporal_extent\" }\n },\n \"additionalProperties\": + false\n }\n },\n\n \"value_and_unit\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"value\": { \"type\": \"number\" },\n \"unit\": + { \"$ref\": \"#/definitions/unit\" }\n },\n \"required\" : [ \"value\", + \"unit\" ],\n \"additionalProperties\": false\n },\n\n \"value_in_degree_or_value_and_unit\": + {\n \"oneOf\": [\n { \"type\": \"number\" },\n { \"$ref\": + \"#/definitions/value_and_unit\" }\n ]\n },\n\n \"value_in_metre_or_value_and_unit\": + {\n \"oneOf\": [\n { \"type\": \"number\" },\n { \"$ref\": + \"#/definitions/value_and_unit\" }\n ]\n },\n\n \"vertical_crs\": + {\n \"type\": \"object\",\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"VerticalCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"datum\": {\n \"oneOf\": [\n + \ { \"$ref\": \"#/definitions/vertical_reference_frame\" },\n + \ { \"$ref\": \"#/definitions/dynamic_vertical_reference_frame\" + }\n ]\n },\n \"datum_ensemble\": { \"$ref\": \"#/definitions/datum_ensemble\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"geoid_model\": { \"$ref\": \"#/definitions/geoid_model\" },\n + \ \"geoid_models\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/geoid_model\" }\n },\n \"deformation_models\": + {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/deformation_model\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\"],\n \"description\": + \"One and only one of datum and datum_ensemble must be provided\",\n \"allOf\": + [\n { \"$ref\": \"#/definitions/object_usage\" },\n { \"$ref\": + \"#/definitions/one_and_only_one_of_datum_or_datum_ensemble\" },\n {\n + \ \"not\": {\n \"type\": \"object\",\n \"required\": + [ \"geoid_model\", \"geoid_models\" ]\n }\n }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"vertical_extent\": + {\n \"type\": \"object\",\n \"properties\": {\n \"minimum\": + { \"type\": \"number\" },\n \"maximum\": { \"type\": \"number\" },\n + \ \"unit\": { \"$ref\": \"#/definitions/unit\" }\n },\n \"required\" + : [ \"minimum\", \"maximum\" ],\n \"additionalProperties\": false\n },\n\n + \ \"vertical_reference_frame\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"VerticalReferenceFrame\"] + },\n \"name\": { \"type\": \"string\" },\n \"anchor\": { \"type\": + \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\" ],\n \"additionalProperties\": + false\n }\n\n }\n}\n" + headers: + Access-Control-Allow-Methods: + - HEAD, OPTIONS, GET + Access-Control-Allow-Origin: + - '*' + Age: + - '506' + CDN-Cache-Control: + - public + CF-Cache-Status: + - HIT + CF-Ray: + - 80d6caa59ba118c4-EWR + Cache-Control: + - max-age=1200 + Connection: + - close + Content-Type: + - application/json + Date: + - Wed, 27 Sep 2023 21:20:36 GMT + ETag: + - W/"567e3992b5fd3188af907a4cdc4781b3" + Last-Modified: + - Sun, 03 Sep 2023 09:10:52 GMT + Referrer-Policy: + - no-referrer-when-downgrade + Server: + - cloudflare + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + X-Backend: + - web-i-04a0936e538e90895 + X-Content-Type-Options: + - nosniff + X-RTD-Domain: + - proj.org + X-RTD-Path: + - /proxito/html/osgeo-proj/9.3/schemas/v0.5/projjson.schema.json + X-RTD-Project: + - osgeo-proj + X-RTD-Project-Method: + - custom_domain + X-RTD-Version: + - '9.3' + X-RTD-Version-Method: + - path + X-Served: + - Nginx-Proxito-Sendfile + alt-svc: + - h3=":443"; ma=86400 + x-amz-id-2: + - UBlptQ6CoU1gOcZjt2RSY1lr3wEiR3bA6BF4Ck7ffEb2Gvy2wrxxhJ3mNAJRYDJ1sJ9j4auUgjI= + x-amz-meta-mtime: + - '1693732240.238196845' + x-amz-request-id: + - 7M5G3K3ZTHPYERHZ + x-amz-server-side-encryption: + - AES256 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_projection/ProjectionTest.test_epsg.yaml b/tests/extensions/cassettes/test_projection/ProjectionTest.test_epsg.yaml new file mode 100644 index 000000000..48410da49 --- /dev/null +++ b/tests/extensions/cassettes/test_projection/ProjectionTest.test_epsg.yaml @@ -0,0 +1,898 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '535' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:37 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - e0fc8ae3081bf639c007a0f40dd3f0ab4d701e1e + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21937-LGA + X-Timer: + - S1695849637.042964,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"$comment\": \"This schema succeeds if the proj: fields + are not used at all, please keep this in mind.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n }\n ]\n },\n + \ {\n \"$comment\": \"This is the schema for STAC Collections.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Collection\"\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"proj:epsg\":{\n \"title\":\"EPSG + code\",\n \"type\":[\n \"integer\",\n \"null\"\n + \ ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.5/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '535' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4369' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:37 GMT + ETag: + - '"63e6651b-1111"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 5c7c90c644696404ddaafb3393acc82e5142c517 + X-GitHub-Request-Id: + - 303E:20A2:70F70E:9F20FD:65149A8D + X-Served-By: + - cache-lga21982-LGA + X-Timer: + - S1695849637.160471,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:21:41 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - proj.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://proj.org/schemas/v0.5/projjson.schema.json + response: + body: + string: '' + headers: + Age: + - '507' + CDN-Cache-Control: + - public + CF-Cache-Status: + - HIT + CF-Ray: + - 80d6caa8f81c192c-EWR + Cache-Control: + - max-age=1200 + Connection: + - close + Content-Language: + - en + Content-Length: + - '0' + Content-Type: + - text/html; charset=utf-8 + Cross-Origin-Opener-Policy: + - same-origin + Date: + - Wed, 27 Sep 2023 21:20:37 GMT + Location: + - https://proj.org/en/9.3/schemas/v0.5/projjson.schema.json + Referrer-Policy: + - no-referrer-when-downgrade + Server: + - cloudflare + Vary: + - Accept-Language, Cookie, Accept-Encoding + X-Backend: + - web-i-00190b17db4987e5f + X-Content-Type-Options: + - nosniff + X-RTD-Domain: + - proj.org + X-RTD-Project: + - osgeo-proj + X-RTD-Project-Method: + - custom_domain + X-RTD-Redirect: + - user + X-RTD-Version-Method: + - path + X-Served: + - Proxito-404 + alt-svc: + - h3=":443"; ma=86400 + status: + code: 302 + message: Found +- request: + body: null + headers: + Connection: + - close + Host: + - proj.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://proj.org/en/9.3/schemas/v0.5/projjson.schema.json + response: + body: + string: "{\n \"$id\": \"https://proj.org/schemas/v0.5/projjson.schema.json\",\n + \ \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"description\": + \"Schema for PROJJSON (v0.5)\",\n \"$comment\": \"This file exists both in + data/ and in schemas/vXXX/. Keep both in sync. And if changing the value of + $id, change PROJJSON_DEFAULT_VERSION accordingly in io.cpp\",\n\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/crs\" },\n { \"$ref\": \"#/definitions/datum\" + },\n { \"$ref\": \"#/definitions/datum_ensemble\" },\n { \"$ref\": \"#/definitions/ellipsoid\" + },\n { \"$ref\": \"#/definitions/prime_meridian\" },\n { \"$ref\": \"#/definitions/single_operation\" + },\n { \"$ref\": \"#/definitions/concatenated_operation\" }\n ],\n\n \"definitions\": + {\n\n \"abridged_transformation\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"AbridgedTransformation\"] },\n \"name\": { + \"type\": \"string\" },\n \"method\": { \"$ref\": \"#/definitions/method\" + },\n \"parameters\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/parameter_value\" }\n },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"method\", \"parameters\" ],\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"axis\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"Axis\"] },\n \"name\": { \"type\": \"string\" },\n \"abbreviation\": + { \"type\": \"string\" },\n \"direction\": { \"type\": \"string\",\n + \ \"enum\": [ \"north\",\n \"northNorthEast\",\n + \ \"northEast\",\n \"eastNorthEast\",\n + \ \"east\",\n \"eastSouthEast\",\n + \ \"southEast\",\n \"southSouthEast\",\n + \ \"south\",\n \"southSouthWest\",\n + \ \"southWest\",\n \"westSouthWest\",\n + \ \"west\",\n \"westNorthWest\",\n + \ \"northWest\",\n \"northNorthWest\",\n + \ \"up\",\n \"down\",\n + \ \"geocentricX\",\n \"geocentricY\",\n + \ \"geocentricZ\",\n \"columnPositive\",\n + \ \"columnNegative\",\n \"rowPositive\",\n + \ \"rowNegative\",\n \"displayRight\",\n + \ \"displayLeft\",\n \"displayUp\",\n + \ \"displayDown\",\n \"forward\",\n + \ \"aft\",\n \"port\",\n + \ \"starboard\",\n \"clockwise\",\n + \ \"counterClockwise\",\n \"towards\",\n + \ \"awayFrom\",\n \"future\",\n + \ \"past\",\n \"unspecified\" + ] },\n \"meridian\": { \"$ref\": \"#/definitions/meridian\" },\n \"unit\": + { \"$ref\": \"#/definitions/unit\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\", \"abbreviation\", \"direction\" ],\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n },\n\n \"bbox\": {\n \"type\": \"object\",\n \"properties\": + {\n \"east_longitude\": { \"type\": \"number\" },\n \"west_longitude\": + { \"type\": \"number\" },\n \"south_latitude\": { \"type\": \"number\" + },\n \"north_latitude\": { \"type\": \"number\" }\n },\n \"required\" + : [ \"east_longitude\", \"west_longitude\",\n \"south_latitude\", + \"north_latitude\" ],\n \"additionalProperties\": false\n },\n\n \"bound_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"$schema\" : { \"type\": \"string\" + },\n \"type\": { \"type\": \"string\", \"enum\": [\"BoundCRS\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"source_crs\": { \"$ref\": + \"#/definitions/crs\" },\n \"target_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"transformation\": { \"$ref\": \"#/definitions/abridged_transformation\" + },\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"source_crs\", \"target_crs\", \"transformation\" ],\n + \ \"additionalProperties\": false\n },\n\n \"compound_crs\": {\n + \ \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"CompoundCRS\"] },\n \"name\": { \"type\": \"string\" },\n \"components\": + \ {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/crs\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"components\" ],\n + \ \"additionalProperties\": false\n },\n\n \"concatenated_operation\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"ConcatenatedOperation\"] },\n \"name\": { \"type\": \"string\" },\n + \ \"source_crs\": { \"$ref\": \"#/definitions/crs\" },\n \"target_crs\": + { \"$ref\": \"#/definitions/crs\" },\n \"steps\": {\n \"type\": + \"array\",\n \"items\": { \"$ref\": \"#/definitions/single_operation\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"source_crs\", \"target_crs\", + \"steps\" ],\n \"additionalProperties\": false\n },\n\n \"conversion\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"Conversion\"] },\n \"name\": { \"type\": \"string\" },\n \"method\": + { \"$ref\": \"#/definitions/method\" },\n \"parameters\": {\n \"type\": + \"array\",\n \"items\": { \"$ref\": \"#/definitions/parameter_value\" + }\n },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\", + \"method\" ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"coordinate_system\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"CoordinateSystem\"] },\n \"name\": { \"type\": \"string\" },\n \"subtype\": + { \"type\": \"string\",\n \"enum\": [\"Cartesian\",\n + \ \"spherical\",\n \"ellipsoidal\",\n + \ \"vertical\",\n \"ordinal\",\n + \ \"parametric\",\n \"TemporalDateTime\",\n + \ \"TemporalCount\",\n \"TemporalMeasure\"] + \ },\n \"axis\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/axis\" }\n },\n \"id\": { \"$ref\": + \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"subtype\", \"axis\" ],\n \"allOf\": + [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"crs\": {\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/bound_crs\" },\n { \"$ref\": + \"#/definitions/compound_crs\" },\n { \"$ref\": \"#/definitions/derived_engineering_crs\" + },\n { \"$ref\": \"#/definitions/derived_geodetic_crs\" },\n { + \"$ref\": \"#/definitions/derived_parametric_crs\" },\n { \"$ref\": + \"#/definitions/derived_projected_crs\" },\n { \"$ref\": \"#/definitions/derived_temporal_crs\" + },\n { \"$ref\": \"#/definitions/derived_vertical_crs\" },\n { + \"$ref\": \"#/definitions/engineering_crs\" },\n { \"$ref\": \"#/definitions/geodetic_crs\" + },\n { \"$ref\": \"#/definitions/parametric_crs\" },\n { \"$ref\": + \"#/definitions/projected_crs\" },\n { \"$ref\": \"#/definitions/temporal_crs\" + },\n { \"$ref\": \"#/definitions/vertical_crs\" }\n ]\n },\n\n + \ \"datum\": {\n \"oneOf\": [\n { \"$ref\": \"#/definitions/geodetic_reference_frame\" + },\n { \"$ref\": \"#/definitions/vertical_reference_frame\" },\n { + \"$ref\": \"#/definitions/dynamic_geodetic_reference_frame\" },\n { + \"$ref\": \"#/definitions/dynamic_vertical_reference_frame\" },\n { + \"$ref\": \"#/definitions/temporal_datum\" },\n { \"$ref\": \"#/definitions/parametric_datum\" + },\n { \"$ref\": \"#/definitions/engineering_datum\" }\n ]\n },\n\n + \ \"datum_ensemble\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"DatumEnsemble\"] },\n \"name\": { \"type\": + \"string\" },\n \"members\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": { \"type\": \"string\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": + \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\" ],\n \"allOf\": [\n { \"$ref\": + \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n }\n },\n \"ellipsoid\": { \"$ref\": \"#/definitions/ellipsoid\" + },\n \"accuracy\": { \"type\": \"string\" },\n \"id\": { \"$ref\": + \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"members\", \"accuracy\" ],\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"deformation_model\": + {\n \"description\": \"Association to a PointMotionOperation\",\n \"type\": + \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" }\n },\n \"required\" + : [ \"name\" ],\n \"additionalProperties\": false\n },\n\n \"derived_engineering_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\",\n + \ \"enum\": [\"DerivedEngineeringCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": \"#/definitions/engineering_crs\" + },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" },\n + \ \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_geodetic_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedGeodeticCRS\",\n + \ \"DerivedGeographicCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": \"#/definitions/geodetic_crs\" + },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" },\n + \ \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_parametric_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedParametricCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/parametric_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_projected_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedProjectedCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/projected_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_temporal_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedTemporalCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/temporal_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_vertical_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedVerticalCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/vertical_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"dynamic_geodetic_reference_frame\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"DynamicGeodeticReferenceFrame\"] + },\n \"name\": {},\n \"anchor\": {},\n \"ellipsoid\": + {},\n \"prime_meridian\": {},\n \"frame_reference_epoch\": { + \"type\": \"number\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"ellipsoid\", \"frame_reference_epoch\" ],\n \"additionalProperties\": + false\n },\n\n \"dynamic_vertical_reference_frame\": {\n \"type\": + \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"DynamicVerticalReferenceFrame\"] },\n \"name\": {},\n \"anchor\": + {},\n \"frame_reference_epoch\": { \"type\": \"number\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"frame_reference_epoch\" ],\n \"additionalProperties\": + false\n },\n\n \"ellipsoid\": {\n \"type\": \"object\",\n \"oneOf\":[\n + \ {\n \"properties\": {\n \"$schema\" : { \"type\": + \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] + },\n \"name\": { \"type\": \"string\" },\n \"semi_major_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"semi_minor_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"semi_major_axis\", + \"semi_minor_axis\" ],\n \"additionalProperties\": false\n },\n + \ {\n \"properties\": {\n \"$schema\" : { \"type\": + \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] + },\n \"name\": { \"type\": \"string\" },\n \"semi_major_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"inverse_flattening\": + { \"type\": \"number\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n + \ \"required\" : [ \"name\", \"semi_major_axis\", \"inverse_flattening\" + ],\n \"additionalProperties\": false\n },\n {\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": + { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] },\n \"name\": + { \"type\": \"string\" },\n \"radius\": { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\", \"radius\" ],\n \"additionalProperties\": false\n }\n + \ ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ]\n },\n\n \"engineering_crs\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"EngineeringCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"datum\": { \"$ref\": + \"#/definitions/engineering_datum\" },\n \"coordinate_system\": { \"$ref\": + \"#/definitions/coordinate_system\" },\n \"$schema\" : {},\n \"scope\": + {},\n \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"datum\" ],\n \"additionalProperties\": false\n },\n\n \"engineering_datum\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"EngineeringDatum\"] },\n \"name\": { \"type\": \"string\" },\n \"anchor\": + { \"type\": \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\" + ],\n \"additionalProperties\": false\n },\n\n \"geodetic_crs\": + {\n \"type\": \"object\",\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"GeodeticCRS\", \"GeographicCRS\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"datum\": {\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/geodetic_reference_frame\" + },\n { \"$ref\": \"#/definitions/dynamic_geodetic_reference_frame\" + }\n ]\n },\n \"datum_ensemble\": { \"$ref\": \"#/definitions/datum_ensemble\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"deformation_models\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/deformation_model\" }\n },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\" ],\n \"description\": \"One and only + one of datum and datum_ensemble must be provided\",\n \"allOf\": [\n + \ { \"$ref\": \"#/definitions/object_usage\" },\n { \"$ref\": + \"#/definitions/one_and_only_one_of_datum_or_datum_ensemble\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"geodetic_reference_frame\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"GeodeticReferenceFrame\"] },\n \"name\": { \"type\": \"string\" + },\n \"anchor\": { \"type\": \"string\" },\n \"ellipsoid\": + { \"$ref\": \"#/definitions/ellipsoid\" },\n \"prime_meridian\": { + \"$ref\": \"#/definitions/prime_meridian\" },\n \"$schema\" : {},\n + \ \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"ellipsoid\" ],\n \"additionalProperties\": false\n },\n\n \"geoid_model\": + {\n \"type\": \"object\",\n \"properties\": {\n \"name\": + { \"type\": \"string\" },\n \"interpolation_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" }\n },\n \"required\" + : [ \"name\" ],\n \"additionalProperties\": false\n },\n\n \"id\": + {\n \"type\": \"object\",\n \"properties\": {\n \"authority\": + { \"type\": \"string\" },\n \"code\": {\n \"oneOf\": [ { \"type\": + \"string\" }, { \"type\": \"integer\" } ]\n },\n \"version\": + {\n \"oneOf\": [ { \"type\": \"string\" }, { \"type\": \"number\" + } ]\n },\n \"authority_citation\": { \"type\": \"string\" },\n + \ \"uri\": { \"type\": \"string\" }\n },\n \"required\" : + [ \"authority\", \"code\" ],\n \"additionalProperties\": false\n },\n\n + \ \"ids\": {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/id\" + }\n },\n\n \"method\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"OperationMethod\"]},\n \"name\": { \"type\": + \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\" + ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"id_ids_mutually_exclusive\": + {\n \"not\": {\n \"type\": \"object\",\n \"required\": + [ \"id\", \"ids\" ]\n }\n },\n\n \"one_and_only_one_of_datum_or_datum_ensemble\": + {\n \"allOf\": [\n {\n \"not\": {\n \"type\": + \"object\",\n \"required\": [ \"datum\", \"datum_ensemble\" + ]\n }\n },\n {\n \"oneOf\": [\n { + \"type\": \"object\", \"required\": [\"datum\"] },\n { \"type\": + \"object\", \"required\": [\"datum_ensemble\"] }\n ]\n }\n + \ ]\n },\n\n \"meridian\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"Meridian\"] },\n \"longitude\": { \"$ref\": + \"#/definitions/value_in_degree_or_value_and_unit\" },\n \"id\": { + \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"longitude\" ],\n \"allOf\": [\n + \ { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"object_usage\": {\n + \ \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"scope\": + { \"type\": \"string\" },\n \"area\": { \"type\": \"string\" },\n + \ \"bbox\": { \"$ref\": \"#/definitions/bbox\" },\n \"vertical_extent\": + { \"$ref\": \"#/definitions/vertical_extent\" },\n \"temporal_extent\": + { \"$ref\": \"#/definitions/temporal_extent\" },\n \"remarks\": + { \"type\": \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"usages\": + { \"$ref\": \"#/definitions/usages\" },\n \"remarks\": { \"type\": + \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ]\n }\n + \ ]\n },\n\n \"parameter_value\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"$schema\" : { \"type\": \"string\" },\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"ParameterValue\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"value\": {\n \"oneOf\": + [\n { \"type\": \"string\" },\n { \"type\": \"number\" + }\n ]\n },\n \"unit\": { \"$ref\": \"#/definitions/unit\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\", + \"value\" ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"parametric_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"ParametricCRS\"] },\n \"name\": { \"type\": \"string\" },\n \"datum\": + { \"$ref\": \"#/definitions/parametric_datum\" },\n \"coordinate_system\": + { \"$ref\": \"#/definitions/coordinate_system\" },\n \"$schema\" : + {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"datum\" ],\n \"additionalProperties\": + false\n },\n\n \"parametric_datum\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"ParametricDatum\"] + },\n \"name\": { \"type\": \"string\" },\n \"anchor\": { \"type\": + \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\" ],\n \"additionalProperties\": + false\n },\n\n \"point_motion_operation\": {\n \"$comment\": \"Not + implemented in PROJ (at least as of PROJ 9.1)\",\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"PointMotionOperation\"] + },\n \"name\": { \"type\": \"string\" },\n \"source_crs\": { + \"$ref\": \"#/definitions/crs\" },\n \"method\": { \"$ref\": \"#/definitions/method\" + },\n \"parameters\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/parameter_value\" }\n },\n \"accuracy\": + { \"type\": \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"source_crs\", \"method\", \"parameters\" ],\n \"additionalProperties\": + false\n },\n\n \"prime_meridian\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"$schema\" : { \"type\": \"string\" },\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"PrimeMeridian\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"longitude\": { \"$ref\": + \"#/definitions/value_in_degree_or_value_and_unit\" },\n \"id\": { + \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\" ],\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n },\n\n \"single_operation\": {\n \"oneOf\": [\n { + \"$ref\": \"#/definitions/conversion\" },\n { \"$ref\": \"#/definitions/transformation\" + },\n { \"$ref\": \"#/definitions/point_motion_operation\" }\n ]\n + \ },\n\n \"projected_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"ProjectedCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/geodetic_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"temporal_crs\": {\n \"type\": \"object\",\n \"allOf\": [{ + \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"TemporalCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"datum\": { \"$ref\": \"#/definitions/temporal_datum\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"datum\" ],\n \"additionalProperties\": + false\n },\n\n \"temporal_datum\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"TemporalDatum\"] + },\n \"name\": { \"type\": \"string\" },\n \"calendar\": { \"type\": + \"string\" },\n \"time_origin\": { \"type\": \"string\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"calendar\" ],\n \"additionalProperties\": + false\n },\n\n \"temporal_extent\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"start\": { \"type\": \"string\" },\n \"end\": + { \"type\": \"string\" }\n },\n \"required\" : [ \"start\", \"end\" + ],\n \"additionalProperties\": false\n },\n\n \"transformation\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"Transformation\"] },\n \"name\": { \"type\": \"string\" },\n \"source_crs\": + { \"$ref\": \"#/definitions/crs\" },\n \"target_crs\": { \"$ref\": + \"#/definitions/crs\" },\n \"interpolation_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"method\": { \"$ref\": \"#/definitions/method\" },\n \"parameters\": + {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/parameter_value\" + }\n },\n \"accuracy\": { \"type\": \"string\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"source_crs\", \"target_crs\", \"method\", + \"parameters\" ],\n \"additionalProperties\": false\n },\n\n \"unit\": + {\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"enum\": + [\"metre\", \"degree\", \"unity\"]\n },\n {\n \"type\": \"object\",\n + \ \"properties\": {\n \"type\": { \"type\": \"string\",\n \"enum\": + [\"LinearUnit\", \"AngularUnit\", \"ScaleUnit\",\n \"TimeUnit\", + \"ParametricUnit\", \"Unit\"] },\n \"name\": { \"type\": \"string\" + },\n \"conversion_factor\": { \"type\": \"number\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"type\", \"name\" ],\n \"allOf\": + [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n + \ ],\n \"additionalProperties\": false\n }\n ]\n + \ },\n\n \"usages\": {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": {\n \"scope\": + { \"type\": \"string\" },\n \"area\": { \"type\": \"string\" },\n + \ \"bbox\": { \"$ref\": \"#/definitions/bbox\" },\n \"vertical_extent\": + { \"$ref\": \"#/definitions/vertical_extent\" },\n \"temporal_extent\": + { \"$ref\": \"#/definitions/temporal_extent\" }\n },\n \"additionalProperties\": + false\n }\n },\n\n \"value_and_unit\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"value\": { \"type\": \"number\" },\n \"unit\": + { \"$ref\": \"#/definitions/unit\" }\n },\n \"required\" : [ \"value\", + \"unit\" ],\n \"additionalProperties\": false\n },\n\n \"value_in_degree_or_value_and_unit\": + {\n \"oneOf\": [\n { \"type\": \"number\" },\n { \"$ref\": + \"#/definitions/value_and_unit\" }\n ]\n },\n\n \"value_in_metre_or_value_and_unit\": + {\n \"oneOf\": [\n { \"type\": \"number\" },\n { \"$ref\": + \"#/definitions/value_and_unit\" }\n ]\n },\n\n \"vertical_crs\": + {\n \"type\": \"object\",\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"VerticalCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"datum\": {\n \"oneOf\": [\n + \ { \"$ref\": \"#/definitions/vertical_reference_frame\" },\n + \ { \"$ref\": \"#/definitions/dynamic_vertical_reference_frame\" + }\n ]\n },\n \"datum_ensemble\": { \"$ref\": \"#/definitions/datum_ensemble\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"geoid_model\": { \"$ref\": \"#/definitions/geoid_model\" },\n + \ \"geoid_models\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/geoid_model\" }\n },\n \"deformation_models\": + {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/deformation_model\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\"],\n \"description\": + \"One and only one of datum and datum_ensemble must be provided\",\n \"allOf\": + [\n { \"$ref\": \"#/definitions/object_usage\" },\n { \"$ref\": + \"#/definitions/one_and_only_one_of_datum_or_datum_ensemble\" },\n {\n + \ \"not\": {\n \"type\": \"object\",\n \"required\": + [ \"geoid_model\", \"geoid_models\" ]\n }\n }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"vertical_extent\": + {\n \"type\": \"object\",\n \"properties\": {\n \"minimum\": + { \"type\": \"number\" },\n \"maximum\": { \"type\": \"number\" },\n + \ \"unit\": { \"$ref\": \"#/definitions/unit\" }\n },\n \"required\" + : [ \"minimum\", \"maximum\" ],\n \"additionalProperties\": false\n },\n\n + \ \"vertical_reference_frame\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"VerticalReferenceFrame\"] + },\n \"name\": { \"type\": \"string\" },\n \"anchor\": { \"type\": + \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\" ],\n \"additionalProperties\": + false\n }\n\n }\n}\n" + headers: + Access-Control-Allow-Methods: + - HEAD, OPTIONS, GET + Access-Control-Allow-Origin: + - '*' + Age: + - '507' + CDN-Cache-Control: + - public + CF-Cache-Status: + - HIT + CF-Ray: + - 80d6caa9da60186d-EWR + Cache-Control: + - max-age=1200 + Connection: + - close + Content-Type: + - application/json + Date: + - Wed, 27 Sep 2023 21:20:37 GMT + ETag: + - W/"567e3992b5fd3188af907a4cdc4781b3" + Last-Modified: + - Sun, 03 Sep 2023 09:10:52 GMT + Referrer-Policy: + - no-referrer-when-downgrade + Server: + - cloudflare + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + X-Backend: + - web-i-04a0936e538e90895 + X-Content-Type-Options: + - nosniff + X-RTD-Domain: + - proj.org + X-RTD-Path: + - /proxito/html/osgeo-proj/9.3/schemas/v0.5/projjson.schema.json + X-RTD-Project: + - osgeo-proj + X-RTD-Project-Method: + - custom_domain + X-RTD-Version: + - '9.3' + X-RTD-Version-Method: + - path + X-Served: + - Nginx-Proxito-Sendfile + alt-svc: + - h3=":443"; ma=86400 + x-amz-id-2: + - UBlptQ6CoU1gOcZjt2RSY1lr3wEiR3bA6BF4Ck7ffEb2Gvy2wrxxhJ3mNAJRYDJ1sJ9j4auUgjI= + x-amz-meta-mtime: + - '1693732240.238196845' + x-amz-request-id: + - 7M5G3K3ZTHPYERHZ + x-amz-server-side-encryption: + - AES256 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_projection/ProjectionTest.test_geometry.yaml b/tests/extensions/cassettes/test_projection/ProjectionTest.test_geometry.yaml new file mode 100644 index 000000000..0fec34757 --- /dev/null +++ b/tests/extensions/cassettes/test_projection/ProjectionTest.test_geometry.yaml @@ -0,0 +1,898 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '536' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:37 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - c6066d41fbdeb573f986d61f00d4cd32f53a7383 + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21972-LGA + X-Timer: + - S1695849638.628102,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"$comment\": \"This schema succeeds if the proj: fields + are not used at all, please keep this in mind.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n }\n ]\n },\n + \ {\n \"$comment\": \"This is the schema for STAC Collections.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Collection\"\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"proj:epsg\":{\n \"title\":\"EPSG + code\",\n \"type\":[\n \"integer\",\n \"null\"\n + \ ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.5/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '536' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4369' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:37 GMT + ETag: + - '"63e6651b-1111"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 4444fec6896df549f793208d69eaba6fc33e1e77 + X-GitHub-Request-Id: + - 303E:20A2:70F70E:9F20FD:65149A8D + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849638.733689,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:21:41 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - proj.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://proj.org/schemas/v0.5/projjson.schema.json + response: + body: + string: '' + headers: + Age: + - '507' + CDN-Cache-Control: + - public + CF-Cache-Status: + - HIT + CF-Ray: + - 80d6caac8b180f74-EWR + Cache-Control: + - max-age=1200 + Connection: + - close + Content-Language: + - en + Content-Length: + - '0' + Content-Type: + - text/html; charset=utf-8 + Cross-Origin-Opener-Policy: + - same-origin + Date: + - Wed, 27 Sep 2023 21:20:37 GMT + Location: + - https://proj.org/en/9.3/schemas/v0.5/projjson.schema.json + Referrer-Policy: + - no-referrer-when-downgrade + Server: + - cloudflare + Vary: + - Accept-Language, Cookie, Accept-Encoding + X-Backend: + - web-i-00190b17db4987e5f + X-Content-Type-Options: + - nosniff + X-RTD-Domain: + - proj.org + X-RTD-Project: + - osgeo-proj + X-RTD-Project-Method: + - custom_domain + X-RTD-Redirect: + - user + X-RTD-Version-Method: + - path + X-Served: + - Proxito-404 + alt-svc: + - h3=":443"; ma=86400 + status: + code: 302 + message: Found +- request: + body: null + headers: + Connection: + - close + Host: + - proj.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://proj.org/en/9.3/schemas/v0.5/projjson.schema.json + response: + body: + string: "{\n \"$id\": \"https://proj.org/schemas/v0.5/projjson.schema.json\",\n + \ \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"description\": + \"Schema for PROJJSON (v0.5)\",\n \"$comment\": \"This file exists both in + data/ and in schemas/vXXX/. Keep both in sync. And if changing the value of + $id, change PROJJSON_DEFAULT_VERSION accordingly in io.cpp\",\n\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/crs\" },\n { \"$ref\": \"#/definitions/datum\" + },\n { \"$ref\": \"#/definitions/datum_ensemble\" },\n { \"$ref\": \"#/definitions/ellipsoid\" + },\n { \"$ref\": \"#/definitions/prime_meridian\" },\n { \"$ref\": \"#/definitions/single_operation\" + },\n { \"$ref\": \"#/definitions/concatenated_operation\" }\n ],\n\n \"definitions\": + {\n\n \"abridged_transformation\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"AbridgedTransformation\"] },\n \"name\": { + \"type\": \"string\" },\n \"method\": { \"$ref\": \"#/definitions/method\" + },\n \"parameters\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/parameter_value\" }\n },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"method\", \"parameters\" ],\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"axis\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"Axis\"] },\n \"name\": { \"type\": \"string\" },\n \"abbreviation\": + { \"type\": \"string\" },\n \"direction\": { \"type\": \"string\",\n + \ \"enum\": [ \"north\",\n \"northNorthEast\",\n + \ \"northEast\",\n \"eastNorthEast\",\n + \ \"east\",\n \"eastSouthEast\",\n + \ \"southEast\",\n \"southSouthEast\",\n + \ \"south\",\n \"southSouthWest\",\n + \ \"southWest\",\n \"westSouthWest\",\n + \ \"west\",\n \"westNorthWest\",\n + \ \"northWest\",\n \"northNorthWest\",\n + \ \"up\",\n \"down\",\n + \ \"geocentricX\",\n \"geocentricY\",\n + \ \"geocentricZ\",\n \"columnPositive\",\n + \ \"columnNegative\",\n \"rowPositive\",\n + \ \"rowNegative\",\n \"displayRight\",\n + \ \"displayLeft\",\n \"displayUp\",\n + \ \"displayDown\",\n \"forward\",\n + \ \"aft\",\n \"port\",\n + \ \"starboard\",\n \"clockwise\",\n + \ \"counterClockwise\",\n \"towards\",\n + \ \"awayFrom\",\n \"future\",\n + \ \"past\",\n \"unspecified\" + ] },\n \"meridian\": { \"$ref\": \"#/definitions/meridian\" },\n \"unit\": + { \"$ref\": \"#/definitions/unit\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\", \"abbreviation\", \"direction\" ],\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n },\n\n \"bbox\": {\n \"type\": \"object\",\n \"properties\": + {\n \"east_longitude\": { \"type\": \"number\" },\n \"west_longitude\": + { \"type\": \"number\" },\n \"south_latitude\": { \"type\": \"number\" + },\n \"north_latitude\": { \"type\": \"number\" }\n },\n \"required\" + : [ \"east_longitude\", \"west_longitude\",\n \"south_latitude\", + \"north_latitude\" ],\n \"additionalProperties\": false\n },\n\n \"bound_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"$schema\" : { \"type\": \"string\" + },\n \"type\": { \"type\": \"string\", \"enum\": [\"BoundCRS\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"source_crs\": { \"$ref\": + \"#/definitions/crs\" },\n \"target_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"transformation\": { \"$ref\": \"#/definitions/abridged_transformation\" + },\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"source_crs\", \"target_crs\", \"transformation\" ],\n + \ \"additionalProperties\": false\n },\n\n \"compound_crs\": {\n + \ \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"CompoundCRS\"] },\n \"name\": { \"type\": \"string\" },\n \"components\": + \ {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/crs\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"components\" ],\n + \ \"additionalProperties\": false\n },\n\n \"concatenated_operation\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"ConcatenatedOperation\"] },\n \"name\": { \"type\": \"string\" },\n + \ \"source_crs\": { \"$ref\": \"#/definitions/crs\" },\n \"target_crs\": + { \"$ref\": \"#/definitions/crs\" },\n \"steps\": {\n \"type\": + \"array\",\n \"items\": { \"$ref\": \"#/definitions/single_operation\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"source_crs\", \"target_crs\", + \"steps\" ],\n \"additionalProperties\": false\n },\n\n \"conversion\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"Conversion\"] },\n \"name\": { \"type\": \"string\" },\n \"method\": + { \"$ref\": \"#/definitions/method\" },\n \"parameters\": {\n \"type\": + \"array\",\n \"items\": { \"$ref\": \"#/definitions/parameter_value\" + }\n },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\", + \"method\" ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"coordinate_system\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"CoordinateSystem\"] },\n \"name\": { \"type\": \"string\" },\n \"subtype\": + { \"type\": \"string\",\n \"enum\": [\"Cartesian\",\n + \ \"spherical\",\n \"ellipsoidal\",\n + \ \"vertical\",\n \"ordinal\",\n + \ \"parametric\",\n \"TemporalDateTime\",\n + \ \"TemporalCount\",\n \"TemporalMeasure\"] + \ },\n \"axis\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/axis\" }\n },\n \"id\": { \"$ref\": + \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"subtype\", \"axis\" ],\n \"allOf\": + [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"crs\": {\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/bound_crs\" },\n { \"$ref\": + \"#/definitions/compound_crs\" },\n { \"$ref\": \"#/definitions/derived_engineering_crs\" + },\n { \"$ref\": \"#/definitions/derived_geodetic_crs\" },\n { + \"$ref\": \"#/definitions/derived_parametric_crs\" },\n { \"$ref\": + \"#/definitions/derived_projected_crs\" },\n { \"$ref\": \"#/definitions/derived_temporal_crs\" + },\n { \"$ref\": \"#/definitions/derived_vertical_crs\" },\n { + \"$ref\": \"#/definitions/engineering_crs\" },\n { \"$ref\": \"#/definitions/geodetic_crs\" + },\n { \"$ref\": \"#/definitions/parametric_crs\" },\n { \"$ref\": + \"#/definitions/projected_crs\" },\n { \"$ref\": \"#/definitions/temporal_crs\" + },\n { \"$ref\": \"#/definitions/vertical_crs\" }\n ]\n },\n\n + \ \"datum\": {\n \"oneOf\": [\n { \"$ref\": \"#/definitions/geodetic_reference_frame\" + },\n { \"$ref\": \"#/definitions/vertical_reference_frame\" },\n { + \"$ref\": \"#/definitions/dynamic_geodetic_reference_frame\" },\n { + \"$ref\": \"#/definitions/dynamic_vertical_reference_frame\" },\n { + \"$ref\": \"#/definitions/temporal_datum\" },\n { \"$ref\": \"#/definitions/parametric_datum\" + },\n { \"$ref\": \"#/definitions/engineering_datum\" }\n ]\n },\n\n + \ \"datum_ensemble\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"DatumEnsemble\"] },\n \"name\": { \"type\": + \"string\" },\n \"members\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": { \"type\": \"string\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": + \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\" ],\n \"allOf\": [\n { \"$ref\": + \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n }\n },\n \"ellipsoid\": { \"$ref\": \"#/definitions/ellipsoid\" + },\n \"accuracy\": { \"type\": \"string\" },\n \"id\": { \"$ref\": + \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"members\", \"accuracy\" ],\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"deformation_model\": + {\n \"description\": \"Association to a PointMotionOperation\",\n \"type\": + \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" }\n },\n \"required\" + : [ \"name\" ],\n \"additionalProperties\": false\n },\n\n \"derived_engineering_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\",\n + \ \"enum\": [\"DerivedEngineeringCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": \"#/definitions/engineering_crs\" + },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" },\n + \ \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_geodetic_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedGeodeticCRS\",\n + \ \"DerivedGeographicCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": \"#/definitions/geodetic_crs\" + },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" },\n + \ \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_parametric_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedParametricCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/parametric_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_projected_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedProjectedCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/projected_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_temporal_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedTemporalCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/temporal_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_vertical_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedVerticalCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/vertical_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"dynamic_geodetic_reference_frame\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"DynamicGeodeticReferenceFrame\"] + },\n \"name\": {},\n \"anchor\": {},\n \"ellipsoid\": + {},\n \"prime_meridian\": {},\n \"frame_reference_epoch\": { + \"type\": \"number\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"ellipsoid\", \"frame_reference_epoch\" ],\n \"additionalProperties\": + false\n },\n\n \"dynamic_vertical_reference_frame\": {\n \"type\": + \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"DynamicVerticalReferenceFrame\"] },\n \"name\": {},\n \"anchor\": + {},\n \"frame_reference_epoch\": { \"type\": \"number\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"frame_reference_epoch\" ],\n \"additionalProperties\": + false\n },\n\n \"ellipsoid\": {\n \"type\": \"object\",\n \"oneOf\":[\n + \ {\n \"properties\": {\n \"$schema\" : { \"type\": + \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] + },\n \"name\": { \"type\": \"string\" },\n \"semi_major_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"semi_minor_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"semi_major_axis\", + \"semi_minor_axis\" ],\n \"additionalProperties\": false\n },\n + \ {\n \"properties\": {\n \"$schema\" : { \"type\": + \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] + },\n \"name\": { \"type\": \"string\" },\n \"semi_major_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"inverse_flattening\": + { \"type\": \"number\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n + \ \"required\" : [ \"name\", \"semi_major_axis\", \"inverse_flattening\" + ],\n \"additionalProperties\": false\n },\n {\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": + { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] },\n \"name\": + { \"type\": \"string\" },\n \"radius\": { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\", \"radius\" ],\n \"additionalProperties\": false\n }\n + \ ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ]\n },\n\n \"engineering_crs\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"EngineeringCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"datum\": { \"$ref\": + \"#/definitions/engineering_datum\" },\n \"coordinate_system\": { \"$ref\": + \"#/definitions/coordinate_system\" },\n \"$schema\" : {},\n \"scope\": + {},\n \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"datum\" ],\n \"additionalProperties\": false\n },\n\n \"engineering_datum\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"EngineeringDatum\"] },\n \"name\": { \"type\": \"string\" },\n \"anchor\": + { \"type\": \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\" + ],\n \"additionalProperties\": false\n },\n\n \"geodetic_crs\": + {\n \"type\": \"object\",\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"GeodeticCRS\", \"GeographicCRS\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"datum\": {\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/geodetic_reference_frame\" + },\n { \"$ref\": \"#/definitions/dynamic_geodetic_reference_frame\" + }\n ]\n },\n \"datum_ensemble\": { \"$ref\": \"#/definitions/datum_ensemble\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"deformation_models\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/deformation_model\" }\n },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\" ],\n \"description\": \"One and only + one of datum and datum_ensemble must be provided\",\n \"allOf\": [\n + \ { \"$ref\": \"#/definitions/object_usage\" },\n { \"$ref\": + \"#/definitions/one_and_only_one_of_datum_or_datum_ensemble\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"geodetic_reference_frame\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"GeodeticReferenceFrame\"] },\n \"name\": { \"type\": \"string\" + },\n \"anchor\": { \"type\": \"string\" },\n \"ellipsoid\": + { \"$ref\": \"#/definitions/ellipsoid\" },\n \"prime_meridian\": { + \"$ref\": \"#/definitions/prime_meridian\" },\n \"$schema\" : {},\n + \ \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"ellipsoid\" ],\n \"additionalProperties\": false\n },\n\n \"geoid_model\": + {\n \"type\": \"object\",\n \"properties\": {\n \"name\": + { \"type\": \"string\" },\n \"interpolation_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" }\n },\n \"required\" + : [ \"name\" ],\n \"additionalProperties\": false\n },\n\n \"id\": + {\n \"type\": \"object\",\n \"properties\": {\n \"authority\": + { \"type\": \"string\" },\n \"code\": {\n \"oneOf\": [ { \"type\": + \"string\" }, { \"type\": \"integer\" } ]\n },\n \"version\": + {\n \"oneOf\": [ { \"type\": \"string\" }, { \"type\": \"number\" + } ]\n },\n \"authority_citation\": { \"type\": \"string\" },\n + \ \"uri\": { \"type\": \"string\" }\n },\n \"required\" : + [ \"authority\", \"code\" ],\n \"additionalProperties\": false\n },\n\n + \ \"ids\": {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/id\" + }\n },\n\n \"method\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"OperationMethod\"]},\n \"name\": { \"type\": + \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\" + ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"id_ids_mutually_exclusive\": + {\n \"not\": {\n \"type\": \"object\",\n \"required\": + [ \"id\", \"ids\" ]\n }\n },\n\n \"one_and_only_one_of_datum_or_datum_ensemble\": + {\n \"allOf\": [\n {\n \"not\": {\n \"type\": + \"object\",\n \"required\": [ \"datum\", \"datum_ensemble\" + ]\n }\n },\n {\n \"oneOf\": [\n { + \"type\": \"object\", \"required\": [\"datum\"] },\n { \"type\": + \"object\", \"required\": [\"datum_ensemble\"] }\n ]\n }\n + \ ]\n },\n\n \"meridian\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"Meridian\"] },\n \"longitude\": { \"$ref\": + \"#/definitions/value_in_degree_or_value_and_unit\" },\n \"id\": { + \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"longitude\" ],\n \"allOf\": [\n + \ { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"object_usage\": {\n + \ \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"scope\": + { \"type\": \"string\" },\n \"area\": { \"type\": \"string\" },\n + \ \"bbox\": { \"$ref\": \"#/definitions/bbox\" },\n \"vertical_extent\": + { \"$ref\": \"#/definitions/vertical_extent\" },\n \"temporal_extent\": + { \"$ref\": \"#/definitions/temporal_extent\" },\n \"remarks\": + { \"type\": \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"usages\": + { \"$ref\": \"#/definitions/usages\" },\n \"remarks\": { \"type\": + \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ]\n }\n + \ ]\n },\n\n \"parameter_value\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"$schema\" : { \"type\": \"string\" },\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"ParameterValue\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"value\": {\n \"oneOf\": + [\n { \"type\": \"string\" },\n { \"type\": \"number\" + }\n ]\n },\n \"unit\": { \"$ref\": \"#/definitions/unit\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\", + \"value\" ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"parametric_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"ParametricCRS\"] },\n \"name\": { \"type\": \"string\" },\n \"datum\": + { \"$ref\": \"#/definitions/parametric_datum\" },\n \"coordinate_system\": + { \"$ref\": \"#/definitions/coordinate_system\" },\n \"$schema\" : + {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"datum\" ],\n \"additionalProperties\": + false\n },\n\n \"parametric_datum\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"ParametricDatum\"] + },\n \"name\": { \"type\": \"string\" },\n \"anchor\": { \"type\": + \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\" ],\n \"additionalProperties\": + false\n },\n\n \"point_motion_operation\": {\n \"$comment\": \"Not + implemented in PROJ (at least as of PROJ 9.1)\",\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"PointMotionOperation\"] + },\n \"name\": { \"type\": \"string\" },\n \"source_crs\": { + \"$ref\": \"#/definitions/crs\" },\n \"method\": { \"$ref\": \"#/definitions/method\" + },\n \"parameters\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/parameter_value\" }\n },\n \"accuracy\": + { \"type\": \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"source_crs\", \"method\", \"parameters\" ],\n \"additionalProperties\": + false\n },\n\n \"prime_meridian\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"$schema\" : { \"type\": \"string\" },\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"PrimeMeridian\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"longitude\": { \"$ref\": + \"#/definitions/value_in_degree_or_value_and_unit\" },\n \"id\": { + \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\" ],\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n },\n\n \"single_operation\": {\n \"oneOf\": [\n { + \"$ref\": \"#/definitions/conversion\" },\n { \"$ref\": \"#/definitions/transformation\" + },\n { \"$ref\": \"#/definitions/point_motion_operation\" }\n ]\n + \ },\n\n \"projected_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"ProjectedCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/geodetic_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"temporal_crs\": {\n \"type\": \"object\",\n \"allOf\": [{ + \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"TemporalCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"datum\": { \"$ref\": \"#/definitions/temporal_datum\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"datum\" ],\n \"additionalProperties\": + false\n },\n\n \"temporal_datum\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"TemporalDatum\"] + },\n \"name\": { \"type\": \"string\" },\n \"calendar\": { \"type\": + \"string\" },\n \"time_origin\": { \"type\": \"string\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"calendar\" ],\n \"additionalProperties\": + false\n },\n\n \"temporal_extent\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"start\": { \"type\": \"string\" },\n \"end\": + { \"type\": \"string\" }\n },\n \"required\" : [ \"start\", \"end\" + ],\n \"additionalProperties\": false\n },\n\n \"transformation\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"Transformation\"] },\n \"name\": { \"type\": \"string\" },\n \"source_crs\": + { \"$ref\": \"#/definitions/crs\" },\n \"target_crs\": { \"$ref\": + \"#/definitions/crs\" },\n \"interpolation_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"method\": { \"$ref\": \"#/definitions/method\" },\n \"parameters\": + {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/parameter_value\" + }\n },\n \"accuracy\": { \"type\": \"string\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"source_crs\", \"target_crs\", \"method\", + \"parameters\" ],\n \"additionalProperties\": false\n },\n\n \"unit\": + {\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"enum\": + [\"metre\", \"degree\", \"unity\"]\n },\n {\n \"type\": \"object\",\n + \ \"properties\": {\n \"type\": { \"type\": \"string\",\n \"enum\": + [\"LinearUnit\", \"AngularUnit\", \"ScaleUnit\",\n \"TimeUnit\", + \"ParametricUnit\", \"Unit\"] },\n \"name\": { \"type\": \"string\" + },\n \"conversion_factor\": { \"type\": \"number\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"type\", \"name\" ],\n \"allOf\": + [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n + \ ],\n \"additionalProperties\": false\n }\n ]\n + \ },\n\n \"usages\": {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": {\n \"scope\": + { \"type\": \"string\" },\n \"area\": { \"type\": \"string\" },\n + \ \"bbox\": { \"$ref\": \"#/definitions/bbox\" },\n \"vertical_extent\": + { \"$ref\": \"#/definitions/vertical_extent\" },\n \"temporal_extent\": + { \"$ref\": \"#/definitions/temporal_extent\" }\n },\n \"additionalProperties\": + false\n }\n },\n\n \"value_and_unit\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"value\": { \"type\": \"number\" },\n \"unit\": + { \"$ref\": \"#/definitions/unit\" }\n },\n \"required\" : [ \"value\", + \"unit\" ],\n \"additionalProperties\": false\n },\n\n \"value_in_degree_or_value_and_unit\": + {\n \"oneOf\": [\n { \"type\": \"number\" },\n { \"$ref\": + \"#/definitions/value_and_unit\" }\n ]\n },\n\n \"value_in_metre_or_value_and_unit\": + {\n \"oneOf\": [\n { \"type\": \"number\" },\n { \"$ref\": + \"#/definitions/value_and_unit\" }\n ]\n },\n\n \"vertical_crs\": + {\n \"type\": \"object\",\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"VerticalCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"datum\": {\n \"oneOf\": [\n + \ { \"$ref\": \"#/definitions/vertical_reference_frame\" },\n + \ { \"$ref\": \"#/definitions/dynamic_vertical_reference_frame\" + }\n ]\n },\n \"datum_ensemble\": { \"$ref\": \"#/definitions/datum_ensemble\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"geoid_model\": { \"$ref\": \"#/definitions/geoid_model\" },\n + \ \"geoid_models\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/geoid_model\" }\n },\n \"deformation_models\": + {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/deformation_model\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\"],\n \"description\": + \"One and only one of datum and datum_ensemble must be provided\",\n \"allOf\": + [\n { \"$ref\": \"#/definitions/object_usage\" },\n { \"$ref\": + \"#/definitions/one_and_only_one_of_datum_or_datum_ensemble\" },\n {\n + \ \"not\": {\n \"type\": \"object\",\n \"required\": + [ \"geoid_model\", \"geoid_models\" ]\n }\n }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"vertical_extent\": + {\n \"type\": \"object\",\n \"properties\": {\n \"minimum\": + { \"type\": \"number\" },\n \"maximum\": { \"type\": \"number\" },\n + \ \"unit\": { \"$ref\": \"#/definitions/unit\" }\n },\n \"required\" + : [ \"minimum\", \"maximum\" ],\n \"additionalProperties\": false\n },\n\n + \ \"vertical_reference_frame\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"VerticalReferenceFrame\"] + },\n \"name\": { \"type\": \"string\" },\n \"anchor\": { \"type\": + \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\" ],\n \"additionalProperties\": + false\n }\n\n }\n}\n" + headers: + Access-Control-Allow-Methods: + - HEAD, OPTIONS, GET + Access-Control-Allow-Origin: + - '*' + Age: + - '507' + CDN-Cache-Control: + - public + CF-Cache-Status: + - HIT + CF-Ray: + - 80d6caad5efd1801-EWR + Cache-Control: + - max-age=1200 + Connection: + - close + Content-Type: + - application/json + Date: + - Wed, 27 Sep 2023 21:20:37 GMT + ETag: + - W/"567e3992b5fd3188af907a4cdc4781b3" + Last-Modified: + - Sun, 03 Sep 2023 09:10:52 GMT + Referrer-Policy: + - no-referrer-when-downgrade + Server: + - cloudflare + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + X-Backend: + - web-i-04a0936e538e90895 + X-Content-Type-Options: + - nosniff + X-RTD-Domain: + - proj.org + X-RTD-Path: + - /proxito/html/osgeo-proj/9.3/schemas/v0.5/projjson.schema.json + X-RTD-Project: + - osgeo-proj + X-RTD-Project-Method: + - custom_domain + X-RTD-Version: + - '9.3' + X-RTD-Version-Method: + - path + X-Served: + - Nginx-Proxito-Sendfile + alt-svc: + - h3=":443"; ma=86400 + x-amz-id-2: + - UBlptQ6CoU1gOcZjt2RSY1lr3wEiR3bA6BF4Ck7ffEb2Gvy2wrxxhJ3mNAJRYDJ1sJ9j4auUgjI= + x-amz-meta-mtime: + - '1693732240.238196845' + x-amz-request-id: + - 7M5G3K3ZTHPYERHZ + x-amz-server-side-encryption: + - AES256 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_projection/ProjectionTest.test_partial_apply.yaml b/tests/extensions/cassettes/test_projection/ProjectionTest.test_partial_apply.yaml new file mode 100644 index 000000000..cd207451c --- /dev/null +++ b/tests/extensions/cassettes/test_projection/ProjectionTest.test_partial_apply.yaml @@ -0,0 +1,898 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '536' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:38 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - f89b8b41a02e04915dd365c75895beed7b5b3eb3 + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21922-LGA + X-Timer: + - S1695849638.284484,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"$comment\": \"This schema succeeds if the proj: fields + are not used at all, please keep this in mind.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n }\n ]\n },\n + \ {\n \"$comment\": \"This is the schema for STAC Collections.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Collection\"\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"proj:epsg\":{\n \"title\":\"EPSG + code\",\n \"type\":[\n \"integer\",\n \"null\"\n + \ ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.5/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '536' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4369' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:38 GMT + ETag: + - '"63e6651b-1111"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - c70312b31165249a77a8b97d99fcfa73f2ad2432 + X-GitHub-Request-Id: + - 303E:20A2:70F70E:9F20FD:65149A8D + X-Served-By: + - cache-lga21934-LGA + X-Timer: + - S1695849638.399717,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:21:41 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - proj.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://proj.org/schemas/v0.5/projjson.schema.json + response: + body: + string: '' + headers: + Age: + - '508' + CDN-Cache-Control: + - public + CF-Cache-Status: + - HIT + CF-Ray: + - 80d6cab0bd4f0f67-EWR + Cache-Control: + - max-age=1200 + Connection: + - close + Content-Language: + - en + Content-Length: + - '0' + Content-Type: + - text/html; charset=utf-8 + Cross-Origin-Opener-Policy: + - same-origin + Date: + - Wed, 27 Sep 2023 21:20:38 GMT + Location: + - https://proj.org/en/9.3/schemas/v0.5/projjson.schema.json + Referrer-Policy: + - no-referrer-when-downgrade + Server: + - cloudflare + Vary: + - Accept-Language, Cookie, Accept-Encoding + X-Backend: + - web-i-00190b17db4987e5f + X-Content-Type-Options: + - nosniff + X-RTD-Domain: + - proj.org + X-RTD-Project: + - osgeo-proj + X-RTD-Project-Method: + - custom_domain + X-RTD-Redirect: + - user + X-RTD-Version-Method: + - path + X-Served: + - Proxito-404 + alt-svc: + - h3=":443"; ma=86400 + status: + code: 302 + message: Found +- request: + body: null + headers: + Connection: + - close + Host: + - proj.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://proj.org/en/9.3/schemas/v0.5/projjson.schema.json + response: + body: + string: "{\n \"$id\": \"https://proj.org/schemas/v0.5/projjson.schema.json\",\n + \ \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"description\": + \"Schema for PROJJSON (v0.5)\",\n \"$comment\": \"This file exists both in + data/ and in schemas/vXXX/. Keep both in sync. And if changing the value of + $id, change PROJJSON_DEFAULT_VERSION accordingly in io.cpp\",\n\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/crs\" },\n { \"$ref\": \"#/definitions/datum\" + },\n { \"$ref\": \"#/definitions/datum_ensemble\" },\n { \"$ref\": \"#/definitions/ellipsoid\" + },\n { \"$ref\": \"#/definitions/prime_meridian\" },\n { \"$ref\": \"#/definitions/single_operation\" + },\n { \"$ref\": \"#/definitions/concatenated_operation\" }\n ],\n\n \"definitions\": + {\n\n \"abridged_transformation\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"AbridgedTransformation\"] },\n \"name\": { + \"type\": \"string\" },\n \"method\": { \"$ref\": \"#/definitions/method\" + },\n \"parameters\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/parameter_value\" }\n },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"method\", \"parameters\" ],\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"axis\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"Axis\"] },\n \"name\": { \"type\": \"string\" },\n \"abbreviation\": + { \"type\": \"string\" },\n \"direction\": { \"type\": \"string\",\n + \ \"enum\": [ \"north\",\n \"northNorthEast\",\n + \ \"northEast\",\n \"eastNorthEast\",\n + \ \"east\",\n \"eastSouthEast\",\n + \ \"southEast\",\n \"southSouthEast\",\n + \ \"south\",\n \"southSouthWest\",\n + \ \"southWest\",\n \"westSouthWest\",\n + \ \"west\",\n \"westNorthWest\",\n + \ \"northWest\",\n \"northNorthWest\",\n + \ \"up\",\n \"down\",\n + \ \"geocentricX\",\n \"geocentricY\",\n + \ \"geocentricZ\",\n \"columnPositive\",\n + \ \"columnNegative\",\n \"rowPositive\",\n + \ \"rowNegative\",\n \"displayRight\",\n + \ \"displayLeft\",\n \"displayUp\",\n + \ \"displayDown\",\n \"forward\",\n + \ \"aft\",\n \"port\",\n + \ \"starboard\",\n \"clockwise\",\n + \ \"counterClockwise\",\n \"towards\",\n + \ \"awayFrom\",\n \"future\",\n + \ \"past\",\n \"unspecified\" + ] },\n \"meridian\": { \"$ref\": \"#/definitions/meridian\" },\n \"unit\": + { \"$ref\": \"#/definitions/unit\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\", \"abbreviation\", \"direction\" ],\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n },\n\n \"bbox\": {\n \"type\": \"object\",\n \"properties\": + {\n \"east_longitude\": { \"type\": \"number\" },\n \"west_longitude\": + { \"type\": \"number\" },\n \"south_latitude\": { \"type\": \"number\" + },\n \"north_latitude\": { \"type\": \"number\" }\n },\n \"required\" + : [ \"east_longitude\", \"west_longitude\",\n \"south_latitude\", + \"north_latitude\" ],\n \"additionalProperties\": false\n },\n\n \"bound_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"$schema\" : { \"type\": \"string\" + },\n \"type\": { \"type\": \"string\", \"enum\": [\"BoundCRS\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"source_crs\": { \"$ref\": + \"#/definitions/crs\" },\n \"target_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"transformation\": { \"$ref\": \"#/definitions/abridged_transformation\" + },\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"source_crs\", \"target_crs\", \"transformation\" ],\n + \ \"additionalProperties\": false\n },\n\n \"compound_crs\": {\n + \ \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"CompoundCRS\"] },\n \"name\": { \"type\": \"string\" },\n \"components\": + \ {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/crs\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"components\" ],\n + \ \"additionalProperties\": false\n },\n\n \"concatenated_operation\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"ConcatenatedOperation\"] },\n \"name\": { \"type\": \"string\" },\n + \ \"source_crs\": { \"$ref\": \"#/definitions/crs\" },\n \"target_crs\": + { \"$ref\": \"#/definitions/crs\" },\n \"steps\": {\n \"type\": + \"array\",\n \"items\": { \"$ref\": \"#/definitions/single_operation\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"source_crs\", \"target_crs\", + \"steps\" ],\n \"additionalProperties\": false\n },\n\n \"conversion\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"Conversion\"] },\n \"name\": { \"type\": \"string\" },\n \"method\": + { \"$ref\": \"#/definitions/method\" },\n \"parameters\": {\n \"type\": + \"array\",\n \"items\": { \"$ref\": \"#/definitions/parameter_value\" + }\n },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\", + \"method\" ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"coordinate_system\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"CoordinateSystem\"] },\n \"name\": { \"type\": \"string\" },\n \"subtype\": + { \"type\": \"string\",\n \"enum\": [\"Cartesian\",\n + \ \"spherical\",\n \"ellipsoidal\",\n + \ \"vertical\",\n \"ordinal\",\n + \ \"parametric\",\n \"TemporalDateTime\",\n + \ \"TemporalCount\",\n \"TemporalMeasure\"] + \ },\n \"axis\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/axis\" }\n },\n \"id\": { \"$ref\": + \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"subtype\", \"axis\" ],\n \"allOf\": + [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"crs\": {\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/bound_crs\" },\n { \"$ref\": + \"#/definitions/compound_crs\" },\n { \"$ref\": \"#/definitions/derived_engineering_crs\" + },\n { \"$ref\": \"#/definitions/derived_geodetic_crs\" },\n { + \"$ref\": \"#/definitions/derived_parametric_crs\" },\n { \"$ref\": + \"#/definitions/derived_projected_crs\" },\n { \"$ref\": \"#/definitions/derived_temporal_crs\" + },\n { \"$ref\": \"#/definitions/derived_vertical_crs\" },\n { + \"$ref\": \"#/definitions/engineering_crs\" },\n { \"$ref\": \"#/definitions/geodetic_crs\" + },\n { \"$ref\": \"#/definitions/parametric_crs\" },\n { \"$ref\": + \"#/definitions/projected_crs\" },\n { \"$ref\": \"#/definitions/temporal_crs\" + },\n { \"$ref\": \"#/definitions/vertical_crs\" }\n ]\n },\n\n + \ \"datum\": {\n \"oneOf\": [\n { \"$ref\": \"#/definitions/geodetic_reference_frame\" + },\n { \"$ref\": \"#/definitions/vertical_reference_frame\" },\n { + \"$ref\": \"#/definitions/dynamic_geodetic_reference_frame\" },\n { + \"$ref\": \"#/definitions/dynamic_vertical_reference_frame\" },\n { + \"$ref\": \"#/definitions/temporal_datum\" },\n { \"$ref\": \"#/definitions/parametric_datum\" + },\n { \"$ref\": \"#/definitions/engineering_datum\" }\n ]\n },\n\n + \ \"datum_ensemble\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"DatumEnsemble\"] },\n \"name\": { \"type\": + \"string\" },\n \"members\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": { \"type\": \"string\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": + \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\" ],\n \"allOf\": [\n { \"$ref\": + \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n }\n },\n \"ellipsoid\": { \"$ref\": \"#/definitions/ellipsoid\" + },\n \"accuracy\": { \"type\": \"string\" },\n \"id\": { \"$ref\": + \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"members\", \"accuracy\" ],\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"deformation_model\": + {\n \"description\": \"Association to a PointMotionOperation\",\n \"type\": + \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" }\n },\n \"required\" + : [ \"name\" ],\n \"additionalProperties\": false\n },\n\n \"derived_engineering_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\",\n + \ \"enum\": [\"DerivedEngineeringCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": \"#/definitions/engineering_crs\" + },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" },\n + \ \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_geodetic_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedGeodeticCRS\",\n + \ \"DerivedGeographicCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": \"#/definitions/geodetic_crs\" + },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" },\n + \ \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_parametric_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedParametricCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/parametric_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_projected_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedProjectedCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/projected_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_temporal_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedTemporalCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/temporal_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_vertical_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedVerticalCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/vertical_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"dynamic_geodetic_reference_frame\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"DynamicGeodeticReferenceFrame\"] + },\n \"name\": {},\n \"anchor\": {},\n \"ellipsoid\": + {},\n \"prime_meridian\": {},\n \"frame_reference_epoch\": { + \"type\": \"number\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"ellipsoid\", \"frame_reference_epoch\" ],\n \"additionalProperties\": + false\n },\n\n \"dynamic_vertical_reference_frame\": {\n \"type\": + \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"DynamicVerticalReferenceFrame\"] },\n \"name\": {},\n \"anchor\": + {},\n \"frame_reference_epoch\": { \"type\": \"number\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"frame_reference_epoch\" ],\n \"additionalProperties\": + false\n },\n\n \"ellipsoid\": {\n \"type\": \"object\",\n \"oneOf\":[\n + \ {\n \"properties\": {\n \"$schema\" : { \"type\": + \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] + },\n \"name\": { \"type\": \"string\" },\n \"semi_major_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"semi_minor_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"semi_major_axis\", + \"semi_minor_axis\" ],\n \"additionalProperties\": false\n },\n + \ {\n \"properties\": {\n \"$schema\" : { \"type\": + \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] + },\n \"name\": { \"type\": \"string\" },\n \"semi_major_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"inverse_flattening\": + { \"type\": \"number\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n + \ \"required\" : [ \"name\", \"semi_major_axis\", \"inverse_flattening\" + ],\n \"additionalProperties\": false\n },\n {\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": + { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] },\n \"name\": + { \"type\": \"string\" },\n \"radius\": { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\", \"radius\" ],\n \"additionalProperties\": false\n }\n + \ ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ]\n },\n\n \"engineering_crs\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"EngineeringCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"datum\": { \"$ref\": + \"#/definitions/engineering_datum\" },\n \"coordinate_system\": { \"$ref\": + \"#/definitions/coordinate_system\" },\n \"$schema\" : {},\n \"scope\": + {},\n \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"datum\" ],\n \"additionalProperties\": false\n },\n\n \"engineering_datum\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"EngineeringDatum\"] },\n \"name\": { \"type\": \"string\" },\n \"anchor\": + { \"type\": \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\" + ],\n \"additionalProperties\": false\n },\n\n \"geodetic_crs\": + {\n \"type\": \"object\",\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"GeodeticCRS\", \"GeographicCRS\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"datum\": {\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/geodetic_reference_frame\" + },\n { \"$ref\": \"#/definitions/dynamic_geodetic_reference_frame\" + }\n ]\n },\n \"datum_ensemble\": { \"$ref\": \"#/definitions/datum_ensemble\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"deformation_models\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/deformation_model\" }\n },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\" ],\n \"description\": \"One and only + one of datum and datum_ensemble must be provided\",\n \"allOf\": [\n + \ { \"$ref\": \"#/definitions/object_usage\" },\n { \"$ref\": + \"#/definitions/one_and_only_one_of_datum_or_datum_ensemble\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"geodetic_reference_frame\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"GeodeticReferenceFrame\"] },\n \"name\": { \"type\": \"string\" + },\n \"anchor\": { \"type\": \"string\" },\n \"ellipsoid\": + { \"$ref\": \"#/definitions/ellipsoid\" },\n \"prime_meridian\": { + \"$ref\": \"#/definitions/prime_meridian\" },\n \"$schema\" : {},\n + \ \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"ellipsoid\" ],\n \"additionalProperties\": false\n },\n\n \"geoid_model\": + {\n \"type\": \"object\",\n \"properties\": {\n \"name\": + { \"type\": \"string\" },\n \"interpolation_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" }\n },\n \"required\" + : [ \"name\" ],\n \"additionalProperties\": false\n },\n\n \"id\": + {\n \"type\": \"object\",\n \"properties\": {\n \"authority\": + { \"type\": \"string\" },\n \"code\": {\n \"oneOf\": [ { \"type\": + \"string\" }, { \"type\": \"integer\" } ]\n },\n \"version\": + {\n \"oneOf\": [ { \"type\": \"string\" }, { \"type\": \"number\" + } ]\n },\n \"authority_citation\": { \"type\": \"string\" },\n + \ \"uri\": { \"type\": \"string\" }\n },\n \"required\" : + [ \"authority\", \"code\" ],\n \"additionalProperties\": false\n },\n\n + \ \"ids\": {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/id\" + }\n },\n\n \"method\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"OperationMethod\"]},\n \"name\": { \"type\": + \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\" + ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"id_ids_mutually_exclusive\": + {\n \"not\": {\n \"type\": \"object\",\n \"required\": + [ \"id\", \"ids\" ]\n }\n },\n\n \"one_and_only_one_of_datum_or_datum_ensemble\": + {\n \"allOf\": [\n {\n \"not\": {\n \"type\": + \"object\",\n \"required\": [ \"datum\", \"datum_ensemble\" + ]\n }\n },\n {\n \"oneOf\": [\n { + \"type\": \"object\", \"required\": [\"datum\"] },\n { \"type\": + \"object\", \"required\": [\"datum_ensemble\"] }\n ]\n }\n + \ ]\n },\n\n \"meridian\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"Meridian\"] },\n \"longitude\": { \"$ref\": + \"#/definitions/value_in_degree_or_value_and_unit\" },\n \"id\": { + \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"longitude\" ],\n \"allOf\": [\n + \ { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"object_usage\": {\n + \ \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"scope\": + { \"type\": \"string\" },\n \"area\": { \"type\": \"string\" },\n + \ \"bbox\": { \"$ref\": \"#/definitions/bbox\" },\n \"vertical_extent\": + { \"$ref\": \"#/definitions/vertical_extent\" },\n \"temporal_extent\": + { \"$ref\": \"#/definitions/temporal_extent\" },\n \"remarks\": + { \"type\": \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"usages\": + { \"$ref\": \"#/definitions/usages\" },\n \"remarks\": { \"type\": + \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ]\n }\n + \ ]\n },\n\n \"parameter_value\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"$schema\" : { \"type\": \"string\" },\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"ParameterValue\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"value\": {\n \"oneOf\": + [\n { \"type\": \"string\" },\n { \"type\": \"number\" + }\n ]\n },\n \"unit\": { \"$ref\": \"#/definitions/unit\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\", + \"value\" ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"parametric_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"ParametricCRS\"] },\n \"name\": { \"type\": \"string\" },\n \"datum\": + { \"$ref\": \"#/definitions/parametric_datum\" },\n \"coordinate_system\": + { \"$ref\": \"#/definitions/coordinate_system\" },\n \"$schema\" : + {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"datum\" ],\n \"additionalProperties\": + false\n },\n\n \"parametric_datum\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"ParametricDatum\"] + },\n \"name\": { \"type\": \"string\" },\n \"anchor\": { \"type\": + \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\" ],\n \"additionalProperties\": + false\n },\n\n \"point_motion_operation\": {\n \"$comment\": \"Not + implemented in PROJ (at least as of PROJ 9.1)\",\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"PointMotionOperation\"] + },\n \"name\": { \"type\": \"string\" },\n \"source_crs\": { + \"$ref\": \"#/definitions/crs\" },\n \"method\": { \"$ref\": \"#/definitions/method\" + },\n \"parameters\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/parameter_value\" }\n },\n \"accuracy\": + { \"type\": \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"source_crs\", \"method\", \"parameters\" ],\n \"additionalProperties\": + false\n },\n\n \"prime_meridian\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"$schema\" : { \"type\": \"string\" },\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"PrimeMeridian\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"longitude\": { \"$ref\": + \"#/definitions/value_in_degree_or_value_and_unit\" },\n \"id\": { + \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\" ],\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n },\n\n \"single_operation\": {\n \"oneOf\": [\n { + \"$ref\": \"#/definitions/conversion\" },\n { \"$ref\": \"#/definitions/transformation\" + },\n { \"$ref\": \"#/definitions/point_motion_operation\" }\n ]\n + \ },\n\n \"projected_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"ProjectedCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/geodetic_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"temporal_crs\": {\n \"type\": \"object\",\n \"allOf\": [{ + \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"TemporalCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"datum\": { \"$ref\": \"#/definitions/temporal_datum\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"datum\" ],\n \"additionalProperties\": + false\n },\n\n \"temporal_datum\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"TemporalDatum\"] + },\n \"name\": { \"type\": \"string\" },\n \"calendar\": { \"type\": + \"string\" },\n \"time_origin\": { \"type\": \"string\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"calendar\" ],\n \"additionalProperties\": + false\n },\n\n \"temporal_extent\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"start\": { \"type\": \"string\" },\n \"end\": + { \"type\": \"string\" }\n },\n \"required\" : [ \"start\", \"end\" + ],\n \"additionalProperties\": false\n },\n\n \"transformation\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"Transformation\"] },\n \"name\": { \"type\": \"string\" },\n \"source_crs\": + { \"$ref\": \"#/definitions/crs\" },\n \"target_crs\": { \"$ref\": + \"#/definitions/crs\" },\n \"interpolation_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"method\": { \"$ref\": \"#/definitions/method\" },\n \"parameters\": + {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/parameter_value\" + }\n },\n \"accuracy\": { \"type\": \"string\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"source_crs\", \"target_crs\", \"method\", + \"parameters\" ],\n \"additionalProperties\": false\n },\n\n \"unit\": + {\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"enum\": + [\"metre\", \"degree\", \"unity\"]\n },\n {\n \"type\": \"object\",\n + \ \"properties\": {\n \"type\": { \"type\": \"string\",\n \"enum\": + [\"LinearUnit\", \"AngularUnit\", \"ScaleUnit\",\n \"TimeUnit\", + \"ParametricUnit\", \"Unit\"] },\n \"name\": { \"type\": \"string\" + },\n \"conversion_factor\": { \"type\": \"number\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"type\", \"name\" ],\n \"allOf\": + [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n + \ ],\n \"additionalProperties\": false\n }\n ]\n + \ },\n\n \"usages\": {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": {\n \"scope\": + { \"type\": \"string\" },\n \"area\": { \"type\": \"string\" },\n + \ \"bbox\": { \"$ref\": \"#/definitions/bbox\" },\n \"vertical_extent\": + { \"$ref\": \"#/definitions/vertical_extent\" },\n \"temporal_extent\": + { \"$ref\": \"#/definitions/temporal_extent\" }\n },\n \"additionalProperties\": + false\n }\n },\n\n \"value_and_unit\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"value\": { \"type\": \"number\" },\n \"unit\": + { \"$ref\": \"#/definitions/unit\" }\n },\n \"required\" : [ \"value\", + \"unit\" ],\n \"additionalProperties\": false\n },\n\n \"value_in_degree_or_value_and_unit\": + {\n \"oneOf\": [\n { \"type\": \"number\" },\n { \"$ref\": + \"#/definitions/value_and_unit\" }\n ]\n },\n\n \"value_in_metre_or_value_and_unit\": + {\n \"oneOf\": [\n { \"type\": \"number\" },\n { \"$ref\": + \"#/definitions/value_and_unit\" }\n ]\n },\n\n \"vertical_crs\": + {\n \"type\": \"object\",\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"VerticalCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"datum\": {\n \"oneOf\": [\n + \ { \"$ref\": \"#/definitions/vertical_reference_frame\" },\n + \ { \"$ref\": \"#/definitions/dynamic_vertical_reference_frame\" + }\n ]\n },\n \"datum_ensemble\": { \"$ref\": \"#/definitions/datum_ensemble\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"geoid_model\": { \"$ref\": \"#/definitions/geoid_model\" },\n + \ \"geoid_models\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/geoid_model\" }\n },\n \"deformation_models\": + {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/deformation_model\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\"],\n \"description\": + \"One and only one of datum and datum_ensemble must be provided\",\n \"allOf\": + [\n { \"$ref\": \"#/definitions/object_usage\" },\n { \"$ref\": + \"#/definitions/one_and_only_one_of_datum_or_datum_ensemble\" },\n {\n + \ \"not\": {\n \"type\": \"object\",\n \"required\": + [ \"geoid_model\", \"geoid_models\" ]\n }\n }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"vertical_extent\": + {\n \"type\": \"object\",\n \"properties\": {\n \"minimum\": + { \"type\": \"number\" },\n \"maximum\": { \"type\": \"number\" },\n + \ \"unit\": { \"$ref\": \"#/definitions/unit\" }\n },\n \"required\" + : [ \"minimum\", \"maximum\" ],\n \"additionalProperties\": false\n },\n\n + \ \"vertical_reference_frame\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"VerticalReferenceFrame\"] + },\n \"name\": { \"type\": \"string\" },\n \"anchor\": { \"type\": + \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\" ],\n \"additionalProperties\": + false\n }\n\n }\n}\n" + headers: + Access-Control-Allow-Methods: + - HEAD, OPTIONS, GET + Access-Control-Allow-Origin: + - '*' + Age: + - '508' + CDN-Cache-Control: + - public + CF-Cache-Status: + - HIT + CF-Ray: + - 80d6cab18a1d1921-EWR + Cache-Control: + - max-age=1200 + Connection: + - close + Content-Type: + - application/json + Date: + - Wed, 27 Sep 2023 21:20:38 GMT + ETag: + - W/"567e3992b5fd3188af907a4cdc4781b3" + Last-Modified: + - Sun, 03 Sep 2023 09:10:52 GMT + Referrer-Policy: + - no-referrer-when-downgrade + Server: + - cloudflare + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + X-Backend: + - web-i-04a0936e538e90895 + X-Content-Type-Options: + - nosniff + X-RTD-Domain: + - proj.org + X-RTD-Path: + - /proxito/html/osgeo-proj/9.3/schemas/v0.5/projjson.schema.json + X-RTD-Project: + - osgeo-proj + X-RTD-Project-Method: + - custom_domain + X-RTD-Version: + - '9.3' + X-RTD-Version-Method: + - path + X-Served: + - Nginx-Proxito-Sendfile + alt-svc: + - h3=":443"; ma=86400 + x-amz-id-2: + - UBlptQ6CoU1gOcZjt2RSY1lr3wEiR3bA6BF4Ck7ffEb2Gvy2wrxxhJ3mNAJRYDJ1sJ9j4auUgjI= + x-amz-meta-mtime: + - '1693732240.238196845' + x-amz-request-id: + - 7M5G3K3ZTHPYERHZ + x-amz-server-side-encryption: + - AES256 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_projection/ProjectionTest.test_projjson.yaml b/tests/extensions/cassettes/test_projection/ProjectionTest.test_projjson.yaml new file mode 100644 index 000000000..2fecc2a01 --- /dev/null +++ b/tests/extensions/cassettes/test_projection/ProjectionTest.test_projjson.yaml @@ -0,0 +1,898 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '537' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:38 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - dfa4b8e783dcfe3da9b3c6a06cb0fb27e5320f8a + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849639.837666,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"$comment\": \"This schema succeeds if the proj: fields + are not used at all, please keep this in mind.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n }\n ]\n },\n + \ {\n \"$comment\": \"This is the schema for STAC Collections.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Collection\"\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"proj:epsg\":{\n \"title\":\"EPSG + code\",\n \"type\":[\n \"integer\",\n \"null\"\n + \ ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.5/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '537' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4369' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:38 GMT + ETag: + - '"63e6651b-1111"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - de079ff29e8c82ac51ebc4ab4e318be8e98d6854 + X-GitHub-Request-Id: + - 303E:20A2:70F70E:9F20FD:65149A8D + X-Served-By: + - cache-lga21930-LGA + X-Timer: + - S1695849639.955540,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:21:41 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - proj.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://proj.org/schemas/v0.5/projjson.schema.json + response: + body: + string: '' + headers: + Age: + - '509' + CDN-Cache-Control: + - public + CF-Cache-Status: + - HIT + CF-Ray: + - 80d6cab439e61889-EWR + Cache-Control: + - max-age=1200 + Connection: + - close + Content-Language: + - en + Content-Length: + - '0' + Content-Type: + - text/html; charset=utf-8 + Cross-Origin-Opener-Policy: + - same-origin + Date: + - Wed, 27 Sep 2023 21:20:39 GMT + Location: + - https://proj.org/en/9.3/schemas/v0.5/projjson.schema.json + Referrer-Policy: + - no-referrer-when-downgrade + Server: + - cloudflare + Vary: + - Accept-Language, Cookie, Accept-Encoding + X-Backend: + - web-i-00190b17db4987e5f + X-Content-Type-Options: + - nosniff + X-RTD-Domain: + - proj.org + X-RTD-Project: + - osgeo-proj + X-RTD-Project-Method: + - custom_domain + X-RTD-Redirect: + - user + X-RTD-Version-Method: + - path + X-Served: + - Proxito-404 + alt-svc: + - h3=":443"; ma=86400 + status: + code: 302 + message: Found +- request: + body: null + headers: + Connection: + - close + Host: + - proj.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://proj.org/en/9.3/schemas/v0.5/projjson.schema.json + response: + body: + string: "{\n \"$id\": \"https://proj.org/schemas/v0.5/projjson.schema.json\",\n + \ \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"description\": + \"Schema for PROJJSON (v0.5)\",\n \"$comment\": \"This file exists both in + data/ and in schemas/vXXX/. Keep both in sync. And if changing the value of + $id, change PROJJSON_DEFAULT_VERSION accordingly in io.cpp\",\n\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/crs\" },\n { \"$ref\": \"#/definitions/datum\" + },\n { \"$ref\": \"#/definitions/datum_ensemble\" },\n { \"$ref\": \"#/definitions/ellipsoid\" + },\n { \"$ref\": \"#/definitions/prime_meridian\" },\n { \"$ref\": \"#/definitions/single_operation\" + },\n { \"$ref\": \"#/definitions/concatenated_operation\" }\n ],\n\n \"definitions\": + {\n\n \"abridged_transformation\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"AbridgedTransformation\"] },\n \"name\": { + \"type\": \"string\" },\n \"method\": { \"$ref\": \"#/definitions/method\" + },\n \"parameters\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/parameter_value\" }\n },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"method\", \"parameters\" ],\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"axis\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"Axis\"] },\n \"name\": { \"type\": \"string\" },\n \"abbreviation\": + { \"type\": \"string\" },\n \"direction\": { \"type\": \"string\",\n + \ \"enum\": [ \"north\",\n \"northNorthEast\",\n + \ \"northEast\",\n \"eastNorthEast\",\n + \ \"east\",\n \"eastSouthEast\",\n + \ \"southEast\",\n \"southSouthEast\",\n + \ \"south\",\n \"southSouthWest\",\n + \ \"southWest\",\n \"westSouthWest\",\n + \ \"west\",\n \"westNorthWest\",\n + \ \"northWest\",\n \"northNorthWest\",\n + \ \"up\",\n \"down\",\n + \ \"geocentricX\",\n \"geocentricY\",\n + \ \"geocentricZ\",\n \"columnPositive\",\n + \ \"columnNegative\",\n \"rowPositive\",\n + \ \"rowNegative\",\n \"displayRight\",\n + \ \"displayLeft\",\n \"displayUp\",\n + \ \"displayDown\",\n \"forward\",\n + \ \"aft\",\n \"port\",\n + \ \"starboard\",\n \"clockwise\",\n + \ \"counterClockwise\",\n \"towards\",\n + \ \"awayFrom\",\n \"future\",\n + \ \"past\",\n \"unspecified\" + ] },\n \"meridian\": { \"$ref\": \"#/definitions/meridian\" },\n \"unit\": + { \"$ref\": \"#/definitions/unit\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\", \"abbreviation\", \"direction\" ],\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n },\n\n \"bbox\": {\n \"type\": \"object\",\n \"properties\": + {\n \"east_longitude\": { \"type\": \"number\" },\n \"west_longitude\": + { \"type\": \"number\" },\n \"south_latitude\": { \"type\": \"number\" + },\n \"north_latitude\": { \"type\": \"number\" }\n },\n \"required\" + : [ \"east_longitude\", \"west_longitude\",\n \"south_latitude\", + \"north_latitude\" ],\n \"additionalProperties\": false\n },\n\n \"bound_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"$schema\" : { \"type\": \"string\" + },\n \"type\": { \"type\": \"string\", \"enum\": [\"BoundCRS\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"source_crs\": { \"$ref\": + \"#/definitions/crs\" },\n \"target_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"transformation\": { \"$ref\": \"#/definitions/abridged_transformation\" + },\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"source_crs\", \"target_crs\", \"transformation\" ],\n + \ \"additionalProperties\": false\n },\n\n \"compound_crs\": {\n + \ \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"CompoundCRS\"] },\n \"name\": { \"type\": \"string\" },\n \"components\": + \ {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/crs\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"components\" ],\n + \ \"additionalProperties\": false\n },\n\n \"concatenated_operation\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"ConcatenatedOperation\"] },\n \"name\": { \"type\": \"string\" },\n + \ \"source_crs\": { \"$ref\": \"#/definitions/crs\" },\n \"target_crs\": + { \"$ref\": \"#/definitions/crs\" },\n \"steps\": {\n \"type\": + \"array\",\n \"items\": { \"$ref\": \"#/definitions/single_operation\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"source_crs\", \"target_crs\", + \"steps\" ],\n \"additionalProperties\": false\n },\n\n \"conversion\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"Conversion\"] },\n \"name\": { \"type\": \"string\" },\n \"method\": + { \"$ref\": \"#/definitions/method\" },\n \"parameters\": {\n \"type\": + \"array\",\n \"items\": { \"$ref\": \"#/definitions/parameter_value\" + }\n },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\", + \"method\" ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"coordinate_system\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"CoordinateSystem\"] },\n \"name\": { \"type\": \"string\" },\n \"subtype\": + { \"type\": \"string\",\n \"enum\": [\"Cartesian\",\n + \ \"spherical\",\n \"ellipsoidal\",\n + \ \"vertical\",\n \"ordinal\",\n + \ \"parametric\",\n \"TemporalDateTime\",\n + \ \"TemporalCount\",\n \"TemporalMeasure\"] + \ },\n \"axis\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/axis\" }\n },\n \"id\": { \"$ref\": + \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"subtype\", \"axis\" ],\n \"allOf\": + [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"crs\": {\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/bound_crs\" },\n { \"$ref\": + \"#/definitions/compound_crs\" },\n { \"$ref\": \"#/definitions/derived_engineering_crs\" + },\n { \"$ref\": \"#/definitions/derived_geodetic_crs\" },\n { + \"$ref\": \"#/definitions/derived_parametric_crs\" },\n { \"$ref\": + \"#/definitions/derived_projected_crs\" },\n { \"$ref\": \"#/definitions/derived_temporal_crs\" + },\n { \"$ref\": \"#/definitions/derived_vertical_crs\" },\n { + \"$ref\": \"#/definitions/engineering_crs\" },\n { \"$ref\": \"#/definitions/geodetic_crs\" + },\n { \"$ref\": \"#/definitions/parametric_crs\" },\n { \"$ref\": + \"#/definitions/projected_crs\" },\n { \"$ref\": \"#/definitions/temporal_crs\" + },\n { \"$ref\": \"#/definitions/vertical_crs\" }\n ]\n },\n\n + \ \"datum\": {\n \"oneOf\": [\n { \"$ref\": \"#/definitions/geodetic_reference_frame\" + },\n { \"$ref\": \"#/definitions/vertical_reference_frame\" },\n { + \"$ref\": \"#/definitions/dynamic_geodetic_reference_frame\" },\n { + \"$ref\": \"#/definitions/dynamic_vertical_reference_frame\" },\n { + \"$ref\": \"#/definitions/temporal_datum\" },\n { \"$ref\": \"#/definitions/parametric_datum\" + },\n { \"$ref\": \"#/definitions/engineering_datum\" }\n ]\n },\n\n + \ \"datum_ensemble\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"DatumEnsemble\"] },\n \"name\": { \"type\": + \"string\" },\n \"members\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": { \"type\": \"string\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": + \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\" ],\n \"allOf\": [\n { \"$ref\": + \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n }\n },\n \"ellipsoid\": { \"$ref\": \"#/definitions/ellipsoid\" + },\n \"accuracy\": { \"type\": \"string\" },\n \"id\": { \"$ref\": + \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"members\", \"accuracy\" ],\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"deformation_model\": + {\n \"description\": \"Association to a PointMotionOperation\",\n \"type\": + \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" }\n },\n \"required\" + : [ \"name\" ],\n \"additionalProperties\": false\n },\n\n \"derived_engineering_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\",\n + \ \"enum\": [\"DerivedEngineeringCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": \"#/definitions/engineering_crs\" + },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" },\n + \ \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_geodetic_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedGeodeticCRS\",\n + \ \"DerivedGeographicCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": \"#/definitions/geodetic_crs\" + },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" },\n + \ \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_parametric_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedParametricCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/parametric_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_projected_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedProjectedCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/projected_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_temporal_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedTemporalCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/temporal_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_vertical_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedVerticalCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/vertical_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"dynamic_geodetic_reference_frame\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"DynamicGeodeticReferenceFrame\"] + },\n \"name\": {},\n \"anchor\": {},\n \"ellipsoid\": + {},\n \"prime_meridian\": {},\n \"frame_reference_epoch\": { + \"type\": \"number\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"ellipsoid\", \"frame_reference_epoch\" ],\n \"additionalProperties\": + false\n },\n\n \"dynamic_vertical_reference_frame\": {\n \"type\": + \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"DynamicVerticalReferenceFrame\"] },\n \"name\": {},\n \"anchor\": + {},\n \"frame_reference_epoch\": { \"type\": \"number\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"frame_reference_epoch\" ],\n \"additionalProperties\": + false\n },\n\n \"ellipsoid\": {\n \"type\": \"object\",\n \"oneOf\":[\n + \ {\n \"properties\": {\n \"$schema\" : { \"type\": + \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] + },\n \"name\": { \"type\": \"string\" },\n \"semi_major_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"semi_minor_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"semi_major_axis\", + \"semi_minor_axis\" ],\n \"additionalProperties\": false\n },\n + \ {\n \"properties\": {\n \"$schema\" : { \"type\": + \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] + },\n \"name\": { \"type\": \"string\" },\n \"semi_major_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"inverse_flattening\": + { \"type\": \"number\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n + \ \"required\" : [ \"name\", \"semi_major_axis\", \"inverse_flattening\" + ],\n \"additionalProperties\": false\n },\n {\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": + { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] },\n \"name\": + { \"type\": \"string\" },\n \"radius\": { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\", \"radius\" ],\n \"additionalProperties\": false\n }\n + \ ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ]\n },\n\n \"engineering_crs\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"EngineeringCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"datum\": { \"$ref\": + \"#/definitions/engineering_datum\" },\n \"coordinate_system\": { \"$ref\": + \"#/definitions/coordinate_system\" },\n \"$schema\" : {},\n \"scope\": + {},\n \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"datum\" ],\n \"additionalProperties\": false\n },\n\n \"engineering_datum\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"EngineeringDatum\"] },\n \"name\": { \"type\": \"string\" },\n \"anchor\": + { \"type\": \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\" + ],\n \"additionalProperties\": false\n },\n\n \"geodetic_crs\": + {\n \"type\": \"object\",\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"GeodeticCRS\", \"GeographicCRS\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"datum\": {\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/geodetic_reference_frame\" + },\n { \"$ref\": \"#/definitions/dynamic_geodetic_reference_frame\" + }\n ]\n },\n \"datum_ensemble\": { \"$ref\": \"#/definitions/datum_ensemble\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"deformation_models\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/deformation_model\" }\n },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\" ],\n \"description\": \"One and only + one of datum and datum_ensemble must be provided\",\n \"allOf\": [\n + \ { \"$ref\": \"#/definitions/object_usage\" },\n { \"$ref\": + \"#/definitions/one_and_only_one_of_datum_or_datum_ensemble\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"geodetic_reference_frame\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"GeodeticReferenceFrame\"] },\n \"name\": { \"type\": \"string\" + },\n \"anchor\": { \"type\": \"string\" },\n \"ellipsoid\": + { \"$ref\": \"#/definitions/ellipsoid\" },\n \"prime_meridian\": { + \"$ref\": \"#/definitions/prime_meridian\" },\n \"$schema\" : {},\n + \ \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"ellipsoid\" ],\n \"additionalProperties\": false\n },\n\n \"geoid_model\": + {\n \"type\": \"object\",\n \"properties\": {\n \"name\": + { \"type\": \"string\" },\n \"interpolation_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" }\n },\n \"required\" + : [ \"name\" ],\n \"additionalProperties\": false\n },\n\n \"id\": + {\n \"type\": \"object\",\n \"properties\": {\n \"authority\": + { \"type\": \"string\" },\n \"code\": {\n \"oneOf\": [ { \"type\": + \"string\" }, { \"type\": \"integer\" } ]\n },\n \"version\": + {\n \"oneOf\": [ { \"type\": \"string\" }, { \"type\": \"number\" + } ]\n },\n \"authority_citation\": { \"type\": \"string\" },\n + \ \"uri\": { \"type\": \"string\" }\n },\n \"required\" : + [ \"authority\", \"code\" ],\n \"additionalProperties\": false\n },\n\n + \ \"ids\": {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/id\" + }\n },\n\n \"method\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"OperationMethod\"]},\n \"name\": { \"type\": + \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\" + ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"id_ids_mutually_exclusive\": + {\n \"not\": {\n \"type\": \"object\",\n \"required\": + [ \"id\", \"ids\" ]\n }\n },\n\n \"one_and_only_one_of_datum_or_datum_ensemble\": + {\n \"allOf\": [\n {\n \"not\": {\n \"type\": + \"object\",\n \"required\": [ \"datum\", \"datum_ensemble\" + ]\n }\n },\n {\n \"oneOf\": [\n { + \"type\": \"object\", \"required\": [\"datum\"] },\n { \"type\": + \"object\", \"required\": [\"datum_ensemble\"] }\n ]\n }\n + \ ]\n },\n\n \"meridian\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"Meridian\"] },\n \"longitude\": { \"$ref\": + \"#/definitions/value_in_degree_or_value_and_unit\" },\n \"id\": { + \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"longitude\" ],\n \"allOf\": [\n + \ { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"object_usage\": {\n + \ \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"scope\": + { \"type\": \"string\" },\n \"area\": { \"type\": \"string\" },\n + \ \"bbox\": { \"$ref\": \"#/definitions/bbox\" },\n \"vertical_extent\": + { \"$ref\": \"#/definitions/vertical_extent\" },\n \"temporal_extent\": + { \"$ref\": \"#/definitions/temporal_extent\" },\n \"remarks\": + { \"type\": \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"usages\": + { \"$ref\": \"#/definitions/usages\" },\n \"remarks\": { \"type\": + \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ]\n }\n + \ ]\n },\n\n \"parameter_value\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"$schema\" : { \"type\": \"string\" },\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"ParameterValue\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"value\": {\n \"oneOf\": + [\n { \"type\": \"string\" },\n { \"type\": \"number\" + }\n ]\n },\n \"unit\": { \"$ref\": \"#/definitions/unit\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\", + \"value\" ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"parametric_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"ParametricCRS\"] },\n \"name\": { \"type\": \"string\" },\n \"datum\": + { \"$ref\": \"#/definitions/parametric_datum\" },\n \"coordinate_system\": + { \"$ref\": \"#/definitions/coordinate_system\" },\n \"$schema\" : + {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"datum\" ],\n \"additionalProperties\": + false\n },\n\n \"parametric_datum\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"ParametricDatum\"] + },\n \"name\": { \"type\": \"string\" },\n \"anchor\": { \"type\": + \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\" ],\n \"additionalProperties\": + false\n },\n\n \"point_motion_operation\": {\n \"$comment\": \"Not + implemented in PROJ (at least as of PROJ 9.1)\",\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"PointMotionOperation\"] + },\n \"name\": { \"type\": \"string\" },\n \"source_crs\": { + \"$ref\": \"#/definitions/crs\" },\n \"method\": { \"$ref\": \"#/definitions/method\" + },\n \"parameters\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/parameter_value\" }\n },\n \"accuracy\": + { \"type\": \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"source_crs\", \"method\", \"parameters\" ],\n \"additionalProperties\": + false\n },\n\n \"prime_meridian\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"$schema\" : { \"type\": \"string\" },\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"PrimeMeridian\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"longitude\": { \"$ref\": + \"#/definitions/value_in_degree_or_value_and_unit\" },\n \"id\": { + \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\" ],\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n },\n\n \"single_operation\": {\n \"oneOf\": [\n { + \"$ref\": \"#/definitions/conversion\" },\n { \"$ref\": \"#/definitions/transformation\" + },\n { \"$ref\": \"#/definitions/point_motion_operation\" }\n ]\n + \ },\n\n \"projected_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"ProjectedCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/geodetic_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"temporal_crs\": {\n \"type\": \"object\",\n \"allOf\": [{ + \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"TemporalCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"datum\": { \"$ref\": \"#/definitions/temporal_datum\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"datum\" ],\n \"additionalProperties\": + false\n },\n\n \"temporal_datum\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"TemporalDatum\"] + },\n \"name\": { \"type\": \"string\" },\n \"calendar\": { \"type\": + \"string\" },\n \"time_origin\": { \"type\": \"string\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"calendar\" ],\n \"additionalProperties\": + false\n },\n\n \"temporal_extent\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"start\": { \"type\": \"string\" },\n \"end\": + { \"type\": \"string\" }\n },\n \"required\" : [ \"start\", \"end\" + ],\n \"additionalProperties\": false\n },\n\n \"transformation\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"Transformation\"] },\n \"name\": { \"type\": \"string\" },\n \"source_crs\": + { \"$ref\": \"#/definitions/crs\" },\n \"target_crs\": { \"$ref\": + \"#/definitions/crs\" },\n \"interpolation_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"method\": { \"$ref\": \"#/definitions/method\" },\n \"parameters\": + {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/parameter_value\" + }\n },\n \"accuracy\": { \"type\": \"string\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"source_crs\", \"target_crs\", \"method\", + \"parameters\" ],\n \"additionalProperties\": false\n },\n\n \"unit\": + {\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"enum\": + [\"metre\", \"degree\", \"unity\"]\n },\n {\n \"type\": \"object\",\n + \ \"properties\": {\n \"type\": { \"type\": \"string\",\n \"enum\": + [\"LinearUnit\", \"AngularUnit\", \"ScaleUnit\",\n \"TimeUnit\", + \"ParametricUnit\", \"Unit\"] },\n \"name\": { \"type\": \"string\" + },\n \"conversion_factor\": { \"type\": \"number\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"type\", \"name\" ],\n \"allOf\": + [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n + \ ],\n \"additionalProperties\": false\n }\n ]\n + \ },\n\n \"usages\": {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": {\n \"scope\": + { \"type\": \"string\" },\n \"area\": { \"type\": \"string\" },\n + \ \"bbox\": { \"$ref\": \"#/definitions/bbox\" },\n \"vertical_extent\": + { \"$ref\": \"#/definitions/vertical_extent\" },\n \"temporal_extent\": + { \"$ref\": \"#/definitions/temporal_extent\" }\n },\n \"additionalProperties\": + false\n }\n },\n\n \"value_and_unit\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"value\": { \"type\": \"number\" },\n \"unit\": + { \"$ref\": \"#/definitions/unit\" }\n },\n \"required\" : [ \"value\", + \"unit\" ],\n \"additionalProperties\": false\n },\n\n \"value_in_degree_or_value_and_unit\": + {\n \"oneOf\": [\n { \"type\": \"number\" },\n { \"$ref\": + \"#/definitions/value_and_unit\" }\n ]\n },\n\n \"value_in_metre_or_value_and_unit\": + {\n \"oneOf\": [\n { \"type\": \"number\" },\n { \"$ref\": + \"#/definitions/value_and_unit\" }\n ]\n },\n\n \"vertical_crs\": + {\n \"type\": \"object\",\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"VerticalCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"datum\": {\n \"oneOf\": [\n + \ { \"$ref\": \"#/definitions/vertical_reference_frame\" },\n + \ { \"$ref\": \"#/definitions/dynamic_vertical_reference_frame\" + }\n ]\n },\n \"datum_ensemble\": { \"$ref\": \"#/definitions/datum_ensemble\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"geoid_model\": { \"$ref\": \"#/definitions/geoid_model\" },\n + \ \"geoid_models\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/geoid_model\" }\n },\n \"deformation_models\": + {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/deformation_model\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\"],\n \"description\": + \"One and only one of datum and datum_ensemble must be provided\",\n \"allOf\": + [\n { \"$ref\": \"#/definitions/object_usage\" },\n { \"$ref\": + \"#/definitions/one_and_only_one_of_datum_or_datum_ensemble\" },\n {\n + \ \"not\": {\n \"type\": \"object\",\n \"required\": + [ \"geoid_model\", \"geoid_models\" ]\n }\n }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"vertical_extent\": + {\n \"type\": \"object\",\n \"properties\": {\n \"minimum\": + { \"type\": \"number\" },\n \"maximum\": { \"type\": \"number\" },\n + \ \"unit\": { \"$ref\": \"#/definitions/unit\" }\n },\n \"required\" + : [ \"minimum\", \"maximum\" ],\n \"additionalProperties\": false\n },\n\n + \ \"vertical_reference_frame\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"VerticalReferenceFrame\"] + },\n \"name\": { \"type\": \"string\" },\n \"anchor\": { \"type\": + \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\" ],\n \"additionalProperties\": + false\n }\n\n }\n}\n" + headers: + Access-Control-Allow-Methods: + - HEAD, OPTIONS, GET + Access-Control-Allow-Origin: + - '*' + Age: + - '509' + CDN-Cache-Control: + - public + CF-Cache-Status: + - HIT + CF-Ray: + - 80d6cab4fc38184d-EWR + Cache-Control: + - max-age=1200 + Connection: + - close + Content-Type: + - application/json + Date: + - Wed, 27 Sep 2023 21:20:39 GMT + ETag: + - W/"567e3992b5fd3188af907a4cdc4781b3" + Last-Modified: + - Sun, 03 Sep 2023 09:10:52 GMT + Referrer-Policy: + - no-referrer-when-downgrade + Server: + - cloudflare + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + X-Backend: + - web-i-04a0936e538e90895 + X-Content-Type-Options: + - nosniff + X-RTD-Domain: + - proj.org + X-RTD-Path: + - /proxito/html/osgeo-proj/9.3/schemas/v0.5/projjson.schema.json + X-RTD-Project: + - osgeo-proj + X-RTD-Project-Method: + - custom_domain + X-RTD-Version: + - '9.3' + X-RTD-Version-Method: + - path + X-Served: + - Nginx-Proxito-Sendfile + alt-svc: + - h3=":443"; ma=86400 + x-amz-id-2: + - UBlptQ6CoU1gOcZjt2RSY1lr3wEiR3bA6BF4Ck7ffEb2Gvy2wrxxhJ3mNAJRYDJ1sJ9j4auUgjI= + x-amz-meta-mtime: + - '1693732240.238196845' + x-amz-request-id: + - 7M5G3K3ZTHPYERHZ + x-amz-server-side-encryption: + - AES256 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_projection/ProjectionTest.test_shape.yaml b/tests/extensions/cassettes/test_projection/ProjectionTest.test_shape.yaml new file mode 100644 index 000000000..fedbfcede --- /dev/null +++ b/tests/extensions/cassettes/test_projection/ProjectionTest.test_shape.yaml @@ -0,0 +1,898 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '538' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:39 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 872436a00f486106f10b670129c51e5a3b57640e + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21960-LGA + X-Timer: + - S1695849640.504635,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"$comment\": \"This schema succeeds if the proj: fields + are not used at all, please keep this in mind.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n }\n ]\n },\n + \ {\n \"$comment\": \"This is the schema for STAC Collections.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Collection\"\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"proj:epsg\":{\n \"title\":\"EPSG + code\",\n \"type\":[\n \"integer\",\n \"null\"\n + \ ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.5/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '537' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4369' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:39 GMT + ETag: + - '"63e6651b-1111"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '4' + X-Fastly-Request-ID: + - 0a2b6359c3871308ad76df13840e19cfb3772c55 + X-GitHub-Request-Id: + - 303E:20A2:70F70E:9F20FD:65149A8D + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849640.618320,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:21:41 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - proj.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://proj.org/schemas/v0.5/projjson.schema.json + response: + body: + string: '' + headers: + Age: + - '509' + CDN-Cache-Control: + - public + CF-Cache-Status: + - HIT + CF-Ray: + - 80d6cab84c361859-EWR + Cache-Control: + - max-age=1200 + Connection: + - close + Content-Language: + - en + Content-Length: + - '0' + Content-Type: + - text/html; charset=utf-8 + Cross-Origin-Opener-Policy: + - same-origin + Date: + - Wed, 27 Sep 2023 21:20:39 GMT + Location: + - https://proj.org/en/9.3/schemas/v0.5/projjson.schema.json + Referrer-Policy: + - no-referrer-when-downgrade + Server: + - cloudflare + Vary: + - Accept-Language, Cookie, Accept-Encoding + X-Backend: + - web-i-00190b17db4987e5f + X-Content-Type-Options: + - nosniff + X-RTD-Domain: + - proj.org + X-RTD-Project: + - osgeo-proj + X-RTD-Project-Method: + - custom_domain + X-RTD-Redirect: + - user + X-RTD-Version-Method: + - path + X-Served: + - Proxito-404 + alt-svc: + - h3=":443"; ma=86400 + status: + code: 302 + message: Found +- request: + body: null + headers: + Connection: + - close + Host: + - proj.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://proj.org/en/9.3/schemas/v0.5/projjson.schema.json + response: + body: + string: "{\n \"$id\": \"https://proj.org/schemas/v0.5/projjson.schema.json\",\n + \ \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"description\": + \"Schema for PROJJSON (v0.5)\",\n \"$comment\": \"This file exists both in + data/ and in schemas/vXXX/. Keep both in sync. And if changing the value of + $id, change PROJJSON_DEFAULT_VERSION accordingly in io.cpp\",\n\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/crs\" },\n { \"$ref\": \"#/definitions/datum\" + },\n { \"$ref\": \"#/definitions/datum_ensemble\" },\n { \"$ref\": \"#/definitions/ellipsoid\" + },\n { \"$ref\": \"#/definitions/prime_meridian\" },\n { \"$ref\": \"#/definitions/single_operation\" + },\n { \"$ref\": \"#/definitions/concatenated_operation\" }\n ],\n\n \"definitions\": + {\n\n \"abridged_transformation\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"AbridgedTransformation\"] },\n \"name\": { + \"type\": \"string\" },\n \"method\": { \"$ref\": \"#/definitions/method\" + },\n \"parameters\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/parameter_value\" }\n },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"method\", \"parameters\" ],\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"axis\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"Axis\"] },\n \"name\": { \"type\": \"string\" },\n \"abbreviation\": + { \"type\": \"string\" },\n \"direction\": { \"type\": \"string\",\n + \ \"enum\": [ \"north\",\n \"northNorthEast\",\n + \ \"northEast\",\n \"eastNorthEast\",\n + \ \"east\",\n \"eastSouthEast\",\n + \ \"southEast\",\n \"southSouthEast\",\n + \ \"south\",\n \"southSouthWest\",\n + \ \"southWest\",\n \"westSouthWest\",\n + \ \"west\",\n \"westNorthWest\",\n + \ \"northWest\",\n \"northNorthWest\",\n + \ \"up\",\n \"down\",\n + \ \"geocentricX\",\n \"geocentricY\",\n + \ \"geocentricZ\",\n \"columnPositive\",\n + \ \"columnNegative\",\n \"rowPositive\",\n + \ \"rowNegative\",\n \"displayRight\",\n + \ \"displayLeft\",\n \"displayUp\",\n + \ \"displayDown\",\n \"forward\",\n + \ \"aft\",\n \"port\",\n + \ \"starboard\",\n \"clockwise\",\n + \ \"counterClockwise\",\n \"towards\",\n + \ \"awayFrom\",\n \"future\",\n + \ \"past\",\n \"unspecified\" + ] },\n \"meridian\": { \"$ref\": \"#/definitions/meridian\" },\n \"unit\": + { \"$ref\": \"#/definitions/unit\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\", \"abbreviation\", \"direction\" ],\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n },\n\n \"bbox\": {\n \"type\": \"object\",\n \"properties\": + {\n \"east_longitude\": { \"type\": \"number\" },\n \"west_longitude\": + { \"type\": \"number\" },\n \"south_latitude\": { \"type\": \"number\" + },\n \"north_latitude\": { \"type\": \"number\" }\n },\n \"required\" + : [ \"east_longitude\", \"west_longitude\",\n \"south_latitude\", + \"north_latitude\" ],\n \"additionalProperties\": false\n },\n\n \"bound_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"$schema\" : { \"type\": \"string\" + },\n \"type\": { \"type\": \"string\", \"enum\": [\"BoundCRS\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"source_crs\": { \"$ref\": + \"#/definitions/crs\" },\n \"target_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"transformation\": { \"$ref\": \"#/definitions/abridged_transformation\" + },\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"source_crs\", \"target_crs\", \"transformation\" ],\n + \ \"additionalProperties\": false\n },\n\n \"compound_crs\": {\n + \ \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"CompoundCRS\"] },\n \"name\": { \"type\": \"string\" },\n \"components\": + \ {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/crs\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"components\" ],\n + \ \"additionalProperties\": false\n },\n\n \"concatenated_operation\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"ConcatenatedOperation\"] },\n \"name\": { \"type\": \"string\" },\n + \ \"source_crs\": { \"$ref\": \"#/definitions/crs\" },\n \"target_crs\": + { \"$ref\": \"#/definitions/crs\" },\n \"steps\": {\n \"type\": + \"array\",\n \"items\": { \"$ref\": \"#/definitions/single_operation\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"source_crs\", \"target_crs\", + \"steps\" ],\n \"additionalProperties\": false\n },\n\n \"conversion\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"Conversion\"] },\n \"name\": { \"type\": \"string\" },\n \"method\": + { \"$ref\": \"#/definitions/method\" },\n \"parameters\": {\n \"type\": + \"array\",\n \"items\": { \"$ref\": \"#/definitions/parameter_value\" + }\n },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\", + \"method\" ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"coordinate_system\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"CoordinateSystem\"] },\n \"name\": { \"type\": \"string\" },\n \"subtype\": + { \"type\": \"string\",\n \"enum\": [\"Cartesian\",\n + \ \"spherical\",\n \"ellipsoidal\",\n + \ \"vertical\",\n \"ordinal\",\n + \ \"parametric\",\n \"TemporalDateTime\",\n + \ \"TemporalCount\",\n \"TemporalMeasure\"] + \ },\n \"axis\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/axis\" }\n },\n \"id\": { \"$ref\": + \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"subtype\", \"axis\" ],\n \"allOf\": + [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"crs\": {\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/bound_crs\" },\n { \"$ref\": + \"#/definitions/compound_crs\" },\n { \"$ref\": \"#/definitions/derived_engineering_crs\" + },\n { \"$ref\": \"#/definitions/derived_geodetic_crs\" },\n { + \"$ref\": \"#/definitions/derived_parametric_crs\" },\n { \"$ref\": + \"#/definitions/derived_projected_crs\" },\n { \"$ref\": \"#/definitions/derived_temporal_crs\" + },\n { \"$ref\": \"#/definitions/derived_vertical_crs\" },\n { + \"$ref\": \"#/definitions/engineering_crs\" },\n { \"$ref\": \"#/definitions/geodetic_crs\" + },\n { \"$ref\": \"#/definitions/parametric_crs\" },\n { \"$ref\": + \"#/definitions/projected_crs\" },\n { \"$ref\": \"#/definitions/temporal_crs\" + },\n { \"$ref\": \"#/definitions/vertical_crs\" }\n ]\n },\n\n + \ \"datum\": {\n \"oneOf\": [\n { \"$ref\": \"#/definitions/geodetic_reference_frame\" + },\n { \"$ref\": \"#/definitions/vertical_reference_frame\" },\n { + \"$ref\": \"#/definitions/dynamic_geodetic_reference_frame\" },\n { + \"$ref\": \"#/definitions/dynamic_vertical_reference_frame\" },\n { + \"$ref\": \"#/definitions/temporal_datum\" },\n { \"$ref\": \"#/definitions/parametric_datum\" + },\n { \"$ref\": \"#/definitions/engineering_datum\" }\n ]\n },\n\n + \ \"datum_ensemble\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"DatumEnsemble\"] },\n \"name\": { \"type\": + \"string\" },\n \"members\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": { \"type\": \"string\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": + \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\" ],\n \"allOf\": [\n { \"$ref\": + \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n }\n },\n \"ellipsoid\": { \"$ref\": \"#/definitions/ellipsoid\" + },\n \"accuracy\": { \"type\": \"string\" },\n \"id\": { \"$ref\": + \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"members\", \"accuracy\" ],\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"deformation_model\": + {\n \"description\": \"Association to a PointMotionOperation\",\n \"type\": + \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" }\n },\n \"required\" + : [ \"name\" ],\n \"additionalProperties\": false\n },\n\n \"derived_engineering_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\",\n + \ \"enum\": [\"DerivedEngineeringCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": \"#/definitions/engineering_crs\" + },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" },\n + \ \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_geodetic_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedGeodeticCRS\",\n + \ \"DerivedGeographicCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": \"#/definitions/geodetic_crs\" + },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" },\n + \ \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_parametric_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedParametricCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/parametric_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_projected_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedProjectedCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/projected_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_temporal_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedTemporalCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/temporal_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_vertical_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedVerticalCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/vertical_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"dynamic_geodetic_reference_frame\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"DynamicGeodeticReferenceFrame\"] + },\n \"name\": {},\n \"anchor\": {},\n \"ellipsoid\": + {},\n \"prime_meridian\": {},\n \"frame_reference_epoch\": { + \"type\": \"number\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"ellipsoid\", \"frame_reference_epoch\" ],\n \"additionalProperties\": + false\n },\n\n \"dynamic_vertical_reference_frame\": {\n \"type\": + \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"DynamicVerticalReferenceFrame\"] },\n \"name\": {},\n \"anchor\": + {},\n \"frame_reference_epoch\": { \"type\": \"number\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"frame_reference_epoch\" ],\n \"additionalProperties\": + false\n },\n\n \"ellipsoid\": {\n \"type\": \"object\",\n \"oneOf\":[\n + \ {\n \"properties\": {\n \"$schema\" : { \"type\": + \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] + },\n \"name\": { \"type\": \"string\" },\n \"semi_major_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"semi_minor_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"semi_major_axis\", + \"semi_minor_axis\" ],\n \"additionalProperties\": false\n },\n + \ {\n \"properties\": {\n \"$schema\" : { \"type\": + \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] + },\n \"name\": { \"type\": \"string\" },\n \"semi_major_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"inverse_flattening\": + { \"type\": \"number\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n + \ \"required\" : [ \"name\", \"semi_major_axis\", \"inverse_flattening\" + ],\n \"additionalProperties\": false\n },\n {\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": + { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] },\n \"name\": + { \"type\": \"string\" },\n \"radius\": { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\", \"radius\" ],\n \"additionalProperties\": false\n }\n + \ ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ]\n },\n\n \"engineering_crs\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"EngineeringCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"datum\": { \"$ref\": + \"#/definitions/engineering_datum\" },\n \"coordinate_system\": { \"$ref\": + \"#/definitions/coordinate_system\" },\n \"$schema\" : {},\n \"scope\": + {},\n \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"datum\" ],\n \"additionalProperties\": false\n },\n\n \"engineering_datum\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"EngineeringDatum\"] },\n \"name\": { \"type\": \"string\" },\n \"anchor\": + { \"type\": \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\" + ],\n \"additionalProperties\": false\n },\n\n \"geodetic_crs\": + {\n \"type\": \"object\",\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"GeodeticCRS\", \"GeographicCRS\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"datum\": {\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/geodetic_reference_frame\" + },\n { \"$ref\": \"#/definitions/dynamic_geodetic_reference_frame\" + }\n ]\n },\n \"datum_ensemble\": { \"$ref\": \"#/definitions/datum_ensemble\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"deformation_models\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/deformation_model\" }\n },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\" ],\n \"description\": \"One and only + one of datum and datum_ensemble must be provided\",\n \"allOf\": [\n + \ { \"$ref\": \"#/definitions/object_usage\" },\n { \"$ref\": + \"#/definitions/one_and_only_one_of_datum_or_datum_ensemble\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"geodetic_reference_frame\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"GeodeticReferenceFrame\"] },\n \"name\": { \"type\": \"string\" + },\n \"anchor\": { \"type\": \"string\" },\n \"ellipsoid\": + { \"$ref\": \"#/definitions/ellipsoid\" },\n \"prime_meridian\": { + \"$ref\": \"#/definitions/prime_meridian\" },\n \"$schema\" : {},\n + \ \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"ellipsoid\" ],\n \"additionalProperties\": false\n },\n\n \"geoid_model\": + {\n \"type\": \"object\",\n \"properties\": {\n \"name\": + { \"type\": \"string\" },\n \"interpolation_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" }\n },\n \"required\" + : [ \"name\" ],\n \"additionalProperties\": false\n },\n\n \"id\": + {\n \"type\": \"object\",\n \"properties\": {\n \"authority\": + { \"type\": \"string\" },\n \"code\": {\n \"oneOf\": [ { \"type\": + \"string\" }, { \"type\": \"integer\" } ]\n },\n \"version\": + {\n \"oneOf\": [ { \"type\": \"string\" }, { \"type\": \"number\" + } ]\n },\n \"authority_citation\": { \"type\": \"string\" },\n + \ \"uri\": { \"type\": \"string\" }\n },\n \"required\" : + [ \"authority\", \"code\" ],\n \"additionalProperties\": false\n },\n\n + \ \"ids\": {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/id\" + }\n },\n\n \"method\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"OperationMethod\"]},\n \"name\": { \"type\": + \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\" + ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"id_ids_mutually_exclusive\": + {\n \"not\": {\n \"type\": \"object\",\n \"required\": + [ \"id\", \"ids\" ]\n }\n },\n\n \"one_and_only_one_of_datum_or_datum_ensemble\": + {\n \"allOf\": [\n {\n \"not\": {\n \"type\": + \"object\",\n \"required\": [ \"datum\", \"datum_ensemble\" + ]\n }\n },\n {\n \"oneOf\": [\n { + \"type\": \"object\", \"required\": [\"datum\"] },\n { \"type\": + \"object\", \"required\": [\"datum_ensemble\"] }\n ]\n }\n + \ ]\n },\n\n \"meridian\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"Meridian\"] },\n \"longitude\": { \"$ref\": + \"#/definitions/value_in_degree_or_value_and_unit\" },\n \"id\": { + \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"longitude\" ],\n \"allOf\": [\n + \ { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"object_usage\": {\n + \ \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"scope\": + { \"type\": \"string\" },\n \"area\": { \"type\": \"string\" },\n + \ \"bbox\": { \"$ref\": \"#/definitions/bbox\" },\n \"vertical_extent\": + { \"$ref\": \"#/definitions/vertical_extent\" },\n \"temporal_extent\": + { \"$ref\": \"#/definitions/temporal_extent\" },\n \"remarks\": + { \"type\": \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"usages\": + { \"$ref\": \"#/definitions/usages\" },\n \"remarks\": { \"type\": + \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ]\n }\n + \ ]\n },\n\n \"parameter_value\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"$schema\" : { \"type\": \"string\" },\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"ParameterValue\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"value\": {\n \"oneOf\": + [\n { \"type\": \"string\" },\n { \"type\": \"number\" + }\n ]\n },\n \"unit\": { \"$ref\": \"#/definitions/unit\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\", + \"value\" ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"parametric_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"ParametricCRS\"] },\n \"name\": { \"type\": \"string\" },\n \"datum\": + { \"$ref\": \"#/definitions/parametric_datum\" },\n \"coordinate_system\": + { \"$ref\": \"#/definitions/coordinate_system\" },\n \"$schema\" : + {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"datum\" ],\n \"additionalProperties\": + false\n },\n\n \"parametric_datum\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"ParametricDatum\"] + },\n \"name\": { \"type\": \"string\" },\n \"anchor\": { \"type\": + \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\" ],\n \"additionalProperties\": + false\n },\n\n \"point_motion_operation\": {\n \"$comment\": \"Not + implemented in PROJ (at least as of PROJ 9.1)\",\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"PointMotionOperation\"] + },\n \"name\": { \"type\": \"string\" },\n \"source_crs\": { + \"$ref\": \"#/definitions/crs\" },\n \"method\": { \"$ref\": \"#/definitions/method\" + },\n \"parameters\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/parameter_value\" }\n },\n \"accuracy\": + { \"type\": \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"source_crs\", \"method\", \"parameters\" ],\n \"additionalProperties\": + false\n },\n\n \"prime_meridian\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"$schema\" : { \"type\": \"string\" },\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"PrimeMeridian\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"longitude\": { \"$ref\": + \"#/definitions/value_in_degree_or_value_and_unit\" },\n \"id\": { + \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\" ],\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n },\n\n \"single_operation\": {\n \"oneOf\": [\n { + \"$ref\": \"#/definitions/conversion\" },\n { \"$ref\": \"#/definitions/transformation\" + },\n { \"$ref\": \"#/definitions/point_motion_operation\" }\n ]\n + \ },\n\n \"projected_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"ProjectedCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/geodetic_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"temporal_crs\": {\n \"type\": \"object\",\n \"allOf\": [{ + \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"TemporalCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"datum\": { \"$ref\": \"#/definitions/temporal_datum\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"datum\" ],\n \"additionalProperties\": + false\n },\n\n \"temporal_datum\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"TemporalDatum\"] + },\n \"name\": { \"type\": \"string\" },\n \"calendar\": { \"type\": + \"string\" },\n \"time_origin\": { \"type\": \"string\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"calendar\" ],\n \"additionalProperties\": + false\n },\n\n \"temporal_extent\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"start\": { \"type\": \"string\" },\n \"end\": + { \"type\": \"string\" }\n },\n \"required\" : [ \"start\", \"end\" + ],\n \"additionalProperties\": false\n },\n\n \"transformation\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"Transformation\"] },\n \"name\": { \"type\": \"string\" },\n \"source_crs\": + { \"$ref\": \"#/definitions/crs\" },\n \"target_crs\": { \"$ref\": + \"#/definitions/crs\" },\n \"interpolation_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"method\": { \"$ref\": \"#/definitions/method\" },\n \"parameters\": + {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/parameter_value\" + }\n },\n \"accuracy\": { \"type\": \"string\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"source_crs\", \"target_crs\", \"method\", + \"parameters\" ],\n \"additionalProperties\": false\n },\n\n \"unit\": + {\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"enum\": + [\"metre\", \"degree\", \"unity\"]\n },\n {\n \"type\": \"object\",\n + \ \"properties\": {\n \"type\": { \"type\": \"string\",\n \"enum\": + [\"LinearUnit\", \"AngularUnit\", \"ScaleUnit\",\n \"TimeUnit\", + \"ParametricUnit\", \"Unit\"] },\n \"name\": { \"type\": \"string\" + },\n \"conversion_factor\": { \"type\": \"number\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"type\", \"name\" ],\n \"allOf\": + [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n + \ ],\n \"additionalProperties\": false\n }\n ]\n + \ },\n\n \"usages\": {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": {\n \"scope\": + { \"type\": \"string\" },\n \"area\": { \"type\": \"string\" },\n + \ \"bbox\": { \"$ref\": \"#/definitions/bbox\" },\n \"vertical_extent\": + { \"$ref\": \"#/definitions/vertical_extent\" },\n \"temporal_extent\": + { \"$ref\": \"#/definitions/temporal_extent\" }\n },\n \"additionalProperties\": + false\n }\n },\n\n \"value_and_unit\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"value\": { \"type\": \"number\" },\n \"unit\": + { \"$ref\": \"#/definitions/unit\" }\n },\n \"required\" : [ \"value\", + \"unit\" ],\n \"additionalProperties\": false\n },\n\n \"value_in_degree_or_value_and_unit\": + {\n \"oneOf\": [\n { \"type\": \"number\" },\n { \"$ref\": + \"#/definitions/value_and_unit\" }\n ]\n },\n\n \"value_in_metre_or_value_and_unit\": + {\n \"oneOf\": [\n { \"type\": \"number\" },\n { \"$ref\": + \"#/definitions/value_and_unit\" }\n ]\n },\n\n \"vertical_crs\": + {\n \"type\": \"object\",\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"VerticalCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"datum\": {\n \"oneOf\": [\n + \ { \"$ref\": \"#/definitions/vertical_reference_frame\" },\n + \ { \"$ref\": \"#/definitions/dynamic_vertical_reference_frame\" + }\n ]\n },\n \"datum_ensemble\": { \"$ref\": \"#/definitions/datum_ensemble\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"geoid_model\": { \"$ref\": \"#/definitions/geoid_model\" },\n + \ \"geoid_models\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/geoid_model\" }\n },\n \"deformation_models\": + {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/deformation_model\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\"],\n \"description\": + \"One and only one of datum and datum_ensemble must be provided\",\n \"allOf\": + [\n { \"$ref\": \"#/definitions/object_usage\" },\n { \"$ref\": + \"#/definitions/one_and_only_one_of_datum_or_datum_ensemble\" },\n {\n + \ \"not\": {\n \"type\": \"object\",\n \"required\": + [ \"geoid_model\", \"geoid_models\" ]\n }\n }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"vertical_extent\": + {\n \"type\": \"object\",\n \"properties\": {\n \"minimum\": + { \"type\": \"number\" },\n \"maximum\": { \"type\": \"number\" },\n + \ \"unit\": { \"$ref\": \"#/definitions/unit\" }\n },\n \"required\" + : [ \"minimum\", \"maximum\" ],\n \"additionalProperties\": false\n },\n\n + \ \"vertical_reference_frame\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"VerticalReferenceFrame\"] + },\n \"name\": { \"type\": \"string\" },\n \"anchor\": { \"type\": + \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\" ],\n \"additionalProperties\": + false\n }\n\n }\n}\n" + headers: + Access-Control-Allow-Methods: + - HEAD, OPTIONS, GET + Access-Control-Allow-Origin: + - '*' + Age: + - '509' + CDN-Cache-Control: + - public + CF-Cache-Status: + - HIT + CF-Ray: + - 80d6cab929081879-EWR + Cache-Control: + - max-age=1200 + Connection: + - close + Content-Type: + - application/json + Date: + - Wed, 27 Sep 2023 21:20:39 GMT + ETag: + - W/"567e3992b5fd3188af907a4cdc4781b3" + Last-Modified: + - Sun, 03 Sep 2023 09:10:52 GMT + Referrer-Policy: + - no-referrer-when-downgrade + Server: + - cloudflare + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + X-Backend: + - web-i-04a0936e538e90895 + X-Content-Type-Options: + - nosniff + X-RTD-Domain: + - proj.org + X-RTD-Path: + - /proxito/html/osgeo-proj/9.3/schemas/v0.5/projjson.schema.json + X-RTD-Project: + - osgeo-proj + X-RTD-Project-Method: + - custom_domain + X-RTD-Version: + - '9.3' + X-RTD-Version-Method: + - path + X-Served: + - Nginx-Proxito-Sendfile + alt-svc: + - h3=":443"; ma=86400 + x-amz-id-2: + - UBlptQ6CoU1gOcZjt2RSY1lr3wEiR3bA6BF4Ck7ffEb2Gvy2wrxxhJ3mNAJRYDJ1sJ9j4auUgjI= + x-amz-meta-mtime: + - '1693732240.238196845' + x-amz-request-id: + - 7M5G3K3ZTHPYERHZ + x-amz-server-side-encryption: + - AES256 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_projection/ProjectionTest.test_transform.yaml b/tests/extensions/cassettes/test_projection/ProjectionTest.test_transform.yaml new file mode 100644 index 000000000..57ef70dc1 --- /dev/null +++ b/tests/extensions/cassettes/test_projection/ProjectionTest.test_transform.yaml @@ -0,0 +1,898 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '538' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:40 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 96d9cf0926115fa41dab5d4b40a92c21e768fa6e + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21925-LGA + X-Timer: + - S1695849640.086033,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"$comment\": \"This schema succeeds if the proj: fields + are not used at all, please keep this in mind.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n }\n ]\n },\n + \ {\n \"$comment\": \"This is the schema for STAC Collections.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Collection\"\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"proj:epsg\":{\n \"title\":\"EPSG + code\",\n \"type\":[\n \"integer\",\n \"null\"\n + \ ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.5/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '538' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4369' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:40 GMT + ETag: + - '"63e6651b-1111"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 298d1a7f5a10ea6d400cfcfe6cd54495e0710df3 + X-GitHub-Request-Id: + - 303E:20A2:70F70E:9F20FD:65149A8D + X-Served-By: + - cache-lga21922-LGA + X-Timer: + - S1695849640.189994,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:21:41 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - proj.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://proj.org/schemas/v0.5/projjson.schema.json + response: + body: + string: '' + headers: + Age: + - '510' + CDN-Cache-Control: + - public + CF-Cache-Status: + - HIT + CF-Ray: + - 80d6cabbfc4e1778-EWR + Cache-Control: + - max-age=1200 + Connection: + - close + Content-Language: + - en + Content-Length: + - '0' + Content-Type: + - text/html; charset=utf-8 + Cross-Origin-Opener-Policy: + - same-origin + Date: + - Wed, 27 Sep 2023 21:20:40 GMT + Location: + - https://proj.org/en/9.3/schemas/v0.5/projjson.schema.json + Referrer-Policy: + - no-referrer-when-downgrade + Server: + - cloudflare + Vary: + - Accept-Language, Cookie, Accept-Encoding + X-Backend: + - web-i-00190b17db4987e5f + X-Content-Type-Options: + - nosniff + X-RTD-Domain: + - proj.org + X-RTD-Project: + - osgeo-proj + X-RTD-Project-Method: + - custom_domain + X-RTD-Redirect: + - user + X-RTD-Version-Method: + - path + X-Served: + - Proxito-404 + alt-svc: + - h3=":443"; ma=86400 + status: + code: 302 + message: Found +- request: + body: null + headers: + Connection: + - close + Host: + - proj.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://proj.org/en/9.3/schemas/v0.5/projjson.schema.json + response: + body: + string: "{\n \"$id\": \"https://proj.org/schemas/v0.5/projjson.schema.json\",\n + \ \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"description\": + \"Schema for PROJJSON (v0.5)\",\n \"$comment\": \"This file exists both in + data/ and in schemas/vXXX/. Keep both in sync. And if changing the value of + $id, change PROJJSON_DEFAULT_VERSION accordingly in io.cpp\",\n\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/crs\" },\n { \"$ref\": \"#/definitions/datum\" + },\n { \"$ref\": \"#/definitions/datum_ensemble\" },\n { \"$ref\": \"#/definitions/ellipsoid\" + },\n { \"$ref\": \"#/definitions/prime_meridian\" },\n { \"$ref\": \"#/definitions/single_operation\" + },\n { \"$ref\": \"#/definitions/concatenated_operation\" }\n ],\n\n \"definitions\": + {\n\n \"abridged_transformation\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"AbridgedTransformation\"] },\n \"name\": { + \"type\": \"string\" },\n \"method\": { \"$ref\": \"#/definitions/method\" + },\n \"parameters\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/parameter_value\" }\n },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"method\", \"parameters\" ],\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"axis\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"Axis\"] },\n \"name\": { \"type\": \"string\" },\n \"abbreviation\": + { \"type\": \"string\" },\n \"direction\": { \"type\": \"string\",\n + \ \"enum\": [ \"north\",\n \"northNorthEast\",\n + \ \"northEast\",\n \"eastNorthEast\",\n + \ \"east\",\n \"eastSouthEast\",\n + \ \"southEast\",\n \"southSouthEast\",\n + \ \"south\",\n \"southSouthWest\",\n + \ \"southWest\",\n \"westSouthWest\",\n + \ \"west\",\n \"westNorthWest\",\n + \ \"northWest\",\n \"northNorthWest\",\n + \ \"up\",\n \"down\",\n + \ \"geocentricX\",\n \"geocentricY\",\n + \ \"geocentricZ\",\n \"columnPositive\",\n + \ \"columnNegative\",\n \"rowPositive\",\n + \ \"rowNegative\",\n \"displayRight\",\n + \ \"displayLeft\",\n \"displayUp\",\n + \ \"displayDown\",\n \"forward\",\n + \ \"aft\",\n \"port\",\n + \ \"starboard\",\n \"clockwise\",\n + \ \"counterClockwise\",\n \"towards\",\n + \ \"awayFrom\",\n \"future\",\n + \ \"past\",\n \"unspecified\" + ] },\n \"meridian\": { \"$ref\": \"#/definitions/meridian\" },\n \"unit\": + { \"$ref\": \"#/definitions/unit\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\", \"abbreviation\", \"direction\" ],\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n },\n\n \"bbox\": {\n \"type\": \"object\",\n \"properties\": + {\n \"east_longitude\": { \"type\": \"number\" },\n \"west_longitude\": + { \"type\": \"number\" },\n \"south_latitude\": { \"type\": \"number\" + },\n \"north_latitude\": { \"type\": \"number\" }\n },\n \"required\" + : [ \"east_longitude\", \"west_longitude\",\n \"south_latitude\", + \"north_latitude\" ],\n \"additionalProperties\": false\n },\n\n \"bound_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"$schema\" : { \"type\": \"string\" + },\n \"type\": { \"type\": \"string\", \"enum\": [\"BoundCRS\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"source_crs\": { \"$ref\": + \"#/definitions/crs\" },\n \"target_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"transformation\": { \"$ref\": \"#/definitions/abridged_transformation\" + },\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"source_crs\", \"target_crs\", \"transformation\" ],\n + \ \"additionalProperties\": false\n },\n\n \"compound_crs\": {\n + \ \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"CompoundCRS\"] },\n \"name\": { \"type\": \"string\" },\n \"components\": + \ {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/crs\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"components\" ],\n + \ \"additionalProperties\": false\n },\n\n \"concatenated_operation\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"ConcatenatedOperation\"] },\n \"name\": { \"type\": \"string\" },\n + \ \"source_crs\": { \"$ref\": \"#/definitions/crs\" },\n \"target_crs\": + { \"$ref\": \"#/definitions/crs\" },\n \"steps\": {\n \"type\": + \"array\",\n \"items\": { \"$ref\": \"#/definitions/single_operation\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"source_crs\", \"target_crs\", + \"steps\" ],\n \"additionalProperties\": false\n },\n\n \"conversion\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"Conversion\"] },\n \"name\": { \"type\": \"string\" },\n \"method\": + { \"$ref\": \"#/definitions/method\" },\n \"parameters\": {\n \"type\": + \"array\",\n \"items\": { \"$ref\": \"#/definitions/parameter_value\" + }\n },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\", + \"method\" ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"coordinate_system\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"CoordinateSystem\"] },\n \"name\": { \"type\": \"string\" },\n \"subtype\": + { \"type\": \"string\",\n \"enum\": [\"Cartesian\",\n + \ \"spherical\",\n \"ellipsoidal\",\n + \ \"vertical\",\n \"ordinal\",\n + \ \"parametric\",\n \"TemporalDateTime\",\n + \ \"TemporalCount\",\n \"TemporalMeasure\"] + \ },\n \"axis\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/axis\" }\n },\n \"id\": { \"$ref\": + \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"subtype\", \"axis\" ],\n \"allOf\": + [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"crs\": {\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/bound_crs\" },\n { \"$ref\": + \"#/definitions/compound_crs\" },\n { \"$ref\": \"#/definitions/derived_engineering_crs\" + },\n { \"$ref\": \"#/definitions/derived_geodetic_crs\" },\n { + \"$ref\": \"#/definitions/derived_parametric_crs\" },\n { \"$ref\": + \"#/definitions/derived_projected_crs\" },\n { \"$ref\": \"#/definitions/derived_temporal_crs\" + },\n { \"$ref\": \"#/definitions/derived_vertical_crs\" },\n { + \"$ref\": \"#/definitions/engineering_crs\" },\n { \"$ref\": \"#/definitions/geodetic_crs\" + },\n { \"$ref\": \"#/definitions/parametric_crs\" },\n { \"$ref\": + \"#/definitions/projected_crs\" },\n { \"$ref\": \"#/definitions/temporal_crs\" + },\n { \"$ref\": \"#/definitions/vertical_crs\" }\n ]\n },\n\n + \ \"datum\": {\n \"oneOf\": [\n { \"$ref\": \"#/definitions/geodetic_reference_frame\" + },\n { \"$ref\": \"#/definitions/vertical_reference_frame\" },\n { + \"$ref\": \"#/definitions/dynamic_geodetic_reference_frame\" },\n { + \"$ref\": \"#/definitions/dynamic_vertical_reference_frame\" },\n { + \"$ref\": \"#/definitions/temporal_datum\" },\n { \"$ref\": \"#/definitions/parametric_datum\" + },\n { \"$ref\": \"#/definitions/engineering_datum\" }\n ]\n },\n\n + \ \"datum_ensemble\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"DatumEnsemble\"] },\n \"name\": { \"type\": + \"string\" },\n \"members\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": { \"type\": \"string\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": + \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\" ],\n \"allOf\": [\n { \"$ref\": + \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n }\n },\n \"ellipsoid\": { \"$ref\": \"#/definitions/ellipsoid\" + },\n \"accuracy\": { \"type\": \"string\" },\n \"id\": { \"$ref\": + \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"members\", \"accuracy\" ],\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"deformation_model\": + {\n \"description\": \"Association to a PointMotionOperation\",\n \"type\": + \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" }\n },\n \"required\" + : [ \"name\" ],\n \"additionalProperties\": false\n },\n\n \"derived_engineering_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\",\n + \ \"enum\": [\"DerivedEngineeringCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": \"#/definitions/engineering_crs\" + },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" },\n + \ \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_geodetic_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedGeodeticCRS\",\n + \ \"DerivedGeographicCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": \"#/definitions/geodetic_crs\" + },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" },\n + \ \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_parametric_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedParametricCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/parametric_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_projected_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedProjectedCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/projected_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_temporal_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedTemporalCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/temporal_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_vertical_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedVerticalCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/vertical_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"dynamic_geodetic_reference_frame\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"DynamicGeodeticReferenceFrame\"] + },\n \"name\": {},\n \"anchor\": {},\n \"ellipsoid\": + {},\n \"prime_meridian\": {},\n \"frame_reference_epoch\": { + \"type\": \"number\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"ellipsoid\", \"frame_reference_epoch\" ],\n \"additionalProperties\": + false\n },\n\n \"dynamic_vertical_reference_frame\": {\n \"type\": + \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"DynamicVerticalReferenceFrame\"] },\n \"name\": {},\n \"anchor\": + {},\n \"frame_reference_epoch\": { \"type\": \"number\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"frame_reference_epoch\" ],\n \"additionalProperties\": + false\n },\n\n \"ellipsoid\": {\n \"type\": \"object\",\n \"oneOf\":[\n + \ {\n \"properties\": {\n \"$schema\" : { \"type\": + \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] + },\n \"name\": { \"type\": \"string\" },\n \"semi_major_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"semi_minor_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"semi_major_axis\", + \"semi_minor_axis\" ],\n \"additionalProperties\": false\n },\n + \ {\n \"properties\": {\n \"$schema\" : { \"type\": + \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] + },\n \"name\": { \"type\": \"string\" },\n \"semi_major_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"inverse_flattening\": + { \"type\": \"number\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n + \ \"required\" : [ \"name\", \"semi_major_axis\", \"inverse_flattening\" + ],\n \"additionalProperties\": false\n },\n {\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": + { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] },\n \"name\": + { \"type\": \"string\" },\n \"radius\": { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\", \"radius\" ],\n \"additionalProperties\": false\n }\n + \ ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ]\n },\n\n \"engineering_crs\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"EngineeringCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"datum\": { \"$ref\": + \"#/definitions/engineering_datum\" },\n \"coordinate_system\": { \"$ref\": + \"#/definitions/coordinate_system\" },\n \"$schema\" : {},\n \"scope\": + {},\n \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"datum\" ],\n \"additionalProperties\": false\n },\n\n \"engineering_datum\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"EngineeringDatum\"] },\n \"name\": { \"type\": \"string\" },\n \"anchor\": + { \"type\": \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\" + ],\n \"additionalProperties\": false\n },\n\n \"geodetic_crs\": + {\n \"type\": \"object\",\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"GeodeticCRS\", \"GeographicCRS\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"datum\": {\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/geodetic_reference_frame\" + },\n { \"$ref\": \"#/definitions/dynamic_geodetic_reference_frame\" + }\n ]\n },\n \"datum_ensemble\": { \"$ref\": \"#/definitions/datum_ensemble\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"deformation_models\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/deformation_model\" }\n },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\" ],\n \"description\": \"One and only + one of datum and datum_ensemble must be provided\",\n \"allOf\": [\n + \ { \"$ref\": \"#/definitions/object_usage\" },\n { \"$ref\": + \"#/definitions/one_and_only_one_of_datum_or_datum_ensemble\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"geodetic_reference_frame\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"GeodeticReferenceFrame\"] },\n \"name\": { \"type\": \"string\" + },\n \"anchor\": { \"type\": \"string\" },\n \"ellipsoid\": + { \"$ref\": \"#/definitions/ellipsoid\" },\n \"prime_meridian\": { + \"$ref\": \"#/definitions/prime_meridian\" },\n \"$schema\" : {},\n + \ \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"ellipsoid\" ],\n \"additionalProperties\": false\n },\n\n \"geoid_model\": + {\n \"type\": \"object\",\n \"properties\": {\n \"name\": + { \"type\": \"string\" },\n \"interpolation_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" }\n },\n \"required\" + : [ \"name\" ],\n \"additionalProperties\": false\n },\n\n \"id\": + {\n \"type\": \"object\",\n \"properties\": {\n \"authority\": + { \"type\": \"string\" },\n \"code\": {\n \"oneOf\": [ { \"type\": + \"string\" }, { \"type\": \"integer\" } ]\n },\n \"version\": + {\n \"oneOf\": [ { \"type\": \"string\" }, { \"type\": \"number\" + } ]\n },\n \"authority_citation\": { \"type\": \"string\" },\n + \ \"uri\": { \"type\": \"string\" }\n },\n \"required\" : + [ \"authority\", \"code\" ],\n \"additionalProperties\": false\n },\n\n + \ \"ids\": {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/id\" + }\n },\n\n \"method\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"OperationMethod\"]},\n \"name\": { \"type\": + \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\" + ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"id_ids_mutually_exclusive\": + {\n \"not\": {\n \"type\": \"object\",\n \"required\": + [ \"id\", \"ids\" ]\n }\n },\n\n \"one_and_only_one_of_datum_or_datum_ensemble\": + {\n \"allOf\": [\n {\n \"not\": {\n \"type\": + \"object\",\n \"required\": [ \"datum\", \"datum_ensemble\" + ]\n }\n },\n {\n \"oneOf\": [\n { + \"type\": \"object\", \"required\": [\"datum\"] },\n { \"type\": + \"object\", \"required\": [\"datum_ensemble\"] }\n ]\n }\n + \ ]\n },\n\n \"meridian\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"Meridian\"] },\n \"longitude\": { \"$ref\": + \"#/definitions/value_in_degree_or_value_and_unit\" },\n \"id\": { + \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"longitude\" ],\n \"allOf\": [\n + \ { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"object_usage\": {\n + \ \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"scope\": + { \"type\": \"string\" },\n \"area\": { \"type\": \"string\" },\n + \ \"bbox\": { \"$ref\": \"#/definitions/bbox\" },\n \"vertical_extent\": + { \"$ref\": \"#/definitions/vertical_extent\" },\n \"temporal_extent\": + { \"$ref\": \"#/definitions/temporal_extent\" },\n \"remarks\": + { \"type\": \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"usages\": + { \"$ref\": \"#/definitions/usages\" },\n \"remarks\": { \"type\": + \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ]\n }\n + \ ]\n },\n\n \"parameter_value\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"$schema\" : { \"type\": \"string\" },\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"ParameterValue\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"value\": {\n \"oneOf\": + [\n { \"type\": \"string\" },\n { \"type\": \"number\" + }\n ]\n },\n \"unit\": { \"$ref\": \"#/definitions/unit\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\", + \"value\" ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"parametric_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"ParametricCRS\"] },\n \"name\": { \"type\": \"string\" },\n \"datum\": + { \"$ref\": \"#/definitions/parametric_datum\" },\n \"coordinate_system\": + { \"$ref\": \"#/definitions/coordinate_system\" },\n \"$schema\" : + {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"datum\" ],\n \"additionalProperties\": + false\n },\n\n \"parametric_datum\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"ParametricDatum\"] + },\n \"name\": { \"type\": \"string\" },\n \"anchor\": { \"type\": + \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\" ],\n \"additionalProperties\": + false\n },\n\n \"point_motion_operation\": {\n \"$comment\": \"Not + implemented in PROJ (at least as of PROJ 9.1)\",\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"PointMotionOperation\"] + },\n \"name\": { \"type\": \"string\" },\n \"source_crs\": { + \"$ref\": \"#/definitions/crs\" },\n \"method\": { \"$ref\": \"#/definitions/method\" + },\n \"parameters\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/parameter_value\" }\n },\n \"accuracy\": + { \"type\": \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"source_crs\", \"method\", \"parameters\" ],\n \"additionalProperties\": + false\n },\n\n \"prime_meridian\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"$schema\" : { \"type\": \"string\" },\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"PrimeMeridian\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"longitude\": { \"$ref\": + \"#/definitions/value_in_degree_or_value_and_unit\" },\n \"id\": { + \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\" ],\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n },\n\n \"single_operation\": {\n \"oneOf\": [\n { + \"$ref\": \"#/definitions/conversion\" },\n { \"$ref\": \"#/definitions/transformation\" + },\n { \"$ref\": \"#/definitions/point_motion_operation\" }\n ]\n + \ },\n\n \"projected_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"ProjectedCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/geodetic_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"temporal_crs\": {\n \"type\": \"object\",\n \"allOf\": [{ + \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"TemporalCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"datum\": { \"$ref\": \"#/definitions/temporal_datum\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"datum\" ],\n \"additionalProperties\": + false\n },\n\n \"temporal_datum\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"TemporalDatum\"] + },\n \"name\": { \"type\": \"string\" },\n \"calendar\": { \"type\": + \"string\" },\n \"time_origin\": { \"type\": \"string\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"calendar\" ],\n \"additionalProperties\": + false\n },\n\n \"temporal_extent\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"start\": { \"type\": \"string\" },\n \"end\": + { \"type\": \"string\" }\n },\n \"required\" : [ \"start\", \"end\" + ],\n \"additionalProperties\": false\n },\n\n \"transformation\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"Transformation\"] },\n \"name\": { \"type\": \"string\" },\n \"source_crs\": + { \"$ref\": \"#/definitions/crs\" },\n \"target_crs\": { \"$ref\": + \"#/definitions/crs\" },\n \"interpolation_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"method\": { \"$ref\": \"#/definitions/method\" },\n \"parameters\": + {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/parameter_value\" + }\n },\n \"accuracy\": { \"type\": \"string\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"source_crs\", \"target_crs\", \"method\", + \"parameters\" ],\n \"additionalProperties\": false\n },\n\n \"unit\": + {\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"enum\": + [\"metre\", \"degree\", \"unity\"]\n },\n {\n \"type\": \"object\",\n + \ \"properties\": {\n \"type\": { \"type\": \"string\",\n \"enum\": + [\"LinearUnit\", \"AngularUnit\", \"ScaleUnit\",\n \"TimeUnit\", + \"ParametricUnit\", \"Unit\"] },\n \"name\": { \"type\": \"string\" + },\n \"conversion_factor\": { \"type\": \"number\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"type\", \"name\" ],\n \"allOf\": + [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n + \ ],\n \"additionalProperties\": false\n }\n ]\n + \ },\n\n \"usages\": {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": {\n \"scope\": + { \"type\": \"string\" },\n \"area\": { \"type\": \"string\" },\n + \ \"bbox\": { \"$ref\": \"#/definitions/bbox\" },\n \"vertical_extent\": + { \"$ref\": \"#/definitions/vertical_extent\" },\n \"temporal_extent\": + { \"$ref\": \"#/definitions/temporal_extent\" }\n },\n \"additionalProperties\": + false\n }\n },\n\n \"value_and_unit\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"value\": { \"type\": \"number\" },\n \"unit\": + { \"$ref\": \"#/definitions/unit\" }\n },\n \"required\" : [ \"value\", + \"unit\" ],\n \"additionalProperties\": false\n },\n\n \"value_in_degree_or_value_and_unit\": + {\n \"oneOf\": [\n { \"type\": \"number\" },\n { \"$ref\": + \"#/definitions/value_and_unit\" }\n ]\n },\n\n \"value_in_metre_or_value_and_unit\": + {\n \"oneOf\": [\n { \"type\": \"number\" },\n { \"$ref\": + \"#/definitions/value_and_unit\" }\n ]\n },\n\n \"vertical_crs\": + {\n \"type\": \"object\",\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"VerticalCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"datum\": {\n \"oneOf\": [\n + \ { \"$ref\": \"#/definitions/vertical_reference_frame\" },\n + \ { \"$ref\": \"#/definitions/dynamic_vertical_reference_frame\" + }\n ]\n },\n \"datum_ensemble\": { \"$ref\": \"#/definitions/datum_ensemble\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"geoid_model\": { \"$ref\": \"#/definitions/geoid_model\" },\n + \ \"geoid_models\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/geoid_model\" }\n },\n \"deformation_models\": + {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/deformation_model\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\"],\n \"description\": + \"One and only one of datum and datum_ensemble must be provided\",\n \"allOf\": + [\n { \"$ref\": \"#/definitions/object_usage\" },\n { \"$ref\": + \"#/definitions/one_and_only_one_of_datum_or_datum_ensemble\" },\n {\n + \ \"not\": {\n \"type\": \"object\",\n \"required\": + [ \"geoid_model\", \"geoid_models\" ]\n }\n }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"vertical_extent\": + {\n \"type\": \"object\",\n \"properties\": {\n \"minimum\": + { \"type\": \"number\" },\n \"maximum\": { \"type\": \"number\" },\n + \ \"unit\": { \"$ref\": \"#/definitions/unit\" }\n },\n \"required\" + : [ \"minimum\", \"maximum\" ],\n \"additionalProperties\": false\n },\n\n + \ \"vertical_reference_frame\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"VerticalReferenceFrame\"] + },\n \"name\": { \"type\": \"string\" },\n \"anchor\": { \"type\": + \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\" ],\n \"additionalProperties\": + false\n }\n\n }\n}\n" + headers: + Access-Control-Allow-Methods: + - HEAD, OPTIONS, GET + Access-Control-Allow-Origin: + - '*' + Age: + - '510' + CDN-Cache-Control: + - public + CF-Cache-Status: + - HIT + CF-Ray: + - 80d6cabccd201811-EWR + Cache-Control: + - max-age=1200 + Connection: + - close + Content-Type: + - application/json + Date: + - Wed, 27 Sep 2023 21:20:40 GMT + ETag: + - W/"567e3992b5fd3188af907a4cdc4781b3" + Last-Modified: + - Sun, 03 Sep 2023 09:10:52 GMT + Referrer-Policy: + - no-referrer-when-downgrade + Server: + - cloudflare + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + X-Backend: + - web-i-04a0936e538e90895 + X-Content-Type-Options: + - nosniff + X-RTD-Domain: + - proj.org + X-RTD-Path: + - /proxito/html/osgeo-proj/9.3/schemas/v0.5/projjson.schema.json + X-RTD-Project: + - osgeo-proj + X-RTD-Project-Method: + - custom_domain + X-RTD-Version: + - '9.3' + X-RTD-Version-Method: + - path + X-Served: + - Nginx-Proxito-Sendfile + alt-svc: + - h3=":443"; ma=86400 + x-amz-id-2: + - UBlptQ6CoU1gOcZjt2RSY1lr3wEiR3bA6BF4Ck7ffEb2Gvy2wrxxhJ3mNAJRYDJ1sJ9j4auUgjI= + x-amz-meta-mtime: + - '1693732240.238196845' + x-amz-request-id: + - 7M5G3K3ZTHPYERHZ + x-amz-server-side-encryption: + - AES256 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_projection/ProjectionTest.test_validate_proj.yaml b/tests/extensions/cassettes/test_projection/ProjectionTest.test_validate_proj.yaml new file mode 100644 index 000000000..4f921dbce --- /dev/null +++ b/tests/extensions/cassettes/test_projection/ProjectionTest.test_validate_proj.yaml @@ -0,0 +1,898 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '539' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:40 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 35ec1d49a96d32f947e0f17ed131f279137a977a + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849641.647622,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"$comment\": \"This schema succeeds if the proj: fields + are not used at all, please keep this in mind.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n }\n ]\n },\n + \ {\n \"$comment\": \"This is the schema for STAC Collections.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Collection\"\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"proj:epsg\":{\n \"title\":\"EPSG + code\",\n \"type\":[\n \"integer\",\n \"null\"\n + \ ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.5/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '539' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4369' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:40 GMT + ETag: + - '"63e6651b-1111"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 34b0f22da866603cd41b6470bbe4c2eeedd1eb0a + X-GitHub-Request-Id: + - 303E:20A2:70F70E:9F20FD:65149A8D + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849641.744098,VS0,VE0 + expires: + - Wed, 27 Sep 2023 21:21:41 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - proj.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://proj.org/schemas/v0.5/projjson.schema.json + response: + body: + string: '' + headers: + Age: + - '510' + CDN-Cache-Control: + - public + CF-Cache-Status: + - HIT + CF-Ray: + - 80d6cabf7ec20f87-EWR + Cache-Control: + - max-age=1200 + Connection: + - close + Content-Language: + - en + Content-Length: + - '0' + Content-Type: + - text/html; charset=utf-8 + Cross-Origin-Opener-Policy: + - same-origin + Date: + - Wed, 27 Sep 2023 21:20:40 GMT + Location: + - https://proj.org/en/9.3/schemas/v0.5/projjson.schema.json + Referrer-Policy: + - no-referrer-when-downgrade + Server: + - cloudflare + Vary: + - Accept-Language, Cookie, Accept-Encoding + X-Backend: + - web-i-00190b17db4987e5f + X-Content-Type-Options: + - nosniff + X-RTD-Domain: + - proj.org + X-RTD-Project: + - osgeo-proj + X-RTD-Project-Method: + - custom_domain + X-RTD-Redirect: + - user + X-RTD-Version-Method: + - path + X-Served: + - Proxito-404 + alt-svc: + - h3=":443"; ma=86400 + status: + code: 302 + message: Found +- request: + body: null + headers: + Connection: + - close + Host: + - proj.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://proj.org/en/9.3/schemas/v0.5/projjson.schema.json + response: + body: + string: "{\n \"$id\": \"https://proj.org/schemas/v0.5/projjson.schema.json\",\n + \ \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"description\": + \"Schema for PROJJSON (v0.5)\",\n \"$comment\": \"This file exists both in + data/ and in schemas/vXXX/. Keep both in sync. And if changing the value of + $id, change PROJJSON_DEFAULT_VERSION accordingly in io.cpp\",\n\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/crs\" },\n { \"$ref\": \"#/definitions/datum\" + },\n { \"$ref\": \"#/definitions/datum_ensemble\" },\n { \"$ref\": \"#/definitions/ellipsoid\" + },\n { \"$ref\": \"#/definitions/prime_meridian\" },\n { \"$ref\": \"#/definitions/single_operation\" + },\n { \"$ref\": \"#/definitions/concatenated_operation\" }\n ],\n\n \"definitions\": + {\n\n \"abridged_transformation\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"AbridgedTransformation\"] },\n \"name\": { + \"type\": \"string\" },\n \"method\": { \"$ref\": \"#/definitions/method\" + },\n \"parameters\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/parameter_value\" }\n },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"method\", \"parameters\" ],\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"axis\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"Axis\"] },\n \"name\": { \"type\": \"string\" },\n \"abbreviation\": + { \"type\": \"string\" },\n \"direction\": { \"type\": \"string\",\n + \ \"enum\": [ \"north\",\n \"northNorthEast\",\n + \ \"northEast\",\n \"eastNorthEast\",\n + \ \"east\",\n \"eastSouthEast\",\n + \ \"southEast\",\n \"southSouthEast\",\n + \ \"south\",\n \"southSouthWest\",\n + \ \"southWest\",\n \"westSouthWest\",\n + \ \"west\",\n \"westNorthWest\",\n + \ \"northWest\",\n \"northNorthWest\",\n + \ \"up\",\n \"down\",\n + \ \"geocentricX\",\n \"geocentricY\",\n + \ \"geocentricZ\",\n \"columnPositive\",\n + \ \"columnNegative\",\n \"rowPositive\",\n + \ \"rowNegative\",\n \"displayRight\",\n + \ \"displayLeft\",\n \"displayUp\",\n + \ \"displayDown\",\n \"forward\",\n + \ \"aft\",\n \"port\",\n + \ \"starboard\",\n \"clockwise\",\n + \ \"counterClockwise\",\n \"towards\",\n + \ \"awayFrom\",\n \"future\",\n + \ \"past\",\n \"unspecified\" + ] },\n \"meridian\": { \"$ref\": \"#/definitions/meridian\" },\n \"unit\": + { \"$ref\": \"#/definitions/unit\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\", \"abbreviation\", \"direction\" ],\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n },\n\n \"bbox\": {\n \"type\": \"object\",\n \"properties\": + {\n \"east_longitude\": { \"type\": \"number\" },\n \"west_longitude\": + { \"type\": \"number\" },\n \"south_latitude\": { \"type\": \"number\" + },\n \"north_latitude\": { \"type\": \"number\" }\n },\n \"required\" + : [ \"east_longitude\", \"west_longitude\",\n \"south_latitude\", + \"north_latitude\" ],\n \"additionalProperties\": false\n },\n\n \"bound_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"$schema\" : { \"type\": \"string\" + },\n \"type\": { \"type\": \"string\", \"enum\": [\"BoundCRS\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"source_crs\": { \"$ref\": + \"#/definitions/crs\" },\n \"target_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"transformation\": { \"$ref\": \"#/definitions/abridged_transformation\" + },\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"source_crs\", \"target_crs\", \"transformation\" ],\n + \ \"additionalProperties\": false\n },\n\n \"compound_crs\": {\n + \ \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"CompoundCRS\"] },\n \"name\": { \"type\": \"string\" },\n \"components\": + \ {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/crs\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"components\" ],\n + \ \"additionalProperties\": false\n },\n\n \"concatenated_operation\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"ConcatenatedOperation\"] },\n \"name\": { \"type\": \"string\" },\n + \ \"source_crs\": { \"$ref\": \"#/definitions/crs\" },\n \"target_crs\": + { \"$ref\": \"#/definitions/crs\" },\n \"steps\": {\n \"type\": + \"array\",\n \"items\": { \"$ref\": \"#/definitions/single_operation\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"source_crs\", \"target_crs\", + \"steps\" ],\n \"additionalProperties\": false\n },\n\n \"conversion\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"Conversion\"] },\n \"name\": { \"type\": \"string\" },\n \"method\": + { \"$ref\": \"#/definitions/method\" },\n \"parameters\": {\n \"type\": + \"array\",\n \"items\": { \"$ref\": \"#/definitions/parameter_value\" + }\n },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\", + \"method\" ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"coordinate_system\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"CoordinateSystem\"] },\n \"name\": { \"type\": \"string\" },\n \"subtype\": + { \"type\": \"string\",\n \"enum\": [\"Cartesian\",\n + \ \"spherical\",\n \"ellipsoidal\",\n + \ \"vertical\",\n \"ordinal\",\n + \ \"parametric\",\n \"TemporalDateTime\",\n + \ \"TemporalCount\",\n \"TemporalMeasure\"] + \ },\n \"axis\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/axis\" }\n },\n \"id\": { \"$ref\": + \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"subtype\", \"axis\" ],\n \"allOf\": + [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"crs\": {\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/bound_crs\" },\n { \"$ref\": + \"#/definitions/compound_crs\" },\n { \"$ref\": \"#/definitions/derived_engineering_crs\" + },\n { \"$ref\": \"#/definitions/derived_geodetic_crs\" },\n { + \"$ref\": \"#/definitions/derived_parametric_crs\" },\n { \"$ref\": + \"#/definitions/derived_projected_crs\" },\n { \"$ref\": \"#/definitions/derived_temporal_crs\" + },\n { \"$ref\": \"#/definitions/derived_vertical_crs\" },\n { + \"$ref\": \"#/definitions/engineering_crs\" },\n { \"$ref\": \"#/definitions/geodetic_crs\" + },\n { \"$ref\": \"#/definitions/parametric_crs\" },\n { \"$ref\": + \"#/definitions/projected_crs\" },\n { \"$ref\": \"#/definitions/temporal_crs\" + },\n { \"$ref\": \"#/definitions/vertical_crs\" }\n ]\n },\n\n + \ \"datum\": {\n \"oneOf\": [\n { \"$ref\": \"#/definitions/geodetic_reference_frame\" + },\n { \"$ref\": \"#/definitions/vertical_reference_frame\" },\n { + \"$ref\": \"#/definitions/dynamic_geodetic_reference_frame\" },\n { + \"$ref\": \"#/definitions/dynamic_vertical_reference_frame\" },\n { + \"$ref\": \"#/definitions/temporal_datum\" },\n { \"$ref\": \"#/definitions/parametric_datum\" + },\n { \"$ref\": \"#/definitions/engineering_datum\" }\n ]\n },\n\n + \ \"datum_ensemble\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"DatumEnsemble\"] },\n \"name\": { \"type\": + \"string\" },\n \"members\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": { \"type\": \"string\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": + \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\" ],\n \"allOf\": [\n { \"$ref\": + \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n }\n },\n \"ellipsoid\": { \"$ref\": \"#/definitions/ellipsoid\" + },\n \"accuracy\": { \"type\": \"string\" },\n \"id\": { \"$ref\": + \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"members\", \"accuracy\" ],\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"deformation_model\": + {\n \"description\": \"Association to a PointMotionOperation\",\n \"type\": + \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" }\n },\n \"required\" + : [ \"name\" ],\n \"additionalProperties\": false\n },\n\n \"derived_engineering_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\",\n + \ \"enum\": [\"DerivedEngineeringCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": \"#/definitions/engineering_crs\" + },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" },\n + \ \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_geodetic_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedGeodeticCRS\",\n + \ \"DerivedGeographicCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": \"#/definitions/geodetic_crs\" + },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" },\n + \ \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_parametric_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedParametricCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/parametric_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_projected_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedProjectedCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/projected_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_temporal_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedTemporalCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/temporal_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_vertical_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedVerticalCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/vertical_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"dynamic_geodetic_reference_frame\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"DynamicGeodeticReferenceFrame\"] + },\n \"name\": {},\n \"anchor\": {},\n \"ellipsoid\": + {},\n \"prime_meridian\": {},\n \"frame_reference_epoch\": { + \"type\": \"number\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"ellipsoid\", \"frame_reference_epoch\" ],\n \"additionalProperties\": + false\n },\n\n \"dynamic_vertical_reference_frame\": {\n \"type\": + \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"DynamicVerticalReferenceFrame\"] },\n \"name\": {},\n \"anchor\": + {},\n \"frame_reference_epoch\": { \"type\": \"number\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"frame_reference_epoch\" ],\n \"additionalProperties\": + false\n },\n\n \"ellipsoid\": {\n \"type\": \"object\",\n \"oneOf\":[\n + \ {\n \"properties\": {\n \"$schema\" : { \"type\": + \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] + },\n \"name\": { \"type\": \"string\" },\n \"semi_major_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"semi_minor_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"semi_major_axis\", + \"semi_minor_axis\" ],\n \"additionalProperties\": false\n },\n + \ {\n \"properties\": {\n \"$schema\" : { \"type\": + \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] + },\n \"name\": { \"type\": \"string\" },\n \"semi_major_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"inverse_flattening\": + { \"type\": \"number\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n + \ \"required\" : [ \"name\", \"semi_major_axis\", \"inverse_flattening\" + ],\n \"additionalProperties\": false\n },\n {\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": + { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] },\n \"name\": + { \"type\": \"string\" },\n \"radius\": { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\", \"radius\" ],\n \"additionalProperties\": false\n }\n + \ ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ]\n },\n\n \"engineering_crs\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"EngineeringCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"datum\": { \"$ref\": + \"#/definitions/engineering_datum\" },\n \"coordinate_system\": { \"$ref\": + \"#/definitions/coordinate_system\" },\n \"$schema\" : {},\n \"scope\": + {},\n \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"datum\" ],\n \"additionalProperties\": false\n },\n\n \"engineering_datum\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"EngineeringDatum\"] },\n \"name\": { \"type\": \"string\" },\n \"anchor\": + { \"type\": \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\" + ],\n \"additionalProperties\": false\n },\n\n \"geodetic_crs\": + {\n \"type\": \"object\",\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"GeodeticCRS\", \"GeographicCRS\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"datum\": {\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/geodetic_reference_frame\" + },\n { \"$ref\": \"#/definitions/dynamic_geodetic_reference_frame\" + }\n ]\n },\n \"datum_ensemble\": { \"$ref\": \"#/definitions/datum_ensemble\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"deformation_models\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/deformation_model\" }\n },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\" ],\n \"description\": \"One and only + one of datum and datum_ensemble must be provided\",\n \"allOf\": [\n + \ { \"$ref\": \"#/definitions/object_usage\" },\n { \"$ref\": + \"#/definitions/one_and_only_one_of_datum_or_datum_ensemble\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"geodetic_reference_frame\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"GeodeticReferenceFrame\"] },\n \"name\": { \"type\": \"string\" + },\n \"anchor\": { \"type\": \"string\" },\n \"ellipsoid\": + { \"$ref\": \"#/definitions/ellipsoid\" },\n \"prime_meridian\": { + \"$ref\": \"#/definitions/prime_meridian\" },\n \"$schema\" : {},\n + \ \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"ellipsoid\" ],\n \"additionalProperties\": false\n },\n\n \"geoid_model\": + {\n \"type\": \"object\",\n \"properties\": {\n \"name\": + { \"type\": \"string\" },\n \"interpolation_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" }\n },\n \"required\" + : [ \"name\" ],\n \"additionalProperties\": false\n },\n\n \"id\": + {\n \"type\": \"object\",\n \"properties\": {\n \"authority\": + { \"type\": \"string\" },\n \"code\": {\n \"oneOf\": [ { \"type\": + \"string\" }, { \"type\": \"integer\" } ]\n },\n \"version\": + {\n \"oneOf\": [ { \"type\": \"string\" }, { \"type\": \"number\" + } ]\n },\n \"authority_citation\": { \"type\": \"string\" },\n + \ \"uri\": { \"type\": \"string\" }\n },\n \"required\" : + [ \"authority\", \"code\" ],\n \"additionalProperties\": false\n },\n\n + \ \"ids\": {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/id\" + }\n },\n\n \"method\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"OperationMethod\"]},\n \"name\": { \"type\": + \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\" + ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"id_ids_mutually_exclusive\": + {\n \"not\": {\n \"type\": \"object\",\n \"required\": + [ \"id\", \"ids\" ]\n }\n },\n\n \"one_and_only_one_of_datum_or_datum_ensemble\": + {\n \"allOf\": [\n {\n \"not\": {\n \"type\": + \"object\",\n \"required\": [ \"datum\", \"datum_ensemble\" + ]\n }\n },\n {\n \"oneOf\": [\n { + \"type\": \"object\", \"required\": [\"datum\"] },\n { \"type\": + \"object\", \"required\": [\"datum_ensemble\"] }\n ]\n }\n + \ ]\n },\n\n \"meridian\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"Meridian\"] },\n \"longitude\": { \"$ref\": + \"#/definitions/value_in_degree_or_value_and_unit\" },\n \"id\": { + \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"longitude\" ],\n \"allOf\": [\n + \ { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"object_usage\": {\n + \ \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"scope\": + { \"type\": \"string\" },\n \"area\": { \"type\": \"string\" },\n + \ \"bbox\": { \"$ref\": \"#/definitions/bbox\" },\n \"vertical_extent\": + { \"$ref\": \"#/definitions/vertical_extent\" },\n \"temporal_extent\": + { \"$ref\": \"#/definitions/temporal_extent\" },\n \"remarks\": + { \"type\": \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"usages\": + { \"$ref\": \"#/definitions/usages\" },\n \"remarks\": { \"type\": + \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ]\n }\n + \ ]\n },\n\n \"parameter_value\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"$schema\" : { \"type\": \"string\" },\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"ParameterValue\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"value\": {\n \"oneOf\": + [\n { \"type\": \"string\" },\n { \"type\": \"number\" + }\n ]\n },\n \"unit\": { \"$ref\": \"#/definitions/unit\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\", + \"value\" ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"parametric_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"ParametricCRS\"] },\n \"name\": { \"type\": \"string\" },\n \"datum\": + { \"$ref\": \"#/definitions/parametric_datum\" },\n \"coordinate_system\": + { \"$ref\": \"#/definitions/coordinate_system\" },\n \"$schema\" : + {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"datum\" ],\n \"additionalProperties\": + false\n },\n\n \"parametric_datum\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"ParametricDatum\"] + },\n \"name\": { \"type\": \"string\" },\n \"anchor\": { \"type\": + \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\" ],\n \"additionalProperties\": + false\n },\n\n \"point_motion_operation\": {\n \"$comment\": \"Not + implemented in PROJ (at least as of PROJ 9.1)\",\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"PointMotionOperation\"] + },\n \"name\": { \"type\": \"string\" },\n \"source_crs\": { + \"$ref\": \"#/definitions/crs\" },\n \"method\": { \"$ref\": \"#/definitions/method\" + },\n \"parameters\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/parameter_value\" }\n },\n \"accuracy\": + { \"type\": \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"source_crs\", \"method\", \"parameters\" ],\n \"additionalProperties\": + false\n },\n\n \"prime_meridian\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"$schema\" : { \"type\": \"string\" },\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"PrimeMeridian\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"longitude\": { \"$ref\": + \"#/definitions/value_in_degree_or_value_and_unit\" },\n \"id\": { + \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\" ],\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n },\n\n \"single_operation\": {\n \"oneOf\": [\n { + \"$ref\": \"#/definitions/conversion\" },\n { \"$ref\": \"#/definitions/transformation\" + },\n { \"$ref\": \"#/definitions/point_motion_operation\" }\n ]\n + \ },\n\n \"projected_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"ProjectedCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/geodetic_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"temporal_crs\": {\n \"type\": \"object\",\n \"allOf\": [{ + \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"TemporalCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"datum\": { \"$ref\": \"#/definitions/temporal_datum\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"datum\" ],\n \"additionalProperties\": + false\n },\n\n \"temporal_datum\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"TemporalDatum\"] + },\n \"name\": { \"type\": \"string\" },\n \"calendar\": { \"type\": + \"string\" },\n \"time_origin\": { \"type\": \"string\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"calendar\" ],\n \"additionalProperties\": + false\n },\n\n \"temporal_extent\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"start\": { \"type\": \"string\" },\n \"end\": + { \"type\": \"string\" }\n },\n \"required\" : [ \"start\", \"end\" + ],\n \"additionalProperties\": false\n },\n\n \"transformation\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"Transformation\"] },\n \"name\": { \"type\": \"string\" },\n \"source_crs\": + { \"$ref\": \"#/definitions/crs\" },\n \"target_crs\": { \"$ref\": + \"#/definitions/crs\" },\n \"interpolation_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"method\": { \"$ref\": \"#/definitions/method\" },\n \"parameters\": + {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/parameter_value\" + }\n },\n \"accuracy\": { \"type\": \"string\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"source_crs\", \"target_crs\", \"method\", + \"parameters\" ],\n \"additionalProperties\": false\n },\n\n \"unit\": + {\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"enum\": + [\"metre\", \"degree\", \"unity\"]\n },\n {\n \"type\": \"object\",\n + \ \"properties\": {\n \"type\": { \"type\": \"string\",\n \"enum\": + [\"LinearUnit\", \"AngularUnit\", \"ScaleUnit\",\n \"TimeUnit\", + \"ParametricUnit\", \"Unit\"] },\n \"name\": { \"type\": \"string\" + },\n \"conversion_factor\": { \"type\": \"number\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"type\", \"name\" ],\n \"allOf\": + [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n + \ ],\n \"additionalProperties\": false\n }\n ]\n + \ },\n\n \"usages\": {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": {\n \"scope\": + { \"type\": \"string\" },\n \"area\": { \"type\": \"string\" },\n + \ \"bbox\": { \"$ref\": \"#/definitions/bbox\" },\n \"vertical_extent\": + { \"$ref\": \"#/definitions/vertical_extent\" },\n \"temporal_extent\": + { \"$ref\": \"#/definitions/temporal_extent\" }\n },\n \"additionalProperties\": + false\n }\n },\n\n \"value_and_unit\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"value\": { \"type\": \"number\" },\n \"unit\": + { \"$ref\": \"#/definitions/unit\" }\n },\n \"required\" : [ \"value\", + \"unit\" ],\n \"additionalProperties\": false\n },\n\n \"value_in_degree_or_value_and_unit\": + {\n \"oneOf\": [\n { \"type\": \"number\" },\n { \"$ref\": + \"#/definitions/value_and_unit\" }\n ]\n },\n\n \"value_in_metre_or_value_and_unit\": + {\n \"oneOf\": [\n { \"type\": \"number\" },\n { \"$ref\": + \"#/definitions/value_and_unit\" }\n ]\n },\n\n \"vertical_crs\": + {\n \"type\": \"object\",\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"VerticalCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"datum\": {\n \"oneOf\": [\n + \ { \"$ref\": \"#/definitions/vertical_reference_frame\" },\n + \ { \"$ref\": \"#/definitions/dynamic_vertical_reference_frame\" + }\n ]\n },\n \"datum_ensemble\": { \"$ref\": \"#/definitions/datum_ensemble\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"geoid_model\": { \"$ref\": \"#/definitions/geoid_model\" },\n + \ \"geoid_models\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/geoid_model\" }\n },\n \"deformation_models\": + {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/deformation_model\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\"],\n \"description\": + \"One and only one of datum and datum_ensemble must be provided\",\n \"allOf\": + [\n { \"$ref\": \"#/definitions/object_usage\" },\n { \"$ref\": + \"#/definitions/one_and_only_one_of_datum_or_datum_ensemble\" },\n {\n + \ \"not\": {\n \"type\": \"object\",\n \"required\": + [ \"geoid_model\", \"geoid_models\" ]\n }\n }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"vertical_extent\": + {\n \"type\": \"object\",\n \"properties\": {\n \"minimum\": + { \"type\": \"number\" },\n \"maximum\": { \"type\": \"number\" },\n + \ \"unit\": { \"$ref\": \"#/definitions/unit\" }\n },\n \"required\" + : [ \"minimum\", \"maximum\" ],\n \"additionalProperties\": false\n },\n\n + \ \"vertical_reference_frame\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"VerticalReferenceFrame\"] + },\n \"name\": { \"type\": \"string\" },\n \"anchor\": { \"type\": + \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\" ],\n \"additionalProperties\": + false\n }\n\n }\n}\n" + headers: + Access-Control-Allow-Methods: + - HEAD, OPTIONS, GET + Access-Control-Allow-Origin: + - '*' + Age: + - '511' + CDN-Cache-Control: + - public + CF-Cache-Status: + - HIT + CF-Ray: + - 80d6cac05a6bc439-EWR + Cache-Control: + - max-age=1200 + Connection: + - close + Content-Type: + - application/json + Date: + - Wed, 27 Sep 2023 21:20:41 GMT + ETag: + - W/"567e3992b5fd3188af907a4cdc4781b3" + Last-Modified: + - Sun, 03 Sep 2023 09:10:52 GMT + Referrer-Policy: + - no-referrer-when-downgrade + Server: + - cloudflare + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + X-Backend: + - web-i-04a0936e538e90895 + X-Content-Type-Options: + - nosniff + X-RTD-Domain: + - proj.org + X-RTD-Path: + - /proxito/html/osgeo-proj/9.3/schemas/v0.5/projjson.schema.json + X-RTD-Project: + - osgeo-proj + X-RTD-Project-Method: + - custom_domain + X-RTD-Version: + - '9.3' + X-RTD-Version-Method: + - path + X-Served: + - Nginx-Proxito-Sendfile + alt-svc: + - h3=":443"; ma=86400 + x-amz-id-2: + - UBlptQ6CoU1gOcZjt2RSY1lr3wEiR3bA6BF4Ck7ffEb2Gvy2wrxxhJ3mNAJRYDJ1sJ9j4auUgjI= + x-amz-meta-mtime: + - '1693732240.238196845' + x-amz-request-id: + - 7M5G3K3ZTHPYERHZ + x-amz-server-side-encryption: + - AES256 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_projection/ProjectionTest.test_wkt2.yaml b/tests/extensions/cassettes/test_projection/ProjectionTest.test_wkt2.yaml new file mode 100644 index 000000000..dfc187fcd --- /dev/null +++ b/tests/extensions/cassettes/test_projection/ProjectionTest.test_wkt2.yaml @@ -0,0 +1,898 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '539' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:41 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - fcc494ee28a8b47706d5e7a0f1569bbbba7b7d0e + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21934-LGA + X-Timer: + - S1695849641.235648,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"$comment\": \"This schema succeeds if the proj: fields + are not used at all, please keep this in mind.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n }\n ]\n },\n + \ {\n \"$comment\": \"This is the schema for STAC Collections.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Collection\"\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"proj:epsg\":{\n \"title\":\"EPSG + code\",\n \"type\":[\n \"integer\",\n \"null\"\n + \ ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.5/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '539' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4369' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:41 GMT + ETag: + - '"63e6651b-1111"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - d70d46c9f4421980d523fbd1fe87f4264ab2a7d5 + X-GitHub-Request-Id: + - 303E:20A2:70F70E:9F20FD:65149A8D + X-Served-By: + - cache-lga21960-LGA + X-Timer: + - S1695849641.352130,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:21:41 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - proj.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://proj.org/schemas/v0.5/projjson.schema.json + response: + body: + string: '' + headers: + Age: + - '511' + CDN-Cache-Control: + - public + CF-Cache-Status: + - HIT + CF-Ray: + - 80d6cac32dd11815-EWR + Cache-Control: + - max-age=1200 + Connection: + - close + Content-Language: + - en + Content-Length: + - '0' + Content-Type: + - text/html; charset=utf-8 + Cross-Origin-Opener-Policy: + - same-origin + Date: + - Wed, 27 Sep 2023 21:20:41 GMT + Location: + - https://proj.org/en/9.3/schemas/v0.5/projjson.schema.json + Referrer-Policy: + - no-referrer-when-downgrade + Server: + - cloudflare + Vary: + - Accept-Language, Cookie, Accept-Encoding + X-Backend: + - web-i-00190b17db4987e5f + X-Content-Type-Options: + - nosniff + X-RTD-Domain: + - proj.org + X-RTD-Project: + - osgeo-proj + X-RTD-Project-Method: + - custom_domain + X-RTD-Redirect: + - user + X-RTD-Version-Method: + - path + X-Served: + - Proxito-404 + alt-svc: + - h3=":443"; ma=86400 + status: + code: 302 + message: Found +- request: + body: null + headers: + Connection: + - close + Host: + - proj.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://proj.org/en/9.3/schemas/v0.5/projjson.schema.json + response: + body: + string: "{\n \"$id\": \"https://proj.org/schemas/v0.5/projjson.schema.json\",\n + \ \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"description\": + \"Schema for PROJJSON (v0.5)\",\n \"$comment\": \"This file exists both in + data/ and in schemas/vXXX/. Keep both in sync. And if changing the value of + $id, change PROJJSON_DEFAULT_VERSION accordingly in io.cpp\",\n\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/crs\" },\n { \"$ref\": \"#/definitions/datum\" + },\n { \"$ref\": \"#/definitions/datum_ensemble\" },\n { \"$ref\": \"#/definitions/ellipsoid\" + },\n { \"$ref\": \"#/definitions/prime_meridian\" },\n { \"$ref\": \"#/definitions/single_operation\" + },\n { \"$ref\": \"#/definitions/concatenated_operation\" }\n ],\n\n \"definitions\": + {\n\n \"abridged_transformation\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"AbridgedTransformation\"] },\n \"name\": { + \"type\": \"string\" },\n \"method\": { \"$ref\": \"#/definitions/method\" + },\n \"parameters\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/parameter_value\" }\n },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"method\", \"parameters\" ],\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"axis\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"Axis\"] },\n \"name\": { \"type\": \"string\" },\n \"abbreviation\": + { \"type\": \"string\" },\n \"direction\": { \"type\": \"string\",\n + \ \"enum\": [ \"north\",\n \"northNorthEast\",\n + \ \"northEast\",\n \"eastNorthEast\",\n + \ \"east\",\n \"eastSouthEast\",\n + \ \"southEast\",\n \"southSouthEast\",\n + \ \"south\",\n \"southSouthWest\",\n + \ \"southWest\",\n \"westSouthWest\",\n + \ \"west\",\n \"westNorthWest\",\n + \ \"northWest\",\n \"northNorthWest\",\n + \ \"up\",\n \"down\",\n + \ \"geocentricX\",\n \"geocentricY\",\n + \ \"geocentricZ\",\n \"columnPositive\",\n + \ \"columnNegative\",\n \"rowPositive\",\n + \ \"rowNegative\",\n \"displayRight\",\n + \ \"displayLeft\",\n \"displayUp\",\n + \ \"displayDown\",\n \"forward\",\n + \ \"aft\",\n \"port\",\n + \ \"starboard\",\n \"clockwise\",\n + \ \"counterClockwise\",\n \"towards\",\n + \ \"awayFrom\",\n \"future\",\n + \ \"past\",\n \"unspecified\" + ] },\n \"meridian\": { \"$ref\": \"#/definitions/meridian\" },\n \"unit\": + { \"$ref\": \"#/definitions/unit\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\", \"abbreviation\", \"direction\" ],\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n },\n\n \"bbox\": {\n \"type\": \"object\",\n \"properties\": + {\n \"east_longitude\": { \"type\": \"number\" },\n \"west_longitude\": + { \"type\": \"number\" },\n \"south_latitude\": { \"type\": \"number\" + },\n \"north_latitude\": { \"type\": \"number\" }\n },\n \"required\" + : [ \"east_longitude\", \"west_longitude\",\n \"south_latitude\", + \"north_latitude\" ],\n \"additionalProperties\": false\n },\n\n \"bound_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"$schema\" : { \"type\": \"string\" + },\n \"type\": { \"type\": \"string\", \"enum\": [\"BoundCRS\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"source_crs\": { \"$ref\": + \"#/definitions/crs\" },\n \"target_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"transformation\": { \"$ref\": \"#/definitions/abridged_transformation\" + },\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"source_crs\", \"target_crs\", \"transformation\" ],\n + \ \"additionalProperties\": false\n },\n\n \"compound_crs\": {\n + \ \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"CompoundCRS\"] },\n \"name\": { \"type\": \"string\" },\n \"components\": + \ {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/crs\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"components\" ],\n + \ \"additionalProperties\": false\n },\n\n \"concatenated_operation\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"ConcatenatedOperation\"] },\n \"name\": { \"type\": \"string\" },\n + \ \"source_crs\": { \"$ref\": \"#/definitions/crs\" },\n \"target_crs\": + { \"$ref\": \"#/definitions/crs\" },\n \"steps\": {\n \"type\": + \"array\",\n \"items\": { \"$ref\": \"#/definitions/single_operation\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"source_crs\", \"target_crs\", + \"steps\" ],\n \"additionalProperties\": false\n },\n\n \"conversion\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"Conversion\"] },\n \"name\": { \"type\": \"string\" },\n \"method\": + { \"$ref\": \"#/definitions/method\" },\n \"parameters\": {\n \"type\": + \"array\",\n \"items\": { \"$ref\": \"#/definitions/parameter_value\" + }\n },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\", + \"method\" ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"coordinate_system\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"CoordinateSystem\"] },\n \"name\": { \"type\": \"string\" },\n \"subtype\": + { \"type\": \"string\",\n \"enum\": [\"Cartesian\",\n + \ \"spherical\",\n \"ellipsoidal\",\n + \ \"vertical\",\n \"ordinal\",\n + \ \"parametric\",\n \"TemporalDateTime\",\n + \ \"TemporalCount\",\n \"TemporalMeasure\"] + \ },\n \"axis\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/axis\" }\n },\n \"id\": { \"$ref\": + \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"subtype\", \"axis\" ],\n \"allOf\": + [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"crs\": {\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/bound_crs\" },\n { \"$ref\": + \"#/definitions/compound_crs\" },\n { \"$ref\": \"#/definitions/derived_engineering_crs\" + },\n { \"$ref\": \"#/definitions/derived_geodetic_crs\" },\n { + \"$ref\": \"#/definitions/derived_parametric_crs\" },\n { \"$ref\": + \"#/definitions/derived_projected_crs\" },\n { \"$ref\": \"#/definitions/derived_temporal_crs\" + },\n { \"$ref\": \"#/definitions/derived_vertical_crs\" },\n { + \"$ref\": \"#/definitions/engineering_crs\" },\n { \"$ref\": \"#/definitions/geodetic_crs\" + },\n { \"$ref\": \"#/definitions/parametric_crs\" },\n { \"$ref\": + \"#/definitions/projected_crs\" },\n { \"$ref\": \"#/definitions/temporal_crs\" + },\n { \"$ref\": \"#/definitions/vertical_crs\" }\n ]\n },\n\n + \ \"datum\": {\n \"oneOf\": [\n { \"$ref\": \"#/definitions/geodetic_reference_frame\" + },\n { \"$ref\": \"#/definitions/vertical_reference_frame\" },\n { + \"$ref\": \"#/definitions/dynamic_geodetic_reference_frame\" },\n { + \"$ref\": \"#/definitions/dynamic_vertical_reference_frame\" },\n { + \"$ref\": \"#/definitions/temporal_datum\" },\n { \"$ref\": \"#/definitions/parametric_datum\" + },\n { \"$ref\": \"#/definitions/engineering_datum\" }\n ]\n },\n\n + \ \"datum_ensemble\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"DatumEnsemble\"] },\n \"name\": { \"type\": + \"string\" },\n \"members\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": { \"type\": \"string\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": + \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\" ],\n \"allOf\": [\n { \"$ref\": + \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n }\n },\n \"ellipsoid\": { \"$ref\": \"#/definitions/ellipsoid\" + },\n \"accuracy\": { \"type\": \"string\" },\n \"id\": { \"$ref\": + \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"members\", \"accuracy\" ],\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"deformation_model\": + {\n \"description\": \"Association to a PointMotionOperation\",\n \"type\": + \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" }\n },\n \"required\" + : [ \"name\" ],\n \"additionalProperties\": false\n },\n\n \"derived_engineering_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\",\n + \ \"enum\": [\"DerivedEngineeringCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": \"#/definitions/engineering_crs\" + },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" },\n + \ \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_geodetic_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedGeodeticCRS\",\n + \ \"DerivedGeographicCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": \"#/definitions/geodetic_crs\" + },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" },\n + \ \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_parametric_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedParametricCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/parametric_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_projected_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedProjectedCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/projected_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_temporal_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedTemporalCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/temporal_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_vertical_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedVerticalCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/vertical_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"dynamic_geodetic_reference_frame\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"DynamicGeodeticReferenceFrame\"] + },\n \"name\": {},\n \"anchor\": {},\n \"ellipsoid\": + {},\n \"prime_meridian\": {},\n \"frame_reference_epoch\": { + \"type\": \"number\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"ellipsoid\", \"frame_reference_epoch\" ],\n \"additionalProperties\": + false\n },\n\n \"dynamic_vertical_reference_frame\": {\n \"type\": + \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"DynamicVerticalReferenceFrame\"] },\n \"name\": {},\n \"anchor\": + {},\n \"frame_reference_epoch\": { \"type\": \"number\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"frame_reference_epoch\" ],\n \"additionalProperties\": + false\n },\n\n \"ellipsoid\": {\n \"type\": \"object\",\n \"oneOf\":[\n + \ {\n \"properties\": {\n \"$schema\" : { \"type\": + \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] + },\n \"name\": { \"type\": \"string\" },\n \"semi_major_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"semi_minor_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"semi_major_axis\", + \"semi_minor_axis\" ],\n \"additionalProperties\": false\n },\n + \ {\n \"properties\": {\n \"$schema\" : { \"type\": + \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] + },\n \"name\": { \"type\": \"string\" },\n \"semi_major_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"inverse_flattening\": + { \"type\": \"number\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n + \ \"required\" : [ \"name\", \"semi_major_axis\", \"inverse_flattening\" + ],\n \"additionalProperties\": false\n },\n {\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": + { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] },\n \"name\": + { \"type\": \"string\" },\n \"radius\": { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\", \"radius\" ],\n \"additionalProperties\": false\n }\n + \ ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ]\n },\n\n \"engineering_crs\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"EngineeringCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"datum\": { \"$ref\": + \"#/definitions/engineering_datum\" },\n \"coordinate_system\": { \"$ref\": + \"#/definitions/coordinate_system\" },\n \"$schema\" : {},\n \"scope\": + {},\n \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"datum\" ],\n \"additionalProperties\": false\n },\n\n \"engineering_datum\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"EngineeringDatum\"] },\n \"name\": { \"type\": \"string\" },\n \"anchor\": + { \"type\": \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\" + ],\n \"additionalProperties\": false\n },\n\n \"geodetic_crs\": + {\n \"type\": \"object\",\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"GeodeticCRS\", \"GeographicCRS\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"datum\": {\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/geodetic_reference_frame\" + },\n { \"$ref\": \"#/definitions/dynamic_geodetic_reference_frame\" + }\n ]\n },\n \"datum_ensemble\": { \"$ref\": \"#/definitions/datum_ensemble\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"deformation_models\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/deformation_model\" }\n },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\" ],\n \"description\": \"One and only + one of datum and datum_ensemble must be provided\",\n \"allOf\": [\n + \ { \"$ref\": \"#/definitions/object_usage\" },\n { \"$ref\": + \"#/definitions/one_and_only_one_of_datum_or_datum_ensemble\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"geodetic_reference_frame\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"GeodeticReferenceFrame\"] },\n \"name\": { \"type\": \"string\" + },\n \"anchor\": { \"type\": \"string\" },\n \"ellipsoid\": + { \"$ref\": \"#/definitions/ellipsoid\" },\n \"prime_meridian\": { + \"$ref\": \"#/definitions/prime_meridian\" },\n \"$schema\" : {},\n + \ \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"ellipsoid\" ],\n \"additionalProperties\": false\n },\n\n \"geoid_model\": + {\n \"type\": \"object\",\n \"properties\": {\n \"name\": + { \"type\": \"string\" },\n \"interpolation_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" }\n },\n \"required\" + : [ \"name\" ],\n \"additionalProperties\": false\n },\n\n \"id\": + {\n \"type\": \"object\",\n \"properties\": {\n \"authority\": + { \"type\": \"string\" },\n \"code\": {\n \"oneOf\": [ { \"type\": + \"string\" }, { \"type\": \"integer\" } ]\n },\n \"version\": + {\n \"oneOf\": [ { \"type\": \"string\" }, { \"type\": \"number\" + } ]\n },\n \"authority_citation\": { \"type\": \"string\" },\n + \ \"uri\": { \"type\": \"string\" }\n },\n \"required\" : + [ \"authority\", \"code\" ],\n \"additionalProperties\": false\n },\n\n + \ \"ids\": {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/id\" + }\n },\n\n \"method\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"OperationMethod\"]},\n \"name\": { \"type\": + \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\" + ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"id_ids_mutually_exclusive\": + {\n \"not\": {\n \"type\": \"object\",\n \"required\": + [ \"id\", \"ids\" ]\n }\n },\n\n \"one_and_only_one_of_datum_or_datum_ensemble\": + {\n \"allOf\": [\n {\n \"not\": {\n \"type\": + \"object\",\n \"required\": [ \"datum\", \"datum_ensemble\" + ]\n }\n },\n {\n \"oneOf\": [\n { + \"type\": \"object\", \"required\": [\"datum\"] },\n { \"type\": + \"object\", \"required\": [\"datum_ensemble\"] }\n ]\n }\n + \ ]\n },\n\n \"meridian\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"Meridian\"] },\n \"longitude\": { \"$ref\": + \"#/definitions/value_in_degree_or_value_and_unit\" },\n \"id\": { + \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"longitude\" ],\n \"allOf\": [\n + \ { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"object_usage\": {\n + \ \"anyOf\": [\n {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"scope\": + { \"type\": \"string\" },\n \"area\": { \"type\": \"string\" },\n + \ \"bbox\": { \"$ref\": \"#/definitions/bbox\" },\n \"vertical_extent\": + { \"$ref\": \"#/definitions/vertical_extent\" },\n \"temporal_extent\": + { \"$ref\": \"#/definitions/temporal_extent\" },\n \"remarks\": + { \"type\": \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"usages\": + { \"$ref\": \"#/definitions/usages\" },\n \"remarks\": { \"type\": + \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ]\n }\n + \ ]\n },\n\n \"parameter_value\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"$schema\" : { \"type\": \"string\" },\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"ParameterValue\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"value\": {\n \"oneOf\": + [\n { \"type\": \"string\" },\n { \"type\": \"number\" + }\n ]\n },\n \"unit\": { \"$ref\": \"#/definitions/unit\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\", + \"value\" ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"parametric_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"ParametricCRS\"] },\n \"name\": { \"type\": \"string\" },\n \"datum\": + { \"$ref\": \"#/definitions/parametric_datum\" },\n \"coordinate_system\": + { \"$ref\": \"#/definitions/coordinate_system\" },\n \"$schema\" : + {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"datum\" ],\n \"additionalProperties\": + false\n },\n\n \"parametric_datum\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"ParametricDatum\"] + },\n \"name\": { \"type\": \"string\" },\n \"anchor\": { \"type\": + \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\" ],\n \"additionalProperties\": + false\n },\n\n \"point_motion_operation\": {\n \"$comment\": \"Not + implemented in PROJ (at least as of PROJ 9.1)\",\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"PointMotionOperation\"] + },\n \"name\": { \"type\": \"string\" },\n \"source_crs\": { + \"$ref\": \"#/definitions/crs\" },\n \"method\": { \"$ref\": \"#/definitions/method\" + },\n \"parameters\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/parameter_value\" }\n },\n \"accuracy\": + { \"type\": \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"vertical_extent\": + {},\n \"temporal_extent\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"source_crs\", \"method\", \"parameters\" ],\n \"additionalProperties\": + false\n },\n\n \"prime_meridian\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"$schema\" : { \"type\": \"string\" },\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"PrimeMeridian\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"longitude\": { \"$ref\": + \"#/definitions/value_in_degree_or_value_and_unit\" },\n \"id\": { + \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\" ],\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n },\n\n \"single_operation\": {\n \"oneOf\": [\n { + \"$ref\": \"#/definitions/conversion\" },\n { \"$ref\": \"#/definitions/transformation\" + },\n { \"$ref\": \"#/definitions/point_motion_operation\" }\n ]\n + \ },\n\n \"projected_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"ProjectedCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/geodetic_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"temporal_crs\": {\n \"type\": \"object\",\n \"allOf\": [{ + \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"TemporalCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"datum\": { \"$ref\": \"#/definitions/temporal_datum\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\", \"datum\" ],\n \"additionalProperties\": + false\n },\n\n \"temporal_datum\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"TemporalDatum\"] + },\n \"name\": { \"type\": \"string\" },\n \"calendar\": { \"type\": + \"string\" },\n \"time_origin\": { \"type\": \"string\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"calendar\" ],\n \"additionalProperties\": + false\n },\n\n \"temporal_extent\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"start\": { \"type\": \"string\" },\n \"end\": + { \"type\": \"string\" }\n },\n \"required\" : [ \"start\", \"end\" + ],\n \"additionalProperties\": false\n },\n\n \"transformation\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"Transformation\"] },\n \"name\": { \"type\": \"string\" },\n \"source_crs\": + { \"$ref\": \"#/definitions/crs\" },\n \"target_crs\": { \"$ref\": + \"#/definitions/crs\" },\n \"interpolation_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"method\": { \"$ref\": \"#/definitions/method\" },\n \"parameters\": + {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/parameter_value\" + }\n },\n \"accuracy\": { \"type\": \"string\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"vertical_extent\": {},\n \"temporal_extent\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"source_crs\", \"target_crs\", \"method\", + \"parameters\" ],\n \"additionalProperties\": false\n },\n\n \"unit\": + {\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"enum\": + [\"metre\", \"degree\", \"unity\"]\n },\n {\n \"type\": \"object\",\n + \ \"properties\": {\n \"type\": { \"type\": \"string\",\n \"enum\": + [\"LinearUnit\", \"AngularUnit\", \"ScaleUnit\",\n \"TimeUnit\", + \"ParametricUnit\", \"Unit\"] },\n \"name\": { \"type\": \"string\" + },\n \"conversion_factor\": { \"type\": \"number\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"type\", \"name\" ],\n \"allOf\": + [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n + \ ],\n \"additionalProperties\": false\n }\n ]\n + \ },\n\n \"usages\": {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": {\n \"scope\": + { \"type\": \"string\" },\n \"area\": { \"type\": \"string\" },\n + \ \"bbox\": { \"$ref\": \"#/definitions/bbox\" },\n \"vertical_extent\": + { \"$ref\": \"#/definitions/vertical_extent\" },\n \"temporal_extent\": + { \"$ref\": \"#/definitions/temporal_extent\" }\n },\n \"additionalProperties\": + false\n }\n },\n\n \"value_and_unit\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"value\": { \"type\": \"number\" },\n \"unit\": + { \"$ref\": \"#/definitions/unit\" }\n },\n \"required\" : [ \"value\", + \"unit\" ],\n \"additionalProperties\": false\n },\n\n \"value_in_degree_or_value_and_unit\": + {\n \"oneOf\": [\n { \"type\": \"number\" },\n { \"$ref\": + \"#/definitions/value_and_unit\" }\n ]\n },\n\n \"value_in_metre_or_value_and_unit\": + {\n \"oneOf\": [\n { \"type\": \"number\" },\n { \"$ref\": + \"#/definitions/value_and_unit\" }\n ]\n },\n\n \"vertical_crs\": + {\n \"type\": \"object\",\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"VerticalCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"datum\": {\n \"oneOf\": [\n + \ { \"$ref\": \"#/definitions/vertical_reference_frame\" },\n + \ { \"$ref\": \"#/definitions/dynamic_vertical_reference_frame\" + }\n ]\n },\n \"datum_ensemble\": { \"$ref\": \"#/definitions/datum_ensemble\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"geoid_model\": { \"$ref\": \"#/definitions/geoid_model\" },\n + \ \"geoid_models\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/geoid_model\" }\n },\n \"deformation_models\": + {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/deformation_model\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\"],\n \"description\": + \"One and only one of datum and datum_ensemble must be provided\",\n \"allOf\": + [\n { \"$ref\": \"#/definitions/object_usage\" },\n { \"$ref\": + \"#/definitions/one_and_only_one_of_datum_or_datum_ensemble\" },\n {\n + \ \"not\": {\n \"type\": \"object\",\n \"required\": + [ \"geoid_model\", \"geoid_models\" ]\n }\n }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"vertical_extent\": + {\n \"type\": \"object\",\n \"properties\": {\n \"minimum\": + { \"type\": \"number\" },\n \"maximum\": { \"type\": \"number\" },\n + \ \"unit\": { \"$ref\": \"#/definitions/unit\" }\n },\n \"required\" + : [ \"minimum\", \"maximum\" ],\n \"additionalProperties\": false\n },\n\n + \ \"vertical_reference_frame\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"VerticalReferenceFrame\"] + },\n \"name\": { \"type\": \"string\" },\n \"anchor\": { \"type\": + \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"vertical_extent\": {},\n \"temporal_extent\": + {},\n \"usages\": {},\n \"remarks\": {},\n \"id\": {}, + \"ids\": {}\n },\n \"required\" : [ \"name\" ],\n \"additionalProperties\": + false\n }\n\n }\n}\n" + headers: + Access-Control-Allow-Methods: + - HEAD, OPTIONS, GET + Access-Control-Allow-Origin: + - '*' + Age: + - '511' + CDN-Cache-Control: + - public + CF-Cache-Status: + - HIT + CF-Ray: + - 80d6cac3eb97c477-EWR + Cache-Control: + - max-age=1200 + Connection: + - close + Content-Type: + - application/json + Date: + - Wed, 27 Sep 2023 21:20:41 GMT + ETag: + - W/"567e3992b5fd3188af907a4cdc4781b3" + Last-Modified: + - Sun, 03 Sep 2023 09:10:52 GMT + Referrer-Policy: + - no-referrer-when-downgrade + Server: + - cloudflare + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + X-Backend: + - web-i-04a0936e538e90895 + X-Content-Type-Options: + - nosniff + X-RTD-Domain: + - proj.org + X-RTD-Path: + - /proxito/html/osgeo-proj/9.3/schemas/v0.5/projjson.schema.json + X-RTD-Project: + - osgeo-proj + X-RTD-Project-Method: + - custom_domain + X-RTD-Version: + - '9.3' + X-RTD-Version-Method: + - path + X-Served: + - Nginx-Proxito-Sendfile + alt-svc: + - h3=":443"; ma=86400 + x-amz-id-2: + - UBlptQ6CoU1gOcZjt2RSY1lr3wEiR3bA6BF4Ck7ffEb2Gvy2wrxxhJ3mNAJRYDJ1sJ9j4auUgjI= + x-amz-meta-mtime: + - '1693732240.238196845' + x-amz-request-id: + - 7M5G3K3ZTHPYERHZ + x-amz-server-side-encryption: + - AES256 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_raster/RasterTest.test_asset_bands.yaml b/tests/extensions/cassettes/test_raster/RasterTest.test_asset_bands.yaml new file mode 100644 index 000000000..e7342f86c --- /dev/null +++ b/tests/extensions/cassettes/test_raster/RasterTest.test_asset_bands.yaml @@ -0,0 +1,511 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '540' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:41 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 82e151343ab2171f6caebb900a35ed87df6fb682 + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21931-LGA + X-Timer: + - S1695849642.842977,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '540' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:41 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '3' + X-Fastly-Request-ID: + - 65e771bbec4722a7b228b36787669942023d4fd0 + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21969-LGA + X-Timer: + - S1695849642.975642,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"$comment\": \"This schema succeeds if the proj: fields + are not used at all, please keep this in mind.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n }\n ]\n },\n + \ {\n \"$comment\": \"This is the schema for STAC Collections.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Collection\"\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"proj:epsg\":{\n \"title\":\"EPSG + code\",\n \"type\":[\n \"integer\",\n \"null\"\n + \ ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.5/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '540' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4369' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:42 GMT + ETag: + - '"63e6651b-1111"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 8126bebf2d378a4dc5f25ed1ed23c008861a0040 + X-GitHub-Request-Id: + - 303E:20A2:70F70E:9F20FD:65149A8D + X-Served-By: + - cache-lga21967-LGA + X-Timer: + - S1695849642.088283,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:21:41 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/raster/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/raster/v1.1.0/schema.json#\",\n \"title\": + \"raster Extension\",\n \"description\": \"STAC Raster Extension for STAC + Items.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the schema + for STAC extension raster in Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/assetfields\"\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/assetfields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/assetfields\"\n }\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n }\n + \ }\n }\n },\n \"assetfields\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"raster:bands\": {\n \"$ref\": + \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!raster:)\": {\n \"$comment\": \"Above, change `template` + to the prefix of this extension\"\n }\n },\n \"additionalProperties\": + false\n },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n \"title\": + \"Band\",\n \"type\": \"object\",\n \"minProperties\": 1,\n + \ \"additionalProperties\": true,\n \"properties\": {\n \"data_type\": + {\n \"title\": \"Data type of the band\",\n \"type\": + \"string\",\n \"enum\": [\n \"int8\",\n \"int16\",\n + \ \"int32\",\n \"int64\",\n \"uint8\",\n + \ \"uint16\",\n \"uint32\",\n \"uint64\",\n + \ \"float16\",\n \"float32\",\n \"float64\",\n + \ \"cint16\",\n \"cint32\",\n \"cfloat32\",\n + \ \"cfloat64\",\n \"other\"\n ]\n },\n + \ \"unit\": {\n \"title\": \"Unit denomination of the pixel + value\",\n \"type\": \"string\"\n },\n \"bits_per_sample\": + {\n \"title\": \"The actual number of bits used for this band\",\n + \ \"type\": \"integer\"\n },\n \"sampling\": {\n + \ \"title\": \"Pixel sampling in the band\",\n \"type\": + \"string\",\n \"enum\": [\n \"area\",\n \"point\"\n + \ ]\n },\n \"nodata\": {\n \"title\": + \"No data pixel value\",\n \"oneOf\": [\n {\n \"type\": + \"number\"\n },\n {\n \"type\": \"string\",\n + \ \"enum\": [\n \"nan\",\n \"inf\",\n + \ \"-inf\"\n ]\n }\n ]\n + \ },\n \"scale\": {\n \"title\": \"multiplicator + factor of the pixel value to transform into the value\",\n \"type\": + \"number\"\n },\n \"offset\": {\n \"title\": + \"number to be added to the pixel value to transform into the value\",\n \"type\": + \"number\"\n },\n \"spatial_resolution\": {\n \"title\": + \"Average spatial resolution (in meters) of the pixels in the band\",\n \"type\": + \"number\"\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"object\",\n \"minProperties\": + 1,\n \"additionalProperties\": false,\n \"properties\": + {\n \"mean\": {\n \"title\": \"Mean value of all + the pixels in the band\",\n \"type\": \"number\"\n },\n + \ \"minimum\": {\n \"title\": \"Minimum value of + all the pixels in the band\",\n \"type\": \"number\"\n },\n + \ \"maximum\": {\n \"title\": \"Maximum value of + all the pixels in the band\",\n \"type\": \"number\"\n },\n + \ \"stddev\": {\n \"title\": \"Standard deviation + value of all the pixels in the band\",\n \"type\": \"number\"\n + \ },\n \"valid_percent\": {\n \"title\": + \"Percentage of valid (not nodata) pixel\",\n \"type\": \"number\"\n + \ }\n }\n },\n \"histogram\": {\n + \ \"title\": \"Histogram\",\n \"type\": \"object\",\n + \ \"additionalItems\": false,\n \"required\": [\n \"count\",\n + \ \"min\",\n \"max\",\n \"buckets\"\n + \ ],\n \"additionalProperties\": false,\n \"properties\": + {\n \"count\": {\n \"title\": \"number of buckets\",\n + \ \"type\": \"number\"\n },\n \"min\": + {\n \"title\": \"Minimum value of the buckets\",\n \"type\": + \"number\"\n },\n \"max\": {\n \"title\": + \"Maximum value of the buckets\",\n \"type\": \"number\"\n + \ },\n \"buckets\": {\n \"title\": + \"distribution buckets\",\n \"type\": \"array\",\n \"minItems\": + 3,\n \"items\": {\n \"title\": \"number of + pixels in the bucket\",\n \"type\": \"integer\"\n }\n + \ }\n }\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '516' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6318' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:42 GMT + ETag: + - '"60e44dd0-18ae"' + Last-Modified: + - Tue, 06 Jul 2021 12:34:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 41e2b022a17b7d3c319e96bad8539c34a44ee4ca + X-GitHub-Request-Id: + - 135C:6FEB:2BC07D:3B8DB8:65149AA6 + X-Served-By: + - cache-lga21926-LGA + X-Timer: + - S1695849642.193334,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:06 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_raster/RasterTest.test_validate_raster.yaml b/tests/extensions/cassettes/test_raster/RasterTest.test_validate_raster.yaml index 45e7d1c4c..2ccc110f8 100644 --- a/tests/extensions/cassettes/test_raster/RasterTest.test_validate_raster.yaml +++ b/tests/extensions/cassettes/test_raster/RasterTest.test_validate_raster.yaml @@ -67,7 +67,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '511' Cache-Control: - max-age=600 Connection: @@ -77,7 +77,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:19 GMT + - Wed, 27 Sep 2023 21:20:42 GMT ETag: - '"60414dd7-e82"' Last-Modified: @@ -95,15 +95,375 @@ interactions: X-Cache-Hits: - '1' X-Fastly-Request-ID: - - 047061e17b48d5757a22ea99647216dcafdb8a56 + - 2246e21ed82ddf184b12851016a646a0acc9f1bc X-GitHub-Request-Id: - - 77C4:6ABA:A3DE57:F1075C:650D90B8 + - 641A:3987:3006D4:3FE2D6:65149AAA X-Served-By: - - cache-den8277-DEN + - cache-lga21973-LGA X-Timer: - - S1695410060.523252,VS0,VE63 + - S1695849642.363534,VS0,VE1 expires: - - Fri, 22 Sep 2023 13:13:54 GMT + - Wed, 27 Sep 2023 21:22:11 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '540' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:42 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - d6d656985ec4e6b5f1554b03cdc90648ff924d2d + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21929-LGA + X-Timer: + - S1695849642.480255,VS0,VE2 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"$comment\": \"This schema succeeds if the proj: fields + are not used at all, please keep this in mind.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n }\n ]\n },\n + \ {\n \"$comment\": \"This is the schema for STAC Collections.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Collection\"\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"proj:epsg\":{\n \"title\":\"EPSG + code\",\n \"type\":[\n \"integer\",\n \"null\"\n + \ ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.5/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '541' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4369' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:42 GMT + ETag: + - '"63e6651b-1111"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - c8e283fc09d2009b8ef4fbb1817aa269d5b8f0fa + X-GitHub-Request-Id: + - 303E:20A2:70F70E:9F20FD:65149A8D + X-Served-By: + - cache-lga21970-LGA + X-Timer: + - S1695849643.597132,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:21:41 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '541' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:42 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - f026496b6a35bff3b851d969e0a38131b037878a + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21920-LGA + X-Timer: + - S1695849643.709024,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT permissions-policy: - interest-cohort=() x-proxy-cache: @@ -204,7 +564,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '511' Cache-Control: - max-age=600 Connection: @@ -214,7 +574,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:19 GMT + - Wed, 27 Sep 2023 21:20:42 GMT ETag: - '"63cb122e-1661"' Last-Modified: @@ -228,19 +588,168 @@ interactions: Via: - 1.1 varnish X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 8019715e623e421161c8ee5f6400f377a1b6715f + X-GitHub-Request-Id: + - 1B92:8EE9:2EFF06:3EEB15:65149AAB + X-Served-By: + - cache-lga21936-LGA + X-Timer: + - S1695849643.822771,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:11 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/raster/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/raster/v1.1.0/schema.json#\",\n \"title\": + \"raster Extension\",\n \"description\": \"STAC Raster Extension for STAC + Items.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the schema + for STAC extension raster in Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/assetfields\"\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/assetfields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/assetfields\"\n }\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n }\n + \ }\n }\n },\n \"assetfields\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"raster:bands\": {\n \"$ref\": + \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!raster:)\": {\n \"$comment\": \"Above, change `template` + to the prefix of this extension\"\n }\n },\n \"additionalProperties\": + false\n },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n \"title\": + \"Band\",\n \"type\": \"object\",\n \"minProperties\": 1,\n + \ \"additionalProperties\": true,\n \"properties\": {\n \"data_type\": + {\n \"title\": \"Data type of the band\",\n \"type\": + \"string\",\n \"enum\": [\n \"int8\",\n \"int16\",\n + \ \"int32\",\n \"int64\",\n \"uint8\",\n + \ \"uint16\",\n \"uint32\",\n \"uint64\",\n + \ \"float16\",\n \"float32\",\n \"float64\",\n + \ \"cint16\",\n \"cint32\",\n \"cfloat32\",\n + \ \"cfloat64\",\n \"other\"\n ]\n },\n + \ \"unit\": {\n \"title\": \"Unit denomination of the pixel + value\",\n \"type\": \"string\"\n },\n \"bits_per_sample\": + {\n \"title\": \"The actual number of bits used for this band\",\n + \ \"type\": \"integer\"\n },\n \"sampling\": {\n + \ \"title\": \"Pixel sampling in the band\",\n \"type\": + \"string\",\n \"enum\": [\n \"area\",\n \"point\"\n + \ ]\n },\n \"nodata\": {\n \"title\": + \"No data pixel value\",\n \"oneOf\": [\n {\n \"type\": + \"number\"\n },\n {\n \"type\": \"string\",\n + \ \"enum\": [\n \"nan\",\n \"inf\",\n + \ \"-inf\"\n ]\n }\n ]\n + \ },\n \"scale\": {\n \"title\": \"multiplicator + factor of the pixel value to transform into the value\",\n \"type\": + \"number\"\n },\n \"offset\": {\n \"title\": + \"number to be added to the pixel value to transform into the value\",\n \"type\": + \"number\"\n },\n \"spatial_resolution\": {\n \"title\": + \"Average spatial resolution (in meters) of the pixels in the band\",\n \"type\": + \"number\"\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"object\",\n \"minProperties\": + 1,\n \"additionalProperties\": false,\n \"properties\": + {\n \"mean\": {\n \"title\": \"Mean value of all + the pixels in the band\",\n \"type\": \"number\"\n },\n + \ \"minimum\": {\n \"title\": \"Minimum value of + all the pixels in the band\",\n \"type\": \"number\"\n },\n + \ \"maximum\": {\n \"title\": \"Maximum value of + all the pixels in the band\",\n \"type\": \"number\"\n },\n + \ \"stddev\": {\n \"title\": \"Standard deviation + value of all the pixels in the band\",\n \"type\": \"number\"\n + \ },\n \"valid_percent\": {\n \"title\": + \"Percentage of valid (not nodata) pixel\",\n \"type\": \"number\"\n + \ }\n }\n },\n \"histogram\": {\n + \ \"title\": \"Histogram\",\n \"type\": \"object\",\n + \ \"additionalItems\": false,\n \"required\": [\n \"count\",\n + \ \"min\",\n \"max\",\n \"buckets\"\n + \ ],\n \"additionalProperties\": false,\n \"properties\": + {\n \"count\": {\n \"title\": \"number of buckets\",\n + \ \"type\": \"number\"\n },\n \"min\": + {\n \"title\": \"Minimum value of the buckets\",\n \"type\": + \"number\"\n },\n \"max\": {\n \"title\": + \"Maximum value of the buckets\",\n \"type\": \"number\"\n + \ },\n \"buckets\": {\n \"title\": + \"distribution buckets\",\n \"type\": \"array\",\n \"minItems\": + 3,\n \"items\": {\n \"title\": \"number of + pixels in the bucket\",\n \"type\": \"integer\"\n }\n + \ }\n }\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '517' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6318' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:42 GMT + ETag: + - '"60e44dd0-18ae"' + Last-Modified: + - Tue, 06 Jul 2021 12:34:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - a556490cc67e933561a83c1f2993c087cbbe280c + - 8a14d0faebaf7371f24f2582a74e18125b0144f7 X-GitHub-Request-Id: - - EE1A:517F:BA3D9B:1115210:650DE78B + - 135C:6FEB:2BC07D:3B8DB8:65149AA6 X-Served-By: - - cache-den8244-DEN + - cache-lga21980-LGA X-Timer: - - S1695410060.696855,VS0,VE63 + - S1695849643.945016,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:24:19 GMT + - Wed, 27 Sep 2023 21:22:06 GMT permissions-policy: - interest-cohort=() x-proxy-cache: diff --git a/tests/extensions/cassettes/test_sar/SarItemExtTest.test_all.yaml b/tests/extensions/cassettes/test_sar/SarItemExtTest.test_all.yaml index e53e3f95a..8697d5f1b 100644 --- a/tests/extensions/cassettes/test_sar/SarItemExtTest.test_all.yaml +++ b/tests/extensions/cassettes/test_sar/SarItemExtTest.test_all.yaml @@ -86,7 +86,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '511' Cache-Control: - max-age=600 Connection: @@ -96,7 +96,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:19 GMT + - Wed, 27 Sep 2023 21:20:43 GMT ETag: - '"60414cc0-13df"' Last-Modified: @@ -110,19 +110,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 0f2a343baf117793dbb00c94cf02c062758de7de + - 0af7bf9f44740badd7f1ffe70141acf4137c0e2c X-GitHub-Request-Id: - - B554:6ABA:BFD164:116E4BA:650DE78B + - 2C2A:79C4:30D5DB:408716:65149AAA X-Served-By: - - cache-den8233-DEN + - cache-lga21927-LGA X-Timer: - - S1695410060.934548,VS0,VE61 + - S1695849643.122874,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:19 GMT + - Wed, 27 Sep 2023 21:22:11 GMT permissions-policy: - interest-cohort=() x-proxy-cache: diff --git a/tests/extensions/cassettes/test_sar/SarItemExtTest.test_required.yaml b/tests/extensions/cassettes/test_sar/SarItemExtTest.test_required.yaml new file mode 100644 index 000000000..5d56fb249 --- /dev/null +++ b/tests/extensions/cassettes/test_sar/SarItemExtTest.test_required.yaml @@ -0,0 +1,133 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/sar/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/sar/v1.0.0/schema.json\",\n \"title\": + \"SAR Extension\",\n \"description\": \"STAC SAR Extension to a STAC Item\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"allOf\": + [\n {\n \"required\": [\n \"sar:instrument_mode\",\n + \ \"sar:frequency_band\",\n \"sar:polarizations\",\n + \ \"sar:product_type\"\n ],\n \"properties\": + {\n \"sar:polarizations\": {\n \"type\": + \"array\",\n \"maxItems\": 4,\n \"uniqueItems\": + true\n }\n }\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/sar/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"sar:instrument_mode\": + {\n \"title\": \"Instrument Mode\",\n \"type\": \"string\",\n + \ \"example\": \"WV\"\n },\n \"sar:frequency_band\": + {\n \"title\": \"Frequency Band\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"P\",\n \"L\",\n \"S\",\n + \ \"C\",\n \"X\",\n \"Ku\",\n \"K\",\n + \ \"Ka\"\n ]\n },\n \"sar:center_frequency\": + {\n \"title\": \"Center Frequency (GHz)\",\n \"type\": \"number\"\n + \ },\n \"sar:polarizations\": {\n \"title\": \"Polarizations\",\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\",\n \"enum\": [\n \"HH\",\n + \ \"VV\",\n \"HV\",\n \"VH\"\n ]\n + \ }\n },\n \"sar:product_type\": {\n \"title\": + \"Product type\",\n \"type\": \"string\",\n \"examples\": + [\n \"SSC\",\n \"MGD\",\n \"SGC\"\n ]\n + \ },\n \"sar:resolution_range\": {\n \"title\": \"Resolution + range (m)\",\n \"type\": \"number\",\n \"minimum\": 0\n + \ },\n \"sar:resolution_azimuth\": {\n \"title\": \"Resolution + azimuth (m)\",\n \"type\": \"number\",\n \"minimum\": 0\n + \ },\n \"sar:pixel_spacing_range\": {\n \"title\": \"Pixel + spacing range (m)\",\n \"type\": \"number\",\n \"minimum\": + 0\n },\n \"sar:pixel_spacing_azimuth\": {\n \"title\": + \"Pixel spacing azimuth (m)\",\n \"type\": \"number\",\n \"minimum\": + 0\n },\n \"sar:looks_range\": {\n \"title\": \"Looks + range\",\n \"type\": \"integer\",\n \"minimum\": 0\n },\n + \ \"sar:looks_azimuth\": {\n \"title\": \"Looks azimuth\",\n + \ \"type\": \"integer\",\n \"minimum\": 0\n },\n \"sar:looks_equivalent_number\": + {\n \"title\": \"Equivalent number of looks (ENL)\",\n \"type\": + \"number\",\n \"minimum\": 0\n },\n \"sar:observation_direction\": + {\n \"title\": \"Antenna pointing direction\",\n \"type\": + \"string\",\n \"enum\": [\n \"left\",\n \"right\"\n + \ ]\n }\n },\n \"patternProperties\": {\n \"^(?!sar:)\": + {\n \"$comment\": \"Do not allow unspecified fields prefixed with + sar:\"\n }\n },\n \"additionalProperties\": false\n }\n + \ }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '511' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5087' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:43 GMT + ETag: + - '"60414cc0-13df"' + Last-Modified: + - Thu, 04 Mar 2021 21:10:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 87668fbe302e22f1e9ade7311f053c772e4fb83b + X-GitHub-Request-Id: + - 2C2A:79C4:30D5DB:408716:65149AAA + X-Served-By: + - cache-lga21977-LGA + X-Timer: + - S1695849643.263938,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:11 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_sat/SatTest.test_absolute_orbit.yaml b/tests/extensions/cassettes/test_sat/SatTest.test_absolute_orbit.yaml new file mode 100644 index 000000000..47506a2f5 --- /dev/null +++ b/tests/extensions/cassettes/test_sat/SatTest.test_absolute_orbit.yaml @@ -0,0 +1,114 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/sat/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n \"title\": + \"Satellite Extension\",\n \"description\": \"STAC Sat Extension to a STAC + Item.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the schema + for STAC Items.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"sat:platform_international_designator\"\n + \ ]\n },\n {\n \"required\": + [\n \"sat:orbit_state\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:absolute_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:relative_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:anx_datetime\"\n ]\n + \ }\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"sat:platform_international_designator\": + {\n \"type\": \"string\"\n },\n \"sat:orbit_state\": + {\n \"title\": \"Orbit State\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"ascending\",\n \"descending\",\n + \ \"geostationary\"\n ]\n },\n \"sat:absolute_orbit\": + {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n + \ \"sat:relative_orbit\": {\n \"type\": \"integer\",\n \"minimum\": + 1\n },\n \"sat:anx_datetime\": {\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n },\n \"patternProperties\": + {\n \"^(?!sat:)\": {\n \"$comment\": \"Do not allow unspecified + fields prefixed with sat:\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '512' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3714' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:43 GMT + ETag: + - '"60414dd7-e82"' + Last-Modified: + - Thu, 04 Mar 2021 21:15:03 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - e680b0a7951e8d0f7aa7524095889f79794dffae + X-GitHub-Request-Id: + - 641A:3987:3006D4:3FE2D6:65149AAA + X-Served-By: + - cache-lga21935-LGA + X-Timer: + - S1695849643.468098,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:11 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_sat/SatTest.test_anx_datetime.yaml b/tests/extensions/cassettes/test_sat/SatTest.test_anx_datetime.yaml new file mode 100644 index 000000000..c3b1a1d74 --- /dev/null +++ b/tests/extensions/cassettes/test_sat/SatTest.test_anx_datetime.yaml @@ -0,0 +1,114 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/sat/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n \"title\": + \"Satellite Extension\",\n \"description\": \"STAC Sat Extension to a STAC + Item.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the schema + for STAC Items.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"sat:platform_international_designator\"\n + \ ]\n },\n {\n \"required\": + [\n \"sat:orbit_state\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:absolute_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:relative_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:anx_datetime\"\n ]\n + \ }\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"sat:platform_international_designator\": + {\n \"type\": \"string\"\n },\n \"sat:orbit_state\": + {\n \"title\": \"Orbit State\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"ascending\",\n \"descending\",\n + \ \"geostationary\"\n ]\n },\n \"sat:absolute_orbit\": + {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n + \ \"sat:relative_orbit\": {\n \"type\": \"integer\",\n \"minimum\": + 1\n },\n \"sat:anx_datetime\": {\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n },\n \"patternProperties\": + {\n \"^(?!sat:)\": {\n \"$comment\": \"Do not allow unspecified + fields prefixed with sat:\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '512' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3714' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:43 GMT + ETag: + - '"60414dd7-e82"' + Last-Modified: + - Thu, 04 Mar 2021 21:15:03 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 86c76ccc9ada5ca9fc25bf6da462d7f1dfde23e6 + X-GitHub-Request-Id: + - 641A:3987:3006D4:3FE2D6:65149AAA + X-Served-By: + - cache-lga21980-LGA + X-Timer: + - S1695849644.633054,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:11 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_sat/SatTest.test_both.yaml b/tests/extensions/cassettes/test_sat/SatTest.test_both.yaml new file mode 100644 index 000000000..5a7369eee --- /dev/null +++ b/tests/extensions/cassettes/test_sat/SatTest.test_both.yaml @@ -0,0 +1,114 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/sat/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n \"title\": + \"Satellite Extension\",\n \"description\": \"STAC Sat Extension to a STAC + Item.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the schema + for STAC Items.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"sat:platform_international_designator\"\n + \ ]\n },\n {\n \"required\": + [\n \"sat:orbit_state\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:absolute_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:relative_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:anx_datetime\"\n ]\n + \ }\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"sat:platform_international_designator\": + {\n \"type\": \"string\"\n },\n \"sat:orbit_state\": + {\n \"title\": \"Orbit State\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"ascending\",\n \"descending\",\n + \ \"geostationary\"\n ]\n },\n \"sat:absolute_orbit\": + {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n + \ \"sat:relative_orbit\": {\n \"type\": \"integer\",\n \"minimum\": + 1\n },\n \"sat:anx_datetime\": {\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n },\n \"patternProperties\": + {\n \"^(?!sat:)\": {\n \"$comment\": \"Do not allow unspecified + fields prefixed with sat:\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '512' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3714' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:43 GMT + ETag: + - '"60414dd7-e82"' + Last-Modified: + - Thu, 04 Mar 2021 21:15:03 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 8d558ec2427dd2b8042836bca41ba60fabead688 + X-GitHub-Request-Id: + - 641A:3987:3006D4:3FE2D6:65149AAA + X-Served-By: + - cache-lga21978-LGA + X-Timer: + - S1695849644.820736,VS0,VE5 + expires: + - Wed, 27 Sep 2023 21:22:11 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_sat/SatTest.test_clear_orbit_state.yaml b/tests/extensions/cassettes/test_sat/SatTest.test_clear_orbit_state.yaml new file mode 100644 index 000000000..972ef1f75 --- /dev/null +++ b/tests/extensions/cassettes/test_sat/SatTest.test_clear_orbit_state.yaml @@ -0,0 +1,114 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/sat/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n \"title\": + \"Satellite Extension\",\n \"description\": \"STAC Sat Extension to a STAC + Item.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the schema + for STAC Items.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"sat:platform_international_designator\"\n + \ ]\n },\n {\n \"required\": + [\n \"sat:orbit_state\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:absolute_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:relative_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:anx_datetime\"\n ]\n + \ }\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"sat:platform_international_designator\": + {\n \"type\": \"string\"\n },\n \"sat:orbit_state\": + {\n \"title\": \"Orbit State\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"ascending\",\n \"descending\",\n + \ \"geostationary\"\n ]\n },\n \"sat:absolute_orbit\": + {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n + \ \"sat:relative_orbit\": {\n \"type\": \"integer\",\n \"minimum\": + 1\n },\n \"sat:anx_datetime\": {\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n },\n \"patternProperties\": + {\n \"^(?!sat:)\": {\n \"$comment\": \"Do not allow unspecified + fields prefixed with sat:\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '512' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3714' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:43 GMT + ETag: + - '"60414dd7-e82"' + Last-Modified: + - Thu, 04 Mar 2021 21:15:03 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 57c97a1c6b78fbc89b6dd69a2b707bb7780e53b9 + X-GitHub-Request-Id: + - 641A:3987:3006D4:3FE2D6:65149AAA + X-Served-By: + - cache-lga21964-LGA + X-Timer: + - S1695849644.957401,VS0,VE5 + expires: + - Wed, 27 Sep 2023 21:22:11 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_sat/SatTest.test_clear_relative_orbit.yaml b/tests/extensions/cassettes/test_sat/SatTest.test_clear_relative_orbit.yaml new file mode 100644 index 000000000..f1a504285 --- /dev/null +++ b/tests/extensions/cassettes/test_sat/SatTest.test_clear_relative_orbit.yaml @@ -0,0 +1,114 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/sat/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n \"title\": + \"Satellite Extension\",\n \"description\": \"STAC Sat Extension to a STAC + Item.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the schema + for STAC Items.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"sat:platform_international_designator\"\n + \ ]\n },\n {\n \"required\": + [\n \"sat:orbit_state\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:absolute_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:relative_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:anx_datetime\"\n ]\n + \ }\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"sat:platform_international_designator\": + {\n \"type\": \"string\"\n },\n \"sat:orbit_state\": + {\n \"title\": \"Orbit State\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"ascending\",\n \"descending\",\n + \ \"geostationary\"\n ]\n },\n \"sat:absolute_orbit\": + {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n + \ \"sat:relative_orbit\": {\n \"type\": \"integer\",\n \"minimum\": + 1\n },\n \"sat:anx_datetime\": {\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n },\n \"patternProperties\": + {\n \"^(?!sat:)\": {\n \"$comment\": \"Do not allow unspecified + fields prefixed with sat:\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '512' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3714' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:44 GMT + ETag: + - '"60414dd7-e82"' + Last-Modified: + - Thu, 04 Mar 2021 21:15:03 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - cf34e0825c83607be0374c9394659f3b0bccb77a + X-GitHub-Request-Id: + - 641A:3987:3006D4:3FE2D6:65149AAA + X-Served-By: + - cache-lga21922-LGA + X-Timer: + - S1695849644.095064,VS0,VE4 + expires: + - Wed, 27 Sep 2023 21:22:11 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_sat/SatTest.test_modify.yaml b/tests/extensions/cassettes/test_sat/SatTest.test_modify.yaml new file mode 100644 index 000000000..9eeccdf1f --- /dev/null +++ b/tests/extensions/cassettes/test_sat/SatTest.test_modify.yaml @@ -0,0 +1,114 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/sat/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n \"title\": + \"Satellite Extension\",\n \"description\": \"STAC Sat Extension to a STAC + Item.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the schema + for STAC Items.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"sat:platform_international_designator\"\n + \ ]\n },\n {\n \"required\": + [\n \"sat:orbit_state\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:absolute_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:relative_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:anx_datetime\"\n ]\n + \ }\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"sat:platform_international_designator\": + {\n \"type\": \"string\"\n },\n \"sat:orbit_state\": + {\n \"title\": \"Orbit State\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"ascending\",\n \"descending\",\n + \ \"geostationary\"\n ]\n },\n \"sat:absolute_orbit\": + {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n + \ \"sat:relative_orbit\": {\n \"type\": \"integer\",\n \"minimum\": + 1\n },\n \"sat:anx_datetime\": {\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n },\n \"patternProperties\": + {\n \"^(?!sat:)\": {\n \"$comment\": \"Do not allow unspecified + fields prefixed with sat:\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '513' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3714' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:44 GMT + ETag: + - '"60414dd7-e82"' + Last-Modified: + - Thu, 04 Mar 2021 21:15:03 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - ce50a2a76cffddf4f6af60c357365d2af8e16f19 + X-GitHub-Request-Id: + - 641A:3987:3006D4:3FE2D6:65149AAA + X-Served-By: + - cache-lga21941-LGA + X-Timer: + - S1695849644.228199,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:11 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_sat/SatTest.test_no_args_fails.yaml b/tests/extensions/cassettes/test_sat/SatTest.test_no_args_fails.yaml new file mode 100644 index 000000000..bfc40a0e8 --- /dev/null +++ b/tests/extensions/cassettes/test_sat/SatTest.test_no_args_fails.yaml @@ -0,0 +1,114 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/sat/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n \"title\": + \"Satellite Extension\",\n \"description\": \"STAC Sat Extension to a STAC + Item.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the schema + for STAC Items.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"sat:platform_international_designator\"\n + \ ]\n },\n {\n \"required\": + [\n \"sat:orbit_state\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:absolute_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:relative_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:anx_datetime\"\n ]\n + \ }\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"sat:platform_international_designator\": + {\n \"type\": \"string\"\n },\n \"sat:orbit_state\": + {\n \"title\": \"Orbit State\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"ascending\",\n \"descending\",\n + \ \"geostationary\"\n ]\n },\n \"sat:absolute_orbit\": + {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n + \ \"sat:relative_orbit\": {\n \"type\": \"integer\",\n \"minimum\": + 1\n },\n \"sat:anx_datetime\": {\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n },\n \"patternProperties\": + {\n \"^(?!sat:)\": {\n \"$comment\": \"Do not allow unspecified + fields prefixed with sat:\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '513' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3714' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:44 GMT + ETag: + - '"60414dd7-e82"' + Last-Modified: + - Thu, 04 Mar 2021 21:15:03 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 503b84e6677fdaea07e47b8716eaf8837abb0424 + X-GitHub-Request-Id: + - 641A:3987:3006D4:3FE2D6:65149AAA + X-Served-By: + - cache-lga21971-LGA + X-Timer: + - S1695849644.363551,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:11 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_sat/SatTest.test_orbit_state.yaml b/tests/extensions/cassettes/test_sat/SatTest.test_orbit_state.yaml new file mode 100644 index 000000000..140b164c5 --- /dev/null +++ b/tests/extensions/cassettes/test_sat/SatTest.test_orbit_state.yaml @@ -0,0 +1,114 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/sat/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n \"title\": + \"Satellite Extension\",\n \"description\": \"STAC Sat Extension to a STAC + Item.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the schema + for STAC Items.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"sat:platform_international_designator\"\n + \ ]\n },\n {\n \"required\": + [\n \"sat:orbit_state\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:absolute_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:relative_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:anx_datetime\"\n ]\n + \ }\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"sat:platform_international_designator\": + {\n \"type\": \"string\"\n },\n \"sat:orbit_state\": + {\n \"title\": \"Orbit State\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"ascending\",\n \"descending\",\n + \ \"geostationary\"\n ]\n },\n \"sat:absolute_orbit\": + {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n + \ \"sat:relative_orbit\": {\n \"type\": \"integer\",\n \"minimum\": + 1\n },\n \"sat:anx_datetime\": {\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n },\n \"patternProperties\": + {\n \"^(?!sat:)\": {\n \"$comment\": \"Do not allow unspecified + fields prefixed with sat:\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '513' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3714' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:44 GMT + ETag: + - '"60414dd7-e82"' + Last-Modified: + - Thu, 04 Mar 2021 21:15:03 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 2e1f4b1be86bb94c4f4237e854d874bbaedcf11f + X-GitHub-Request-Id: + - 641A:3987:3006D4:3FE2D6:65149AAA + X-Served-By: + - cache-lga21921-LGA + X-Timer: + - S1695849644.489363,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:11 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_sat/SatTest.test_platform_international_designator.yaml b/tests/extensions/cassettes/test_sat/SatTest.test_platform_international_designator.yaml new file mode 100644 index 000000000..41618c87c --- /dev/null +++ b/tests/extensions/cassettes/test_sat/SatTest.test_platform_international_designator.yaml @@ -0,0 +1,114 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/sat/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n \"title\": + \"Satellite Extension\",\n \"description\": \"STAC Sat Extension to a STAC + Item.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the schema + for STAC Items.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"sat:platform_international_designator\"\n + \ ]\n },\n {\n \"required\": + [\n \"sat:orbit_state\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:absolute_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:relative_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:anx_datetime\"\n ]\n + \ }\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"sat:platform_international_designator\": + {\n \"type\": \"string\"\n },\n \"sat:orbit_state\": + {\n \"title\": \"Orbit State\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"ascending\",\n \"descending\",\n + \ \"geostationary\"\n ]\n },\n \"sat:absolute_orbit\": + {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n + \ \"sat:relative_orbit\": {\n \"type\": \"integer\",\n \"minimum\": + 1\n },\n \"sat:anx_datetime\": {\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n },\n \"patternProperties\": + {\n \"^(?!sat:)\": {\n \"$comment\": \"Do not allow unspecified + fields prefixed with sat:\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '513' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3714' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:44 GMT + ETag: + - '"60414dd7-e82"' + Last-Modified: + - Thu, 04 Mar 2021 21:15:03 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 9007b1491e4cc7879f792f22a4835f14212074a3 + X-GitHub-Request-Id: + - 641A:3987:3006D4:3FE2D6:65149AAA + X-Served-By: + - cache-lga21920-LGA + X-Timer: + - S1695849645.618003,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:11 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_sat/SatTest.test_relative_orbit.yaml b/tests/extensions/cassettes/test_sat/SatTest.test_relative_orbit.yaml new file mode 100644 index 000000000..66d0bc882 --- /dev/null +++ b/tests/extensions/cassettes/test_sat/SatTest.test_relative_orbit.yaml @@ -0,0 +1,114 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/sat/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n \"title\": + \"Satellite Extension\",\n \"description\": \"STAC Sat Extension to a STAC + Item.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the schema + for STAC Items.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"sat:platform_international_designator\"\n + \ ]\n },\n {\n \"required\": + [\n \"sat:orbit_state\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:absolute_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:relative_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:anx_datetime\"\n ]\n + \ }\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"sat:platform_international_designator\": + {\n \"type\": \"string\"\n },\n \"sat:orbit_state\": + {\n \"title\": \"Orbit State\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"ascending\",\n \"descending\",\n + \ \"geostationary\"\n ]\n },\n \"sat:absolute_orbit\": + {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n + \ \"sat:relative_orbit\": {\n \"type\": \"integer\",\n \"minimum\": + 1\n },\n \"sat:anx_datetime\": {\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n },\n \"patternProperties\": + {\n \"^(?!sat:)\": {\n \"$comment\": \"Do not allow unspecified + fields prefixed with sat:\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '513' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3714' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:44 GMT + ETag: + - '"60414dd7-e82"' + Last-Modified: + - Thu, 04 Mar 2021 21:15:03 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - dd0befd963e894d702566efff4b57254ecbb5bd5 + X-GitHub-Request-Id: + - 641A:3987:3006D4:3FE2D6:65149AAA + X-Served-By: + - cache-lga21970-LGA + X-Timer: + - S1695849645.752211,VS0,VE3 + expires: + - Wed, 27 Sep 2023 21:22:11 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_sat/SatTest.test_relative_orbit_no_negative.yaml b/tests/extensions/cassettes/test_sat/SatTest.test_relative_orbit_no_negative.yaml new file mode 100644 index 000000000..a414cd054 --- /dev/null +++ b/tests/extensions/cassettes/test_sat/SatTest.test_relative_orbit_no_negative.yaml @@ -0,0 +1,114 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/sat/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n \"title\": + \"Satellite Extension\",\n \"description\": \"STAC Sat Extension to a STAC + Item.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the schema + for STAC Items.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"sat:platform_international_designator\"\n + \ ]\n },\n {\n \"required\": + [\n \"sat:orbit_state\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:absolute_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:relative_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:anx_datetime\"\n ]\n + \ }\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"sat:platform_international_designator\": + {\n \"type\": \"string\"\n },\n \"sat:orbit_state\": + {\n \"title\": \"Orbit State\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"ascending\",\n \"descending\",\n + \ \"geostationary\"\n ]\n },\n \"sat:absolute_orbit\": + {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n + \ \"sat:relative_orbit\": {\n \"type\": \"integer\",\n \"minimum\": + 1\n },\n \"sat:anx_datetime\": {\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n },\n \"patternProperties\": + {\n \"^(?!sat:)\": {\n \"$comment\": \"Do not allow unspecified + fields prefixed with sat:\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '513' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3714' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:44 GMT + ETag: + - '"60414dd7-e82"' + Last-Modified: + - Thu, 04 Mar 2021 21:15:03 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 2149dec65f314553d6d38a994304ce60d21bb828 + X-GitHub-Request-Id: + - 641A:3987:3006D4:3FE2D6:65149AAA + X-Served-By: + - cache-lga21929-LGA + X-Timer: + - S1695849645.876707,VS0,VE4 + expires: + - Wed, 27 Sep 2023 21:22:11 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_citation.yaml b/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_citation.yaml new file mode 100644 index 000000000..939c6e621 --- /dev/null +++ b/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_citation.yaml @@ -0,0 +1,140 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/scientific/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json#\",\n \"title\": + \"Scientific Citation Extension\",\n \"description\": \"Scientific Citation + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/require_any_field\"\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n {\n + \ \"$comment\": \"This validates the fields in Collection Assets, + but does not require them.\",\n \"required\": [\n \"assets\"\n + \ ],\n \"properties\": {\n \"assets\": {\n \"type\": + \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"sci:doi\"]},\n {\"required\": [\"sci:citation\"]},\n {\"required\": + [\"sci:publications\"]}\n ]\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n }, \n \"sci:citation\": + {\n \"type\": \"string\", \n \"title\": \"Proposed Data + Citation\"\n },\n \"sci:publications\": {\n \"type\": + \"array\",\n \"title\": \"Publications\",\n \"items\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n + \ }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n },\n \"patternProperties\": + {\n \"^(?!sci:)\": {}\n },\n \"additionalProperties\": false\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '519' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5626' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:46 GMT + ETag: + - '"60febab7-15fa"' + Last-Modified: + - Mon, 26 Jul 2021 13:37:59 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 983aad4bb2cccfd393f0e4782966473ccd8dac5c + X-GitHub-Request-Id: + - 13A2:20A2:6B2A6D:96E7BB:65148554 + X-Served-By: + - cache-lga21971-LGA + X-Timer: + - S1695849646.389339,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_doi.yaml b/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_doi.yaml new file mode 100644 index 000000000..2aa306a98 --- /dev/null +++ b/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_doi.yaml @@ -0,0 +1,140 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/scientific/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json#\",\n \"title\": + \"Scientific Citation Extension\",\n \"description\": \"Scientific Citation + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/require_any_field\"\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n {\n + \ \"$comment\": \"This validates the fields in Collection Assets, + but does not require them.\",\n \"required\": [\n \"assets\"\n + \ ],\n \"properties\": {\n \"assets\": {\n \"type\": + \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"sci:doi\"]},\n {\"required\": [\"sci:citation\"]},\n {\"required\": + [\"sci:publications\"]}\n ]\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n }, \n \"sci:citation\": + {\n \"type\": \"string\", \n \"title\": \"Proposed Data + Citation\"\n },\n \"sci:publications\": {\n \"type\": + \"array\",\n \"title\": \"Publications\",\n \"items\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n + \ }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n },\n \"patternProperties\": + {\n \"^(?!sci:)\": {}\n },\n \"additionalProperties\": false\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '519' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5626' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:46 GMT + ETag: + - '"60febab7-15fa"' + Last-Modified: + - Mon, 26 Jul 2021 13:37:59 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 11420408a3af74b0ba8c60e234a8471b82a5c99a + X-GitHub-Request-Id: + - 13A2:20A2:6B2A6D:96E7BB:65148554 + X-Served-By: + - cache-lga21941-LGA + X-Timer: + - S1695849647.536826,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_publications.yaml b/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_publications.yaml new file mode 100644 index 000000000..f34453ccf --- /dev/null +++ b/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_publications.yaml @@ -0,0 +1,140 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/scientific/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json#\",\n \"title\": + \"Scientific Citation Extension\",\n \"description\": \"Scientific Citation + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/require_any_field\"\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n {\n + \ \"$comment\": \"This validates the fields in Collection Assets, + but does not require them.\",\n \"required\": [\n \"assets\"\n + \ ],\n \"properties\": {\n \"assets\": {\n \"type\": + \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"sci:doi\"]},\n {\"required\": [\"sci:citation\"]},\n {\"required\": + [\"sci:publications\"]}\n ]\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n }, \n \"sci:citation\": + {\n \"type\": \"string\", \n \"title\": \"Proposed Data + Citation\"\n },\n \"sci:publications\": {\n \"type\": + \"array\",\n \"title\": \"Publications\",\n \"items\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n + \ }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n },\n \"patternProperties\": + {\n \"^(?!sci:)\": {}\n },\n \"additionalProperties\": false\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '519' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5626' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:46 GMT + ETag: + - '"60febab7-15fa"' + Last-Modified: + - Mon, 26 Jul 2021 13:37:59 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - e52f9026fb8b3fc9196ff6517bf483c4a3c9f2a1 + X-GitHub-Request-Id: + - 13A2:20A2:6B2A6D:96E7BB:65148554 + X-Served-By: + - cache-lga21922-LGA + X-Timer: + - S1695849647.690620,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_publications_one.yaml b/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_publications_one.yaml new file mode 100644 index 000000000..7163b47ad --- /dev/null +++ b/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_publications_one.yaml @@ -0,0 +1,140 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/scientific/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json#\",\n \"title\": + \"Scientific Citation Extension\",\n \"description\": \"Scientific Citation + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/require_any_field\"\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n {\n + \ \"$comment\": \"This validates the fields in Collection Assets, + but does not require them.\",\n \"required\": [\n \"assets\"\n + \ ],\n \"properties\": {\n \"assets\": {\n \"type\": + \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"sci:doi\"]},\n {\"required\": [\"sci:citation\"]},\n {\"required\": + [\"sci:publications\"]}\n ]\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n }, \n \"sci:citation\": + {\n \"type\": \"string\", \n \"title\": \"Proposed Data + Citation\"\n },\n \"sci:publications\": {\n \"type\": + \"array\",\n \"title\": \"Publications\",\n \"items\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n + \ }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n },\n \"patternProperties\": + {\n \"^(?!sci:)\": {}\n },\n \"additionalProperties\": false\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '519' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5626' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:46 GMT + ETag: + - '"60febab7-15fa"' + Last-Modified: + - Mon, 26 Jul 2021 13:37:59 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 116923fec3a0c44d26e98cb9192f934f1dc2054c + X-GitHub-Request-Id: + - 13A2:20A2:6B2A6D:96E7BB:65148554 + X-Served-By: + - cache-lga21957-LGA + X-Timer: + - S1695849647.824653,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_remove_all_publications_one.yaml b/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_remove_all_publications_one.yaml new file mode 100644 index 000000000..e392fc74d --- /dev/null +++ b/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_remove_all_publications_one.yaml @@ -0,0 +1,140 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/scientific/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json#\",\n \"title\": + \"Scientific Citation Extension\",\n \"description\": \"Scientific Citation + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/require_any_field\"\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n {\n + \ \"$comment\": \"This validates the fields in Collection Assets, + but does not require them.\",\n \"required\": [\n \"assets\"\n + \ ],\n \"properties\": {\n \"assets\": {\n \"type\": + \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"sci:doi\"]},\n {\"required\": [\"sci:citation\"]},\n {\"required\": + [\"sci:publications\"]}\n ]\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n }, \n \"sci:citation\": + {\n \"type\": \"string\", \n \"title\": \"Proposed Data + Citation\"\n },\n \"sci:publications\": {\n \"type\": + \"array\",\n \"title\": \"Publications\",\n \"items\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n + \ }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n },\n \"patternProperties\": + {\n \"^(?!sci:)\": {}\n },\n \"additionalProperties\": false\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '520' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5626' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:46 GMT + ETag: + - '"60febab7-15fa"' + Last-Modified: + - Mon, 26 Jul 2021 13:37:59 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - c9ac53776d41896752e4e7b6dd2bd891c478ed84 + X-GitHub-Request-Id: + - 13A2:20A2:6B2A6D:96E7BB:65148554 + X-Served-By: + - cache-lga21938-LGA + X-Timer: + - S1695849647.950173,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_remove_all_publications_with_none.yaml b/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_remove_all_publications_with_none.yaml new file mode 100644 index 000000000..d64220f3a --- /dev/null +++ b/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_remove_all_publications_with_none.yaml @@ -0,0 +1,140 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/scientific/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json#\",\n \"title\": + \"Scientific Citation Extension\",\n \"description\": \"Scientific Citation + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/require_any_field\"\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n {\n + \ \"$comment\": \"This validates the fields in Collection Assets, + but does not require them.\",\n \"required\": [\n \"assets\"\n + \ ],\n \"properties\": {\n \"assets\": {\n \"type\": + \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"sci:doi\"]},\n {\"required\": [\"sci:citation\"]},\n {\"required\": + [\"sci:publications\"]}\n ]\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n }, \n \"sci:citation\": + {\n \"type\": \"string\", \n \"title\": \"Proposed Data + Citation\"\n },\n \"sci:publications\": {\n \"type\": + \"array\",\n \"title\": \"Publications\",\n \"items\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n + \ }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n },\n \"patternProperties\": + {\n \"^(?!sci:)\": {}\n },\n \"additionalProperties\": false\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '520' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5626' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:47 GMT + ETag: + - '"60febab7-15fa"' + Last-Modified: + - Mon, 26 Jul 2021 13:37:59 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 8c985d23c35459bd4a93d86a7f46945f3e5667cc + X-GitHub-Request-Id: + - 13A2:20A2:6B2A6D:96E7BB:65148554 + X-Served-By: + - cache-lga21972-LGA + X-Timer: + - S1695849647.080019,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_remove_all_publications_with_some.yaml b/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_remove_all_publications_with_some.yaml new file mode 100644 index 000000000..00e608c8f --- /dev/null +++ b/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_remove_all_publications_with_some.yaml @@ -0,0 +1,140 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/scientific/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json#\",\n \"title\": + \"Scientific Citation Extension\",\n \"description\": \"Scientific Citation + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/require_any_field\"\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n {\n + \ \"$comment\": \"This validates the fields in Collection Assets, + but does not require them.\",\n \"required\": [\n \"assets\"\n + \ ],\n \"properties\": {\n \"assets\": {\n \"type\": + \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"sci:doi\"]},\n {\"required\": [\"sci:citation\"]},\n {\"required\": + [\"sci:publications\"]}\n ]\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n }, \n \"sci:citation\": + {\n \"type\": \"string\", \n \"title\": \"Proposed Data + Citation\"\n },\n \"sci:publications\": {\n \"type\": + \"array\",\n \"title\": \"Publications\",\n \"items\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n + \ }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n },\n \"patternProperties\": + {\n \"^(?!sci:)\": {}\n },\n \"additionalProperties\": false\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '520' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5626' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:47 GMT + ETag: + - '"60febab7-15fa"' + Last-Modified: + - Mon, 26 Jul 2021 13:37:59 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 00cfa8d0e63339795979b6e07361429193b2966d + X-GitHub-Request-Id: + - 13A2:20A2:6B2A6D:96E7BB:65148554 + X-Served-By: + - cache-lga21959-LGA + X-Timer: + - S1695849647.210099,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_remove_publication_forward.yaml b/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_remove_publication_forward.yaml new file mode 100644 index 000000000..a92c853ac --- /dev/null +++ b/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_remove_publication_forward.yaml @@ -0,0 +1,140 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/scientific/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json#\",\n \"title\": + \"Scientific Citation Extension\",\n \"description\": \"Scientific Citation + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/require_any_field\"\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n {\n + \ \"$comment\": \"This validates the fields in Collection Assets, + but does not require them.\",\n \"required\": [\n \"assets\"\n + \ ],\n \"properties\": {\n \"assets\": {\n \"type\": + \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"sci:doi\"]},\n {\"required\": [\"sci:citation\"]},\n {\"required\": + [\"sci:publications\"]}\n ]\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n }, \n \"sci:citation\": + {\n \"type\": \"string\", \n \"title\": \"Proposed Data + Citation\"\n },\n \"sci:publications\": {\n \"type\": + \"array\",\n \"title\": \"Publications\",\n \"items\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n + \ }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n },\n \"patternProperties\": + {\n \"^(?!sci:)\": {}\n },\n \"additionalProperties\": false\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '520' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5626' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:47 GMT + ETag: + - '"60febab7-15fa"' + Last-Modified: + - Mon, 26 Jul 2021 13:37:59 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 02343832f876a31ebdaa0ae3106160036f5b7fc9 + X-GitHub-Request-Id: + - 13A2:20A2:6B2A6D:96E7BB:65148554 + X-Served-By: + - cache-lga21928-LGA + X-Timer: + - S1695849647.403624,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_remove_publication_one.yaml b/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_remove_publication_one.yaml new file mode 100644 index 000000000..696d7c684 --- /dev/null +++ b/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_remove_publication_one.yaml @@ -0,0 +1,140 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/scientific/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json#\",\n \"title\": + \"Scientific Citation Extension\",\n \"description\": \"Scientific Citation + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/require_any_field\"\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n {\n + \ \"$comment\": \"This validates the fields in Collection Assets, + but does not require them.\",\n \"required\": [\n \"assets\"\n + \ ],\n \"properties\": {\n \"assets\": {\n \"type\": + \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"sci:doi\"]},\n {\"required\": [\"sci:citation\"]},\n {\"required\": + [\"sci:publications\"]}\n ]\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n }, \n \"sci:citation\": + {\n \"type\": \"string\", \n \"title\": \"Proposed Data + Citation\"\n },\n \"sci:publications\": {\n \"type\": + \"array\",\n \"title\": \"Publications\",\n \"items\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n + \ }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n },\n \"patternProperties\": + {\n \"^(?!sci:)\": {}\n },\n \"additionalProperties\": false\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '520' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5626' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:47 GMT + ETag: + - '"60febab7-15fa"' + Last-Modified: + - Mon, 26 Jul 2021 13:37:59 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 9eae49610bcd92757e13189d13b8d17d0e73ca77 + X-GitHub-Request-Id: + - 13A2:20A2:6B2A6D:96E7BB:65148554 + X-Served-By: + - cache-lga21947-LGA + X-Timer: + - S1695849648.547863,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_remove_publication_reverse.yaml b/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_remove_publication_reverse.yaml new file mode 100644 index 000000000..4fc15bf4e --- /dev/null +++ b/tests/extensions/cassettes/test_scientific/CollectionScientificExtensionTest.test_remove_publication_reverse.yaml @@ -0,0 +1,140 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/scientific/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json#\",\n \"title\": + \"Scientific Citation Extension\",\n \"description\": \"Scientific Citation + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/require_any_field\"\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n {\n + \ \"$comment\": \"This validates the fields in Collection Assets, + but does not require them.\",\n \"required\": [\n \"assets\"\n + \ ],\n \"properties\": {\n \"assets\": {\n \"type\": + \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"sci:doi\"]},\n {\"required\": [\"sci:citation\"]},\n {\"required\": + [\"sci:publications\"]}\n ]\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n }, \n \"sci:citation\": + {\n \"type\": \"string\", \n \"title\": \"Proposed Data + Citation\"\n },\n \"sci:publications\": {\n \"type\": + \"array\",\n \"title\": \"Publications\",\n \"items\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n + \ }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n },\n \"patternProperties\": + {\n \"^(?!sci:)\": {}\n },\n \"additionalProperties\": false\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '520' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5626' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:47 GMT + ETag: + - '"60febab7-15fa"' + Last-Modified: + - Mon, 26 Jul 2021 13:37:59 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 4810ebc9a58ca9e64608c786f7e380c2a3b35a7c + X-GitHub-Request-Id: + - 13A2:20A2:6B2A6D:96E7BB:65148554 + X-Served-By: + - cache-lga21949-LGA + X-Timer: + - S1695849648.695526,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_citation.yaml b/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_citation.yaml new file mode 100644 index 000000000..4ef1fcd75 --- /dev/null +++ b/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_citation.yaml @@ -0,0 +1,140 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/scientific/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json#\",\n \"title\": + \"Scientific Citation Extension\",\n \"description\": \"Scientific Citation + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/require_any_field\"\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n {\n + \ \"$comment\": \"This validates the fields in Collection Assets, + but does not require them.\",\n \"required\": [\n \"assets\"\n + \ ],\n \"properties\": {\n \"assets\": {\n \"type\": + \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"sci:doi\"]},\n {\"required\": [\"sci:citation\"]},\n {\"required\": + [\"sci:publications\"]}\n ]\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n }, \n \"sci:citation\": + {\n \"type\": \"string\", \n \"title\": \"Proposed Data + Citation\"\n },\n \"sci:publications\": {\n \"type\": + \"array\",\n \"title\": \"Publications\",\n \"items\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n + \ }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n },\n \"patternProperties\": + {\n \"^(?!sci:)\": {}\n },\n \"additionalProperties\": false\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '518' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5626' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:45 GMT + ETag: + - '"60febab7-15fa"' + Last-Modified: + - Mon, 26 Jul 2021 13:37:59 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - c18ead1eb1e52481ddf1e1e42e65865f8f392fd0 + X-GitHub-Request-Id: + - 13A2:20A2:6B2A6D:96E7BB:65148554 + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849645.028253,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_doi.yaml b/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_doi.yaml new file mode 100644 index 000000000..f4c614ac9 --- /dev/null +++ b/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_doi.yaml @@ -0,0 +1,140 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/scientific/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json#\",\n \"title\": + \"Scientific Citation Extension\",\n \"description\": \"Scientific Citation + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/require_any_field\"\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n {\n + \ \"$comment\": \"This validates the fields in Collection Assets, + but does not require them.\",\n \"required\": [\n \"assets\"\n + \ ],\n \"properties\": {\n \"assets\": {\n \"type\": + \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"sci:doi\"]},\n {\"required\": [\"sci:citation\"]},\n {\"required\": + [\"sci:publications\"]}\n ]\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n }, \n \"sci:citation\": + {\n \"type\": \"string\", \n \"title\": \"Proposed Data + Citation\"\n },\n \"sci:publications\": {\n \"type\": + \"array\",\n \"title\": \"Publications\",\n \"items\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n + \ }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n },\n \"patternProperties\": + {\n \"^(?!sci:)\": {}\n },\n \"additionalProperties\": false\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '518' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5626' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:45 GMT + ETag: + - '"60febab7-15fa"' + Last-Modified: + - Mon, 26 Jul 2021 13:37:59 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 21b8744f0654b194ec568349ea8cf3a7e4aa852c + X-GitHub-Request-Id: + - 13A2:20A2:6B2A6D:96E7BB:65148554 + X-Served-By: + - cache-lga21977-LGA + X-Timer: + - S1695849645.146805,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_publications.yaml b/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_publications.yaml new file mode 100644 index 000000000..72b9cf6ad --- /dev/null +++ b/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_publications.yaml @@ -0,0 +1,140 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/scientific/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json#\",\n \"title\": + \"Scientific Citation Extension\",\n \"description\": \"Scientific Citation + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/require_any_field\"\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n {\n + \ \"$comment\": \"This validates the fields in Collection Assets, + but does not require them.\",\n \"required\": [\n \"assets\"\n + \ ],\n \"properties\": {\n \"assets\": {\n \"type\": + \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"sci:doi\"]},\n {\"required\": [\"sci:citation\"]},\n {\"required\": + [\"sci:publications\"]}\n ]\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n }, \n \"sci:citation\": + {\n \"type\": \"string\", \n \"title\": \"Proposed Data + Citation\"\n },\n \"sci:publications\": {\n \"type\": + \"array\",\n \"title\": \"Publications\",\n \"items\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n + \ }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n },\n \"patternProperties\": + {\n \"^(?!sci:)\": {}\n },\n \"additionalProperties\": false\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '518' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5626' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:45 GMT + ETag: + - '"60febab7-15fa"' + Last-Modified: + - Mon, 26 Jul 2021 13:37:59 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - efdba381252c63ee5aede1d62388518de5621fdd + X-GitHub-Request-Id: + - 13A2:20A2:6B2A6D:96E7BB:65148554 + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849645.302737,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_publications_one.yaml b/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_publications_one.yaml new file mode 100644 index 000000000..46fcd65c3 --- /dev/null +++ b/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_publications_one.yaml @@ -0,0 +1,140 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/scientific/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json#\",\n \"title\": + \"Scientific Citation Extension\",\n \"description\": \"Scientific Citation + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/require_any_field\"\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n {\n + \ \"$comment\": \"This validates the fields in Collection Assets, + but does not require them.\",\n \"required\": [\n \"assets\"\n + \ ],\n \"properties\": {\n \"assets\": {\n \"type\": + \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"sci:doi\"]},\n {\"required\": [\"sci:citation\"]},\n {\"required\": + [\"sci:publications\"]}\n ]\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n }, \n \"sci:citation\": + {\n \"type\": \"string\", \n \"title\": \"Proposed Data + Citation\"\n },\n \"sci:publications\": {\n \"type\": + \"array\",\n \"title\": \"Publications\",\n \"items\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n + \ }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n },\n \"patternProperties\": + {\n \"^(?!sci:)\": {}\n },\n \"additionalProperties\": false\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '518' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5626' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:45 GMT + ETag: + - '"60febab7-15fa"' + Last-Modified: + - Mon, 26 Jul 2021 13:37:59 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 68fe2185b1de2f39ce17f8d3f54ba6efce2425c1 + X-GitHub-Request-Id: + - 13A2:20A2:6B2A6D:96E7BB:65148554 + X-Served-By: + - cache-lga21980-LGA + X-Timer: + - S1695849645.436898,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_remove_all_publications_one.yaml b/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_remove_all_publications_one.yaml new file mode 100644 index 000000000..27e819241 --- /dev/null +++ b/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_remove_all_publications_one.yaml @@ -0,0 +1,140 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/scientific/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json#\",\n \"title\": + \"Scientific Citation Extension\",\n \"description\": \"Scientific Citation + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/require_any_field\"\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n {\n + \ \"$comment\": \"This validates the fields in Collection Assets, + but does not require them.\",\n \"required\": [\n \"assets\"\n + \ ],\n \"properties\": {\n \"assets\": {\n \"type\": + \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"sci:doi\"]},\n {\"required\": [\"sci:citation\"]},\n {\"required\": + [\"sci:publications\"]}\n ]\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n }, \n \"sci:citation\": + {\n \"type\": \"string\", \n \"title\": \"Proposed Data + Citation\"\n },\n \"sci:publications\": {\n \"type\": + \"array\",\n \"title\": \"Publications\",\n \"items\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n + \ }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n },\n \"patternProperties\": + {\n \"^(?!sci:)\": {}\n },\n \"additionalProperties\": false\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '518' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5626' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:45 GMT + ETag: + - '"60febab7-15fa"' + Last-Modified: + - Mon, 26 Jul 2021 13:37:59 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - dbe698bbc5087155f153c6f8ed570cabc4baf61a + X-GitHub-Request-Id: + - 13A2:20A2:6B2A6D:96E7BB:65148554 + X-Served-By: + - cache-lga21936-LGA + X-Timer: + - S1695849646.594928,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_remove_all_publications_with_none.yaml b/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_remove_all_publications_with_none.yaml new file mode 100644 index 000000000..6c90f8d97 --- /dev/null +++ b/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_remove_all_publications_with_none.yaml @@ -0,0 +1,140 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/scientific/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json#\",\n \"title\": + \"Scientific Citation Extension\",\n \"description\": \"Scientific Citation + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/require_any_field\"\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n {\n + \ \"$comment\": \"This validates the fields in Collection Assets, + but does not require them.\",\n \"required\": [\n \"assets\"\n + \ ],\n \"properties\": {\n \"assets\": {\n \"type\": + \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"sci:doi\"]},\n {\"required\": [\"sci:citation\"]},\n {\"required\": + [\"sci:publications\"]}\n ]\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n }, \n \"sci:citation\": + {\n \"type\": \"string\", \n \"title\": \"Proposed Data + Citation\"\n },\n \"sci:publications\": {\n \"type\": + \"array\",\n \"title\": \"Publications\",\n \"items\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n + \ }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n },\n \"patternProperties\": + {\n \"^(?!sci:)\": {}\n },\n \"additionalProperties\": false\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '518' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5626' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:45 GMT + ETag: + - '"60febab7-15fa"' + Last-Modified: + - Mon, 26 Jul 2021 13:37:59 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - b01b19fb908fd80b29cb431426e901207d68e190 + X-GitHub-Request-Id: + - 13A2:20A2:6B2A6D:96E7BB:65148554 + X-Served-By: + - cache-lga21965-LGA + X-Timer: + - S1695849646.720587,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_remove_all_publications_with_some.yaml b/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_remove_all_publications_with_some.yaml new file mode 100644 index 000000000..7f8ce7d7e --- /dev/null +++ b/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_remove_all_publications_with_some.yaml @@ -0,0 +1,140 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/scientific/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json#\",\n \"title\": + \"Scientific Citation Extension\",\n \"description\": \"Scientific Citation + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/require_any_field\"\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n {\n + \ \"$comment\": \"This validates the fields in Collection Assets, + but does not require them.\",\n \"required\": [\n \"assets\"\n + \ ],\n \"properties\": {\n \"assets\": {\n \"type\": + \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"sci:doi\"]},\n {\"required\": [\"sci:citation\"]},\n {\"required\": + [\"sci:publications\"]}\n ]\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n }, \n \"sci:citation\": + {\n \"type\": \"string\", \n \"title\": \"Proposed Data + Citation\"\n },\n \"sci:publications\": {\n \"type\": + \"array\",\n \"title\": \"Publications\",\n \"items\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n + \ }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n },\n \"patternProperties\": + {\n \"^(?!sci:)\": {}\n },\n \"additionalProperties\": false\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '518' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5626' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:45 GMT + ETag: + - '"60febab7-15fa"' + Last-Modified: + - Mon, 26 Jul 2021 13:37:59 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 218328ebdb8039bcfdb13b3b50b52c77cb0acf51 + X-GitHub-Request-Id: + - 13A2:20A2:6B2A6D:96E7BB:65148554 + X-Served-By: + - cache-lga21978-LGA + X-Timer: + - S1695849646.855329,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_remove_publication_forward.yaml b/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_remove_publication_forward.yaml new file mode 100644 index 000000000..6ac4e6e77 --- /dev/null +++ b/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_remove_publication_forward.yaml @@ -0,0 +1,140 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/scientific/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json#\",\n \"title\": + \"Scientific Citation Extension\",\n \"description\": \"Scientific Citation + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/require_any_field\"\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n {\n + \ \"$comment\": \"This validates the fields in Collection Assets, + but does not require them.\",\n \"required\": [\n \"assets\"\n + \ ],\n \"properties\": {\n \"assets\": {\n \"type\": + \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"sci:doi\"]},\n {\"required\": [\"sci:citation\"]},\n {\"required\": + [\"sci:publications\"]}\n ]\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n }, \n \"sci:citation\": + {\n \"type\": \"string\", \n \"title\": \"Proposed Data + Citation\"\n },\n \"sci:publications\": {\n \"type\": + \"array\",\n \"title\": \"Publications\",\n \"items\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n + \ }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n },\n \"patternProperties\": + {\n \"^(?!sci:)\": {}\n },\n \"additionalProperties\": false\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '519' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5626' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:45 GMT + ETag: + - '"60febab7-15fa"' + Last-Modified: + - Mon, 26 Jul 2021 13:37:59 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 3e270e61f899714975f1a242caf823a766da61b3 + X-GitHub-Request-Id: + - 13A2:20A2:6B2A6D:96E7BB:65148554 + X-Served-By: + - cache-lga21980-LGA + X-Timer: + - S1695849646.988173,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_remove_publication_one.yaml b/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_remove_publication_one.yaml new file mode 100644 index 000000000..d26b74843 --- /dev/null +++ b/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_remove_publication_one.yaml @@ -0,0 +1,140 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/scientific/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json#\",\n \"title\": + \"Scientific Citation Extension\",\n \"description\": \"Scientific Citation + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/require_any_field\"\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n {\n + \ \"$comment\": \"This validates the fields in Collection Assets, + but does not require them.\",\n \"required\": [\n \"assets\"\n + \ ],\n \"properties\": {\n \"assets\": {\n \"type\": + \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"sci:doi\"]},\n {\"required\": [\"sci:citation\"]},\n {\"required\": + [\"sci:publications\"]}\n ]\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n }, \n \"sci:citation\": + {\n \"type\": \"string\", \n \"title\": \"Proposed Data + Citation\"\n },\n \"sci:publications\": {\n \"type\": + \"array\",\n \"title\": \"Publications\",\n \"items\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n + \ }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n },\n \"patternProperties\": + {\n \"^(?!sci:)\": {}\n },\n \"additionalProperties\": false\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '519' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5626' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:46 GMT + ETag: + - '"60febab7-15fa"' + Last-Modified: + - Mon, 26 Jul 2021 13:37:59 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - d6cfd8af8fefc0a40683077d17ab5a367beb9ac8 + X-GitHub-Request-Id: + - 13A2:20A2:6B2A6D:96E7BB:65148554 + X-Served-By: + - cache-lga21935-LGA + X-Timer: + - S1695849646.119824,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_remove_publication_reverse.yaml b/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_remove_publication_reverse.yaml new file mode 100644 index 000000000..32b5c6d45 --- /dev/null +++ b/tests/extensions/cassettes/test_scientific/ItemScientificExtensionTest.test_remove_publication_reverse.yaml @@ -0,0 +1,140 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/scientific/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json#\",\n \"title\": + \"Scientific Citation Extension\",\n \"description\": \"Scientific Citation + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/require_any_field\"\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n {\n + \ \"$comment\": \"This validates the fields in Collection Assets, + but does not require them.\",\n \"required\": [\n \"assets\"\n + \ ],\n \"properties\": {\n \"assets\": {\n \"type\": + \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"sci:doi\"]},\n {\"required\": [\"sci:citation\"]},\n {\"required\": + [\"sci:publications\"]}\n ]\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n }, \n \"sci:citation\": + {\n \"type\": \"string\", \n \"title\": \"Proposed Data + Citation\"\n },\n \"sci:publications\": {\n \"type\": + \"array\",\n \"title\": \"Publications\",\n \"items\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n + \ }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n },\n \"patternProperties\": + {\n \"^(?!sci:)\": {}\n },\n \"additionalProperties\": false\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '519' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5626' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:46 GMT + ETag: + - '"60febab7-15fa"' + Last-Modified: + - Mon, 26 Jul 2021 13:37:59 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 5cf047fd5025975da75531fb5b871cfe8ab83e29 + X-GitHub-Request-Id: + - 13A2:20A2:6B2A6D:96E7BB:65148554 + X-Served-By: + - cache-lga21920-LGA + X-Timer: + - S1695849646.238296,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_storage/AssetStorageExtensionTest.test_platform.yaml b/tests/extensions/cassettes/test_storage/AssetStorageExtensionTest.test_platform.yaml new file mode 100644 index 000000000..8d2d01bbb --- /dev/null +++ b/tests/extensions/cassettes/test_storage/AssetStorageExtensionTest.test_platform.yaml @@ -0,0 +1,104 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/storage/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/storage/v1.0.0/schema.json\",\n \"title\": + \"Storage Extension\",\n \"description\": \"STAC Storage Extension to a STAC + Item and STAC Assets.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for item properties.\",\n \"required\": + []\n },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ], \n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/storage/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"storage:platform\": {\n \"title\": + \"Platform\",\n \"type\": \"string\",\n \"enum\": [\n \"OTHER\",\n + \ \"AWS\",\n \"GCP\",\n \"AZURE\",\n \"IBM\",\n + \ \"ALIBABA\",\n \"ORACLE\"\n ],\n \"default\": + \"OTHER\"\n },\n \"storage:region\": {\n \"title\": + \"Region\",\n \"type\": \"string\"\n },\n \"storage:requester_pays\": + {\n \"type\": \"boolean\",\n \"title\": \"Requester pays\",\n + \ \"default\": false\n },\n \"storage:tier\": {\n \"title\": + \"Tier\",\n \"type\": \"string\"\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '515' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2963' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:48 GMT + ETag: + - '"60d2ba4e-b93"' + Last-Modified: + - Wed, 23 Jun 2021 04:36:30 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - e1639d6f0dde0c528668da971f22f7f665bea972 + X-GitHub-Request-Id: + - 8636:14DB:2B2222:3AF9B4:65149AAB + X-Served-By: + - cache-lga21944-LGA + X-Timer: + - S1695849648.071327,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:12 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_storage/AssetStorageExtensionTest.test_region.yaml b/tests/extensions/cassettes/test_storage/AssetStorageExtensionTest.test_region.yaml new file mode 100644 index 000000000..a3c7317c3 --- /dev/null +++ b/tests/extensions/cassettes/test_storage/AssetStorageExtensionTest.test_region.yaml @@ -0,0 +1,104 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/storage/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/storage/v1.0.0/schema.json\",\n \"title\": + \"Storage Extension\",\n \"description\": \"STAC Storage Extension to a STAC + Item and STAC Assets.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for item properties.\",\n \"required\": + []\n },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ], \n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/storage/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"storage:platform\": {\n \"title\": + \"Platform\",\n \"type\": \"string\",\n \"enum\": [\n \"OTHER\",\n + \ \"AWS\",\n \"GCP\",\n \"AZURE\",\n \"IBM\",\n + \ \"ALIBABA\",\n \"ORACLE\"\n ],\n \"default\": + \"OTHER\"\n },\n \"storage:region\": {\n \"title\": + \"Region\",\n \"type\": \"string\"\n },\n \"storage:requester_pays\": + {\n \"type\": \"boolean\",\n \"title\": \"Requester pays\",\n + \ \"default\": false\n },\n \"storage:tier\": {\n \"title\": + \"Tier\",\n \"type\": \"string\"\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '515' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2963' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:48 GMT + ETag: + - '"60d2ba4e-b93"' + Last-Modified: + - Wed, 23 Jun 2021 04:36:30 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - eaad36be74e89fc01a4ee3f72d856aff9137e4c6 + X-GitHub-Request-Id: + - 8636:14DB:2B2222:3AF9B4:65149AAB + X-Served-By: + - cache-lga21962-LGA + X-Timer: + - S1695849648.199762,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:12 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_storage/AssetStorageExtensionTest.test_requester_pays.yaml b/tests/extensions/cassettes/test_storage/AssetStorageExtensionTest.test_requester_pays.yaml new file mode 100644 index 000000000..4dd8267d3 --- /dev/null +++ b/tests/extensions/cassettes/test_storage/AssetStorageExtensionTest.test_requester_pays.yaml @@ -0,0 +1,104 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/storage/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/storage/v1.0.0/schema.json\",\n \"title\": + \"Storage Extension\",\n \"description\": \"STAC Storage Extension to a STAC + Item and STAC Assets.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for item properties.\",\n \"required\": + []\n },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ], \n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/storage/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"storage:platform\": {\n \"title\": + \"Platform\",\n \"type\": \"string\",\n \"enum\": [\n \"OTHER\",\n + \ \"AWS\",\n \"GCP\",\n \"AZURE\",\n \"IBM\",\n + \ \"ALIBABA\",\n \"ORACLE\"\n ],\n \"default\": + \"OTHER\"\n },\n \"storage:region\": {\n \"title\": + \"Region\",\n \"type\": \"string\"\n },\n \"storage:requester_pays\": + {\n \"type\": \"boolean\",\n \"title\": \"Requester pays\",\n + \ \"default\": false\n },\n \"storage:tier\": {\n \"title\": + \"Tier\",\n \"type\": \"string\"\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '515' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2963' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:48 GMT + ETag: + - '"60d2ba4e-b93"' + Last-Modified: + - Wed, 23 Jun 2021 04:36:30 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - f3b5661330bd2e2dff610c7773488ce822ae0f00 + X-GitHub-Request-Id: + - 8636:14DB:2B2222:3AF9B4:65149AAB + X-Served-By: + - cache-lga21953-LGA + X-Timer: + - S1695849648.348766,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:12 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_storage/AssetStorageExtensionTest.test_tier.yaml b/tests/extensions/cassettes/test_storage/AssetStorageExtensionTest.test_tier.yaml new file mode 100644 index 000000000..bd4eb6a27 --- /dev/null +++ b/tests/extensions/cassettes/test_storage/AssetStorageExtensionTest.test_tier.yaml @@ -0,0 +1,104 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/storage/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/storage/v1.0.0/schema.json\",\n \"title\": + \"Storage Extension\",\n \"description\": \"STAC Storage Extension to a STAC + Item and STAC Assets.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for item properties.\",\n \"required\": + []\n },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ], \n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/storage/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"storage:platform\": {\n \"title\": + \"Platform\",\n \"type\": \"string\",\n \"enum\": [\n \"OTHER\",\n + \ \"AWS\",\n \"GCP\",\n \"AZURE\",\n \"IBM\",\n + \ \"ALIBABA\",\n \"ORACLE\"\n ],\n \"default\": + \"OTHER\"\n },\n \"storage:region\": {\n \"title\": + \"Region\",\n \"type\": \"string\"\n },\n \"storage:requester_pays\": + {\n \"type\": \"boolean\",\n \"title\": \"Requester pays\",\n + \ \"default\": false\n },\n \"storage:tier\": {\n \"title\": + \"Tier\",\n \"type\": \"string\"\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '516' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2963' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:48 GMT + ETag: + - '"60d2ba4e-b93"' + Last-Modified: + - Wed, 23 Jun 2021 04:36:30 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - e9d96f481c92dce49afc1c0bde9044ba56b2d976 + X-GitHub-Request-Id: + - 8636:14DB:2B2222:3AF9B4:65149AAB + X-Served-By: + - cache-lga21965-LGA + X-Timer: + - S1695849648.480678,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:12 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_storage/ItemStorageExtensionTest.test_validate_storage.yaml b/tests/extensions/cassettes/test_storage/ItemStorageExtensionTest.test_validate_storage.yaml index d4f6b3920..329e9fe61 100644 --- a/tests/extensions/cassettes/test_storage/ItemStorageExtensionTest.test_validate_storage.yaml +++ b/tests/extensions/cassettes/test_storage/ItemStorageExtensionTest.test_validate_storage.yaml @@ -57,7 +57,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '515' Cache-Control: - max-age=600 Connection: @@ -67,7 +67,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:21 GMT + - Wed, 27 Sep 2023 21:20:47 GMT ETag: - '"60d2ba4e-b93"' Last-Modified: @@ -81,19 +81,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - c428258f0d1fba2c1fb4b6475bec7dd69c352315 + - f49136a3f6a260c7206a55def747373746c87b0f X-GitHub-Request-Id: - - 638E:630F:C21F83:119395C:650DE78C + - 8636:14DB:2B2222:3AF9B4:65149AAB X-Served-By: - - cache-den8278-DEN + - cache-lga21962-LGA X-Timer: - - S1695410061.936131,VS0,VE70 + - S1695849648.900666,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:20 GMT + - Wed, 27 Sep 2023 21:22:12 GMT permissions-policy: - interest-cohort=() x-proxy-cache: diff --git a/tests/extensions/cassettes/test_table/TableTest.test_validate.yaml b/tests/extensions/cassettes/test_table/TableTest.test_validate.yaml index 1aa261b50..b2cbfd5d9 100644 --- a/tests/extensions/cassettes/test_table/TableTest.test_validate.yaml +++ b/tests/extensions/cassettes/test_table/TableTest.test_validate.yaml @@ -95,7 +95,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '515' Cache-Control: - max-age=600 Connection: @@ -105,7 +105,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:21 GMT + - Wed, 27 Sep 2023 21:20:48 GMT ETag: - '"612cf691-16c2"' Last-Modified: @@ -119,19 +119,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 73152d885f3b2a00c4598e78872b69fc868ff938 + - ec2afe54b7fe8aae710fac56652698e9b665f88a X-GitHub-Request-Id: - - 1AC0:3717:C43E62:11B5B38:650DE780 + - 81EC:49A9:2EC48F:3EC4BF:65149AAC X-Served-By: - - cache-den8271-DEN + - cache-lga21953-LGA X-Timer: - - S1695410061.232189,VS0,VE62 + - S1695849649.628645,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:21 GMT + - Wed, 27 Sep 2023 21:22:13 GMT permissions-policy: - interest-cohort=() x-proxy-cache: diff --git a/tests/extensions/cassettes/test_timestamps/TimestampsTest.test_expires.yaml b/tests/extensions/cassettes/test_timestamps/TimestampsTest.test_expires.yaml index b7d6ebcdf..70c534807 100644 --- a/tests/extensions/cassettes/test_timestamps/TimestampsTest.test_expires.yaml +++ b/tests/extensions/cassettes/test_timestamps/TimestampsTest.test_expires.yaml @@ -51,7 +51,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '515' Cache-Control: - max-age=600 Connection: @@ -61,7 +61,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:21 GMT + - Wed, 27 Sep 2023 21:20:48 GMT ETag: - '"63b6c089-971"' Last-Modified: @@ -75,19 +75,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 27bc9f5b4d5416669431a95aa36b26f31dbf47eb + - 6b3adb727b5d2ae22e9feecabe9db354cc77dcc3 X-GitHub-Request-Id: - - A4E2:3CEC:D4785E:12B9935:650DE78C + - 5C7C:558C:2C301B:3BDDAD:65149AAB X-Served-By: - - cache-den8282-DEN + - cache-lga21935-LGA X-Timer: - - S1695410061.435876,VS0,VE65 + - S1695849649.784342,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:21 GMT + - Wed, 27 Sep 2023 21:22:13 GMT permissions-policy: - interest-cohort=() x-proxy-cache: diff --git a/tests/extensions/cassettes/test_timestamps/TimestampsTest.test_published.yaml b/tests/extensions/cassettes/test_timestamps/TimestampsTest.test_published.yaml new file mode 100644 index 000000000..04fe851a0 --- /dev/null +++ b/tests/extensions/cassettes/test_timestamps/TimestampsTest.test_published.yaml @@ -0,0 +1,98 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/timestamps/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/timestamps/v1.0.0/schema.json#\",\n \"title\": + \"Timestamps Extension\",\n \"description\": \"STAC Timestamps Extension + to a STAC Item.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the + schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"$ref\": \"#/definitions/fields\"\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/timestamps/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"published\": {\n \"title\": + \"Publish Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"unpublished\": {\n \"title\": + \"Removal Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"expires\": {\n \"title\": \"Expiry + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n + \ }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '516' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2417' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:48 GMT + ETag: + - '"63b6c089-971"' + Last-Modified: + - Thu, 05 Jan 2023 12:20:25 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - c15845e54073d71ec7e2f808e15240bd9aad2205 + X-GitHub-Request-Id: + - 5C7C:558C:2C301B:3BDDAD:65149AAB + X-Served-By: + - cache-lga21956-LGA + X-Timer: + - S1695849649.930093,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:13 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_timestamps/TimestampsTest.test_unpublished.yaml b/tests/extensions/cassettes/test_timestamps/TimestampsTest.test_unpublished.yaml new file mode 100644 index 000000000..48fb83b28 --- /dev/null +++ b/tests/extensions/cassettes/test_timestamps/TimestampsTest.test_unpublished.yaml @@ -0,0 +1,98 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/timestamps/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/timestamps/v1.0.0/schema.json#\",\n \"title\": + \"Timestamps Extension\",\n \"description\": \"STAC Timestamps Extension + to a STAC Item.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the + schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"$ref\": \"#/definitions/fields\"\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/timestamps/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"published\": {\n \"title\": + \"Publish Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"unpublished\": {\n \"title\": + \"Removal Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"expires\": {\n \"title\": \"Expiry + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n + \ }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '516' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2417' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:49 GMT + ETag: + - '"63b6c089-971"' + Last-Modified: + - Thu, 05 Jan 2023 12:20:25 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - a846ccc34a17aec5dd125087ccf1cd1a6cd2f4d6 + X-GitHub-Request-Id: + - 5C7C:558C:2C301B:3BDDAD:65149AAB + X-Served-By: + - cache-lga21944-LGA + X-Timer: + - S1695849649.067395,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:13 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_timestamps/TimestampsTest.test_validate_timestamps.yaml b/tests/extensions/cassettes/test_timestamps/TimestampsTest.test_validate_timestamps.yaml new file mode 100644 index 000000000..8ca9b4c84 --- /dev/null +++ b/tests/extensions/cassettes/test_timestamps/TimestampsTest.test_validate_timestamps.yaml @@ -0,0 +1,98 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/timestamps/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/timestamps/v1.0.0/schema.json#\",\n \"title\": + \"Timestamps Extension\",\n \"description\": \"STAC Timestamps Extension + to a STAC Item.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the + schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"$ref\": \"#/definitions/fields\"\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/timestamps/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"published\": {\n \"title\": + \"Publish Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"unpublished\": {\n \"title\": + \"Removal Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"expires\": {\n \"title\": \"Expiry + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n + \ }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '516' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2417' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:49 GMT + ETag: + - '"63b6c089-971"' + Last-Modified: + - Thu, 05 Jan 2023 12:20:25 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - c1d6c794170ff10305372ac9866421f8fa8d2e8c + X-GitHub-Request-Id: + - 5C7C:558C:2C301B:3BDDAD:65149AAB + X-Served-By: + - cache-lga21959-LGA + X-Timer: + - S1695849649.202698,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:13 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_add_deprecated_version.yaml b/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_add_deprecated_version.yaml new file mode 100644 index 000000000..49f3e4a4a --- /dev/null +++ b/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_add_deprecated_version.yaml @@ -0,0 +1,131 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/version/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json#\",\n \"title\": + \"Versioning Indicators Extension\",\n \"description\": \"STAC Versioning + Indicators Extension for STAC Items and STAC Collections.\",\n \"oneOf\": + [\n {\n \"$comment\": \"This is the schema for STAC Items. Remove + this object if this extension only applies to Collections.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"version\"\n ]\n + \ },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for Collections (top-level).\",\n \"required\": + [\n \"version\"\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n ]\n + \ },\n {\n \"$comment\": \"This validates the fields + in Collection Assets, but does not require them.\",\n \"required\": + [\n \"assets\"\n ],\n \"properties\": {\n \"assets\": + {\n \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"version\"]},\n {\"required\": [\"deprecated\"]}\n ]\n },\n + \ \"fields\": {\n \"type\": \"object\",\n \"properties\": {\n + \ \"version\": {\n \"type\": \"string\",\n \"title\": + \"Version\"\n },\n \"deprecated\": {\n \"type\": \"boolean\",\n + \ \"title\": \"Deprecated\",\n \"default\": false\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '517' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5009' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:50 GMT + ETag: + - '"645249bd-1391"' + Last-Modified: + - Wed, 03 May 2023 11:47:09 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 8b9fffd9434fd81ec501ce6f8c825aa774cc06e7 + X-GitHub-Request-Id: + - 96AE:1981:28905C:3865AF:65149AAC + X-Served-By: + - cache-lga21962-LGA + X-Timer: + - S1695849651.615996,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:13 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_add_not_deprecated_version.yaml b/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_add_not_deprecated_version.yaml new file mode 100644 index 000000000..aa857cea1 --- /dev/null +++ b/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_add_not_deprecated_version.yaml @@ -0,0 +1,131 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/version/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json#\",\n \"title\": + \"Versioning Indicators Extension\",\n \"description\": \"STAC Versioning + Indicators Extension for STAC Items and STAC Collections.\",\n \"oneOf\": + [\n {\n \"$comment\": \"This is the schema for STAC Items. Remove + this object if this extension only applies to Collections.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"version\"\n ]\n + \ },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for Collections (top-level).\",\n \"required\": + [\n \"version\"\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n ]\n + \ },\n {\n \"$comment\": \"This validates the fields + in Collection Assets, but does not require them.\",\n \"required\": + [\n \"assets\"\n ],\n \"properties\": {\n \"assets\": + {\n \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"version\"]},\n {\"required\": [\"deprecated\"]}\n ]\n },\n + \ \"fields\": {\n \"type\": \"object\",\n \"properties\": {\n + \ \"version\": {\n \"type\": \"string\",\n \"title\": + \"Version\"\n },\n \"deprecated\": {\n \"type\": \"boolean\",\n + \ \"title\": \"Deprecated\",\n \"default\": false\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '517' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5009' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:50 GMT + ETag: + - '"645249bd-1391"' + Last-Modified: + - Wed, 03 May 2023 11:47:09 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 5cc8b1daa791094130bd3d647375872983c7a593 + X-GitHub-Request-Id: + - 96AE:1981:28905C:3865AF:65149AAC + X-Served-By: + - cache-lga21944-LGA + X-Timer: + - S1695849651.744949,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:13 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_add_version.yaml b/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_add_version.yaml new file mode 100644 index 000000000..b34cffd5a --- /dev/null +++ b/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_add_version.yaml @@ -0,0 +1,131 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/version/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json#\",\n \"title\": + \"Versioning Indicators Extension\",\n \"description\": \"STAC Versioning + Indicators Extension for STAC Items and STAC Collections.\",\n \"oneOf\": + [\n {\n \"$comment\": \"This is the schema for STAC Items. Remove + this object if this extension only applies to Collections.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"version\"\n ]\n + \ },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for Collections (top-level).\",\n \"required\": + [\n \"version\"\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n ]\n + \ },\n {\n \"$comment\": \"This validates the fields + in Collection Assets, but does not require them.\",\n \"required\": + [\n \"assets\"\n ],\n \"properties\": {\n \"assets\": + {\n \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"version\"]},\n {\"required\": [\"deprecated\"]}\n ]\n },\n + \ \"fields\": {\n \"type\": \"object\",\n \"properties\": {\n + \ \"version\": {\n \"type\": \"string\",\n \"title\": + \"Version\"\n },\n \"deprecated\": {\n \"type\": \"boolean\",\n + \ \"title\": \"Deprecated\",\n \"default\": false\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '517' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5009' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:50 GMT + ETag: + - '"645249bd-1391"' + Last-Modified: + - Wed, 03 May 2023 11:47:09 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - d51a0034913bcb87930977d18078ba0ed2552e2a + X-GitHub-Request-Id: + - 96AE:1981:28905C:3865AF:65149AAC + X-Served-By: + - cache-lga21944-LGA + X-Timer: + - S1695849651.859898,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:13 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_fail_validate.yaml b/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_fail_validate.yaml new file mode 100644 index 000000000..1089f9093 --- /dev/null +++ b/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_fail_validate.yaml @@ -0,0 +1,131 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/version/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json#\",\n \"title\": + \"Versioning Indicators Extension\",\n \"description\": \"STAC Versioning + Indicators Extension for STAC Items and STAC Collections.\",\n \"oneOf\": + [\n {\n \"$comment\": \"This is the schema for STAC Items. Remove + this object if this extension only applies to Collections.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"version\"\n ]\n + \ },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for Collections (top-level).\",\n \"required\": + [\n \"version\"\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n ]\n + \ },\n {\n \"$comment\": \"This validates the fields + in Collection Assets, but does not require them.\",\n \"required\": + [\n \"assets\"\n ],\n \"properties\": {\n \"assets\": + {\n \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"version\"]},\n {\"required\": [\"deprecated\"]}\n ]\n },\n + \ \"fields\": {\n \"type\": \"object\",\n \"properties\": {\n + \ \"version\": {\n \"type\": \"string\",\n \"title\": + \"Version\"\n },\n \"deprecated\": {\n \"type\": \"boolean\",\n + \ \"title\": \"Deprecated\",\n \"default\": false\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '517' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5009' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:50 GMT + ETag: + - '"645249bd-1391"' + Last-Modified: + - Wed, 03 May 2023 11:47:09 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 8aa620895428e2051aaaba178500112e064afcd1 + X-GitHub-Request-Id: + - 96AE:1981:28905C:3865AF:65149AAC + X-Served-By: + - cache-lga21935-LGA + X-Timer: + - S1695849651.980769,VS0,VE11 + expires: + - Wed, 27 Sep 2023 21:22:13 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_latest.yaml b/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_latest.yaml new file mode 100644 index 000000000..b7f65b084 --- /dev/null +++ b/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_latest.yaml @@ -0,0 +1,131 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/version/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json#\",\n \"title\": + \"Versioning Indicators Extension\",\n \"description\": \"STAC Versioning + Indicators Extension for STAC Items and STAC Collections.\",\n \"oneOf\": + [\n {\n \"$comment\": \"This is the schema for STAC Items. Remove + this object if this extension only applies to Collections.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"version\"\n ]\n + \ },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for Collections (top-level).\",\n \"required\": + [\n \"version\"\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n ]\n + \ },\n {\n \"$comment\": \"This validates the fields + in Collection Assets, but does not require them.\",\n \"required\": + [\n \"assets\"\n ],\n \"properties\": {\n \"assets\": + {\n \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"version\"]},\n {\"required\": [\"deprecated\"]}\n ]\n },\n + \ \"fields\": {\n \"type\": \"object\",\n \"properties\": {\n + \ \"version\": {\n \"type\": \"string\",\n \"title\": + \"Version\"\n },\n \"deprecated\": {\n \"type\": \"boolean\",\n + \ \"title\": \"Deprecated\",\n \"default\": false\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '518' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5009' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:51 GMT + ETag: + - '"645249bd-1391"' + Last-Modified: + - Wed, 03 May 2023 11:47:09 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - c68fdd17099afeb9fa2a41aaad460ada72e07f58 + X-GitHub-Request-Id: + - 96AE:1981:28905C:3865AF:65149AAC + X-Served-By: + - cache-lga21953-LGA + X-Timer: + - S1695849651.160246,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:13 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_predecessor.yaml b/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_predecessor.yaml new file mode 100644 index 000000000..c6838680c --- /dev/null +++ b/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_predecessor.yaml @@ -0,0 +1,131 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/version/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json#\",\n \"title\": + \"Versioning Indicators Extension\",\n \"description\": \"STAC Versioning + Indicators Extension for STAC Items and STAC Collections.\",\n \"oneOf\": + [\n {\n \"$comment\": \"This is the schema for STAC Items. Remove + this object if this extension only applies to Collections.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"version\"\n ]\n + \ },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for Collections (top-level).\",\n \"required\": + [\n \"version\"\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n ]\n + \ },\n {\n \"$comment\": \"This validates the fields + in Collection Assets, but does not require them.\",\n \"required\": + [\n \"assets\"\n ],\n \"properties\": {\n \"assets\": + {\n \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"version\"]},\n {\"required\": [\"deprecated\"]}\n ]\n },\n + \ \"fields\": {\n \"type\": \"object\",\n \"properties\": {\n + \ \"version\": {\n \"type\": \"string\",\n \"title\": + \"Version\"\n },\n \"deprecated\": {\n \"type\": \"boolean\",\n + \ \"title\": \"Deprecated\",\n \"default\": false\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '518' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5009' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:51 GMT + ETag: + - '"645249bd-1391"' + Last-Modified: + - Wed, 03 May 2023 11:47:09 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 461d7b8b0785d9d7b5ad98442cb43bb2cfc1b5d5 + X-GitHub-Request-Id: + - 96AE:1981:28905C:3865AF:65149AAC + X-Served-By: + - cache-lga21952-LGA + X-Timer: + - S1695849651.289445,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:13 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_successor.yaml b/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_successor.yaml new file mode 100644 index 000000000..cfc6c7dbf --- /dev/null +++ b/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_successor.yaml @@ -0,0 +1,131 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/version/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json#\",\n \"title\": + \"Versioning Indicators Extension\",\n \"description\": \"STAC Versioning + Indicators Extension for STAC Items and STAC Collections.\",\n \"oneOf\": + [\n {\n \"$comment\": \"This is the schema for STAC Items. Remove + this object if this extension only applies to Collections.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"version\"\n ]\n + \ },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for Collections (top-level).\",\n \"required\": + [\n \"version\"\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n ]\n + \ },\n {\n \"$comment\": \"This validates the fields + in Collection Assets, but does not require them.\",\n \"required\": + [\n \"assets\"\n ],\n \"properties\": {\n \"assets\": + {\n \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"version\"]},\n {\"required\": [\"deprecated\"]}\n ]\n },\n + \ \"fields\": {\n \"type\": \"object\",\n \"properties\": {\n + \ \"version\": {\n \"type\": \"string\",\n \"title\": + \"Version\"\n },\n \"deprecated\": {\n \"type\": \"boolean\",\n + \ \"title\": \"Deprecated\",\n \"default\": false\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '518' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5009' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:51 GMT + ETag: + - '"645249bd-1391"' + Last-Modified: + - Wed, 03 May 2023 11:47:09 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - f0d6b9a4385e311b102ff903774db54d649a26a7 + X-GitHub-Request-Id: + - 96AE:1981:28905C:3865AF:65149AAC + X-Served-By: + - cache-lga21968-LGA + X-Timer: + - S1695849651.421971,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:13 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_validate_all.yaml b/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_validate_all.yaml new file mode 100644 index 000000000..d2b4e44a7 --- /dev/null +++ b/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_validate_all.yaml @@ -0,0 +1,131 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/version/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json#\",\n \"title\": + \"Versioning Indicators Extension\",\n \"description\": \"STAC Versioning + Indicators Extension for STAC Items and STAC Collections.\",\n \"oneOf\": + [\n {\n \"$comment\": \"This is the schema for STAC Items. Remove + this object if this extension only applies to Collections.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"version\"\n ]\n + \ },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for Collections (top-level).\",\n \"required\": + [\n \"version\"\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n ]\n + \ },\n {\n \"$comment\": \"This validates the fields + in Collection Assets, but does not require them.\",\n \"required\": + [\n \"assets\"\n ],\n \"properties\": {\n \"assets\": + {\n \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"version\"]},\n {\"required\": [\"deprecated\"]}\n ]\n },\n + \ \"fields\": {\n \"type\": \"object\",\n \"properties\": {\n + \ \"version\": {\n \"type\": \"string\",\n \"title\": + \"Version\"\n },\n \"deprecated\": {\n \"type\": \"boolean\",\n + \ \"title\": \"Deprecated\",\n \"default\": false\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '518' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5009' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:51 GMT + ETag: + - '"645249bd-1391"' + Last-Modified: + - Wed, 03 May 2023 11:47:09 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - bab94633646923df71cc7974a517a2f291754c77 + X-GitHub-Request-Id: + - 96AE:1981:28905C:3865AF:65149AAC + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849652.572206,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:13 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_version_deprecated.yaml b/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_version_deprecated.yaml new file mode 100644 index 000000000..042b9562a --- /dev/null +++ b/tests/extensions/cassettes/test_version/CollectionVersionExtensionTest.test_version_deprecated.yaml @@ -0,0 +1,131 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/version/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json#\",\n \"title\": + \"Versioning Indicators Extension\",\n \"description\": \"STAC Versioning + Indicators Extension for STAC Items and STAC Collections.\",\n \"oneOf\": + [\n {\n \"$comment\": \"This is the schema for STAC Items. Remove + this object if this extension only applies to Collections.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"version\"\n ]\n + \ },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for Collections (top-level).\",\n \"required\": + [\n \"version\"\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n ]\n + \ },\n {\n \"$comment\": \"This validates the fields + in Collection Assets, but does not require them.\",\n \"required\": + [\n \"assets\"\n ],\n \"properties\": {\n \"assets\": + {\n \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"version\"]},\n {\"required\": [\"deprecated\"]}\n ]\n },\n + \ \"fields\": {\n \"type\": \"object\",\n \"properties\": {\n + \ \"version\": {\n \"type\": \"string\",\n \"title\": + \"Version\"\n },\n \"deprecated\": {\n \"type\": \"boolean\",\n + \ \"title\": \"Deprecated\",\n \"default\": false\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '518' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5009' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:51 GMT + ETag: + - '"645249bd-1391"' + Last-Modified: + - Wed, 03 May 2023 11:47:09 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - b9a3c67614808f15330b3f58d48c3cccd713e625 + X-GitHub-Request-Id: + - 96AE:1981:28905C:3865AF:65149AAC + X-Served-By: + - cache-lga21954-LGA + X-Timer: + - S1695849652.706984,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:13 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_add_deprecated_version.yaml b/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_add_deprecated_version.yaml index cef27f1c1..81c865b80 100644 --- a/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_add_deprecated_version.yaml +++ b/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_add_deprecated_version.yaml @@ -84,7 +84,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '516' Cache-Control: - max-age=600 Connection: @@ -94,7 +94,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:21 GMT + - Wed, 27 Sep 2023 21:20:49 GMT ETag: - '"645249bd-1391"' Last-Modified: @@ -108,19 +108,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 0c18791539808a098fcb33016e07d1f44ced9b7a + - 8d49cb7e72d6110e2197d72dfcccd36016b39459 X-GitHub-Request-Id: - - 5F5C:6545:C466B6:11B7D30:650DE78B + - 96AE:1981:28905C:3865AF:65149AAC X-Served-By: - - cache-den8271-DEN + - cache-lga21971-LGA X-Timer: - - S1695410062.697264,VS0,VE62 + - S1695849649.351212,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:24:21 GMT + - Wed, 27 Sep 2023 21:22:13 GMT permissions-policy: - interest-cohort=() x-proxy-cache: diff --git a/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_add_not_deprecated_version.yaml b/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_add_not_deprecated_version.yaml new file mode 100644 index 000000000..1016aaa26 --- /dev/null +++ b/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_add_not_deprecated_version.yaml @@ -0,0 +1,131 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/version/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json#\",\n \"title\": + \"Versioning Indicators Extension\",\n \"description\": \"STAC Versioning + Indicators Extension for STAC Items and STAC Collections.\",\n \"oneOf\": + [\n {\n \"$comment\": \"This is the schema for STAC Items. Remove + this object if this extension only applies to Collections.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"version\"\n ]\n + \ },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for Collections (top-level).\",\n \"required\": + [\n \"version\"\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n ]\n + \ },\n {\n \"$comment\": \"This validates the fields + in Collection Assets, but does not require them.\",\n \"required\": + [\n \"assets\"\n ],\n \"properties\": {\n \"assets\": + {\n \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"version\"]},\n {\"required\": [\"deprecated\"]}\n ]\n },\n + \ \"fields\": {\n \"type\": \"object\",\n \"properties\": {\n + \ \"version\": {\n \"type\": \"string\",\n \"title\": + \"Version\"\n },\n \"deprecated\": {\n \"type\": \"boolean\",\n + \ \"title\": \"Deprecated\",\n \"default\": false\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '516' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5009' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:49 GMT + ETag: + - '"645249bd-1391"' + Last-Modified: + - Wed, 03 May 2023 11:47:09 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 0d1710c11f74dd885ed23c36249d7cc7a99f4f60 + X-GitHub-Request-Id: + - 96AE:1981:28905C:3865AF:65149AAC + X-Served-By: + - cache-lga21938-LGA + X-Timer: + - S1695849649.472479,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:13 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_add_version.yaml b/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_add_version.yaml new file mode 100644 index 000000000..62102665e --- /dev/null +++ b/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_add_version.yaml @@ -0,0 +1,131 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/version/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json#\",\n \"title\": + \"Versioning Indicators Extension\",\n \"description\": \"STAC Versioning + Indicators Extension for STAC Items and STAC Collections.\",\n \"oneOf\": + [\n {\n \"$comment\": \"This is the schema for STAC Items. Remove + this object if this extension only applies to Collections.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"version\"\n ]\n + \ },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for Collections (top-level).\",\n \"required\": + [\n \"version\"\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n ]\n + \ },\n {\n \"$comment\": \"This validates the fields + in Collection Assets, but does not require them.\",\n \"required\": + [\n \"assets\"\n ],\n \"properties\": {\n \"assets\": + {\n \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"version\"]},\n {\"required\": [\"deprecated\"]}\n ]\n },\n + \ \"fields\": {\n \"type\": \"object\",\n \"properties\": {\n + \ \"version\": {\n \"type\": \"string\",\n \"title\": + \"Version\"\n },\n \"deprecated\": {\n \"type\": \"boolean\",\n + \ \"title\": \"Deprecated\",\n \"default\": false\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '516' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5009' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:49 GMT + ETag: + - '"645249bd-1391"' + Last-Modified: + - Wed, 03 May 2023 11:47:09 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 7268ba787ef0f580c134058a458e3a71dfec2e7a + X-GitHub-Request-Id: + - 96AE:1981:28905C:3865AF:65149AAC + X-Served-By: + - cache-lga21956-LGA + X-Timer: + - S1695849650.608273,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:13 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_all_links.yaml b/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_all_links.yaml new file mode 100644 index 000000000..1dc7361aa --- /dev/null +++ b/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_all_links.yaml @@ -0,0 +1,131 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/version/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json#\",\n \"title\": + \"Versioning Indicators Extension\",\n \"description\": \"STAC Versioning + Indicators Extension for STAC Items and STAC Collections.\",\n \"oneOf\": + [\n {\n \"$comment\": \"This is the schema for STAC Items. Remove + this object if this extension only applies to Collections.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"version\"\n ]\n + \ },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for Collections (top-level).\",\n \"required\": + [\n \"version\"\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n ]\n + \ },\n {\n \"$comment\": \"This validates the fields + in Collection Assets, but does not require them.\",\n \"required\": + [\n \"assets\"\n ],\n \"properties\": {\n \"assets\": + {\n \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"version\"]},\n {\"required\": [\"deprecated\"]}\n ]\n },\n + \ \"fields\": {\n \"type\": \"object\",\n \"properties\": {\n + \ \"version\": {\n \"type\": \"string\",\n \"title\": + \"Version\"\n },\n \"deprecated\": {\n \"type\": \"boolean\",\n + \ \"title\": \"Deprecated\",\n \"default\": false\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '516' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5009' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:49 GMT + ETag: + - '"645249bd-1391"' + Last-Modified: + - Wed, 03 May 2023 11:47:09 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 23409828487e62ce75feddb9098c346366ddc99d + X-GitHub-Request-Id: + - 96AE:1981:28905C:3865AF:65149AAC + X-Served-By: + - cache-lga21962-LGA + X-Timer: + - S1695849650.736781,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:13 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_fail_validate.yaml b/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_fail_validate.yaml new file mode 100644 index 000000000..afb162029 --- /dev/null +++ b/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_fail_validate.yaml @@ -0,0 +1,131 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/version/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json#\",\n \"title\": + \"Versioning Indicators Extension\",\n \"description\": \"STAC Versioning + Indicators Extension for STAC Items and STAC Collections.\",\n \"oneOf\": + [\n {\n \"$comment\": \"This is the schema for STAC Items. Remove + this object if this extension only applies to Collections.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"version\"\n ]\n + \ },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for Collections (top-level).\",\n \"required\": + [\n \"version\"\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n ]\n + \ },\n {\n \"$comment\": \"This validates the fields + in Collection Assets, but does not require them.\",\n \"required\": + [\n \"assets\"\n ],\n \"properties\": {\n \"assets\": + {\n \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"version\"]},\n {\"required\": [\"deprecated\"]}\n ]\n },\n + \ \"fields\": {\n \"type\": \"object\",\n \"properties\": {\n + \ \"version\": {\n \"type\": \"string\",\n \"title\": + \"Version\"\n },\n \"deprecated\": {\n \"type\": \"boolean\",\n + \ \"title\": \"Deprecated\",\n \"default\": false\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '516' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5009' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:49 GMT + ETag: + - '"645249bd-1391"' + Last-Modified: + - Wed, 03 May 2023 11:47:09 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 3de786e583bfd289b3b278cbd9d8cf4b3047614c + X-GitHub-Request-Id: + - 96AE:1981:28905C:3865AF:65149AAC + X-Served-By: + - cache-lga21950-LGA + X-Timer: + - S1695849650.880264,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:13 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_latest.yaml b/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_latest.yaml new file mode 100644 index 000000000..b1df6a2d5 --- /dev/null +++ b/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_latest.yaml @@ -0,0 +1,131 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/version/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json#\",\n \"title\": + \"Versioning Indicators Extension\",\n \"description\": \"STAC Versioning + Indicators Extension for STAC Items and STAC Collections.\",\n \"oneOf\": + [\n {\n \"$comment\": \"This is the schema for STAC Items. Remove + this object if this extension only applies to Collections.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"version\"\n ]\n + \ },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for Collections (top-level).\",\n \"required\": + [\n \"version\"\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n ]\n + \ },\n {\n \"$comment\": \"This validates the fields + in Collection Assets, but does not require them.\",\n \"required\": + [\n \"assets\"\n ],\n \"properties\": {\n \"assets\": + {\n \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"version\"]},\n {\"required\": [\"deprecated\"]}\n ]\n },\n + \ \"fields\": {\n \"type\": \"object\",\n \"properties\": {\n + \ \"version\": {\n \"type\": \"string\",\n \"title\": + \"Version\"\n },\n \"deprecated\": {\n \"type\": \"boolean\",\n + \ \"title\": \"Deprecated\",\n \"default\": false\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '516' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5009' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:50 GMT + ETag: + - '"645249bd-1391"' + Last-Modified: + - Wed, 03 May 2023 11:47:09 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 8803f491844c96a22564e51ecd5cdf1fbd6214b5 + X-GitHub-Request-Id: + - 96AE:1981:28905C:3865AF:65149AAC + X-Served-By: + - cache-lga21947-LGA + X-Timer: + - S1695849650.041793,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:13 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_predecessor.yaml b/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_predecessor.yaml new file mode 100644 index 000000000..3c1e3951a --- /dev/null +++ b/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_predecessor.yaml @@ -0,0 +1,131 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/version/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json#\",\n \"title\": + \"Versioning Indicators Extension\",\n \"description\": \"STAC Versioning + Indicators Extension for STAC Items and STAC Collections.\",\n \"oneOf\": + [\n {\n \"$comment\": \"This is the schema for STAC Items. Remove + this object if this extension only applies to Collections.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"version\"\n ]\n + \ },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for Collections (top-level).\",\n \"required\": + [\n \"version\"\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n ]\n + \ },\n {\n \"$comment\": \"This validates the fields + in Collection Assets, but does not require them.\",\n \"required\": + [\n \"assets\"\n ],\n \"properties\": {\n \"assets\": + {\n \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"version\"]},\n {\"required\": [\"deprecated\"]}\n ]\n },\n + \ \"fields\": {\n \"type\": \"object\",\n \"properties\": {\n + \ \"version\": {\n \"type\": \"string\",\n \"title\": + \"Version\"\n },\n \"deprecated\": {\n \"type\": \"boolean\",\n + \ \"title\": \"Deprecated\",\n \"default\": false\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '517' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5009' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:50 GMT + ETag: + - '"645249bd-1391"' + Last-Modified: + - Wed, 03 May 2023 11:47:09 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 351e5d16b1673cf1be6b345ca7c427f93662b47f + X-GitHub-Request-Id: + - 96AE:1981:28905C:3865AF:65149AAC + X-Served-By: + - cache-lga21928-LGA + X-Timer: + - S1695849650.203105,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:13 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_successor.yaml b/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_successor.yaml new file mode 100644 index 000000000..c218ee89c --- /dev/null +++ b/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_successor.yaml @@ -0,0 +1,131 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/version/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json#\",\n \"title\": + \"Versioning Indicators Extension\",\n \"description\": \"STAC Versioning + Indicators Extension for STAC Items and STAC Collections.\",\n \"oneOf\": + [\n {\n \"$comment\": \"This is the schema for STAC Items. Remove + this object if this extension only applies to Collections.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"version\"\n ]\n + \ },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for Collections (top-level).\",\n \"required\": + [\n \"version\"\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n ]\n + \ },\n {\n \"$comment\": \"This validates the fields + in Collection Assets, but does not require them.\",\n \"required\": + [\n \"assets\"\n ],\n \"properties\": {\n \"assets\": + {\n \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"version\"]},\n {\"required\": [\"deprecated\"]}\n ]\n },\n + \ \"fields\": {\n \"type\": \"object\",\n \"properties\": {\n + \ \"version\": {\n \"type\": \"string\",\n \"title\": + \"Version\"\n },\n \"deprecated\": {\n \"type\": \"boolean\",\n + \ \"title\": \"Deprecated\",\n \"default\": false\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '517' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5009' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:50 GMT + ETag: + - '"645249bd-1391"' + Last-Modified: + - Wed, 03 May 2023 11:47:09 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - b4f39da9a3d422da91576b6743202220c8c70f13 + X-GitHub-Request-Id: + - 96AE:1981:28905C:3865AF:65149AAC + X-Served-By: + - cache-lga21965-LGA + X-Timer: + - S1695849650.349754,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:13 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_version_in_properties.yaml b/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_version_in_properties.yaml new file mode 100644 index 000000000..3c835c4b3 --- /dev/null +++ b/tests/extensions/cassettes/test_version/ItemVersionExtensionTest.test_version_in_properties.yaml @@ -0,0 +1,131 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/version/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json#\",\n \"title\": + \"Versioning Indicators Extension\",\n \"description\": \"STAC Versioning + Indicators Extension for STAC Items and STAC Collections.\",\n \"oneOf\": + [\n {\n \"$comment\": \"This is the schema for STAC Items. Remove + this object if this extension only applies to Collections.\",\n \"allOf\": + [\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"version\"\n ]\n + \ },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for Collections (top-level).\",\n \"required\": + [\n \"version\"\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n ]\n + \ },\n {\n \"$comment\": \"This validates the fields + in Collection Assets, but does not require them.\",\n \"required\": + [\n \"assets\"\n ],\n \"properties\": {\n \"assets\": + {\n \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/version/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"version\"]},\n {\"required\": [\"deprecated\"]}\n ]\n },\n + \ \"fields\": {\n \"type\": \"object\",\n \"properties\": {\n + \ \"version\": {\n \"type\": \"string\",\n \"title\": + \"Version\"\n },\n \"deprecated\": {\n \"type\": \"boolean\",\n + \ \"title\": \"Deprecated\",\n \"default\": false\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '517' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5009' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:50 GMT + ETag: + - '"645249bd-1391"' + Last-Modified: + - Wed, 03 May 2023 11:47:09 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - c8757216a09cff172aa5f3dd6f582888f9420c7a + X-GitHub-Request-Id: + - 96AE:1981:28905C:3865AF:65149AAC + X-Served-By: + - cache-lga21953-LGA + X-Timer: + - S1695849650.494674,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:13 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_view/ViewTest.test_azimuth.yaml b/tests/extensions/cassettes/test_view/ViewTest.test_azimuth.yaml new file mode 100644 index 000000000..16533eb2f --- /dev/null +++ b/tests/extensions/cassettes/test_view/ViewTest.test_azimuth.yaml @@ -0,0 +1,224 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '550' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:51 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - b081344df21a0f584af4d6cc08cfe2f38935ebd0 + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21933-LGA + X-Timer: + - S1695849652.855556,VS0,VE2 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/sat/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n \"title\": + \"Satellite Extension\",\n \"description\": \"STAC Sat Extension to a STAC + Item.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the schema + for STAC Items.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"sat:platform_international_designator\"\n + \ ]\n },\n {\n \"required\": + [\n \"sat:orbit_state\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:absolute_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:relative_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:anx_datetime\"\n ]\n + \ }\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"sat:platform_international_designator\": + {\n \"type\": \"string\"\n },\n \"sat:orbit_state\": + {\n \"title\": \"Orbit State\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"ascending\",\n \"descending\",\n + \ \"geostationary\"\n ]\n },\n \"sat:absolute_orbit\": + {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n + \ \"sat:relative_orbit\": {\n \"type\": \"integer\",\n \"minimum\": + 1\n },\n \"sat:anx_datetime\": {\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n },\n \"patternProperties\": + {\n \"^(?!sat:)\": {\n \"$comment\": \"Do not allow unspecified + fields prefixed with sat:\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '520' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3714' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:51 GMT + ETag: + - '"60414dd7-e82"' + Last-Modified: + - Thu, 04 Mar 2021 21:15:03 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - be0760613e2cc3e49bc4068936650ce6cc927d19 + X-GitHub-Request-Id: + - 641A:3987:3006D4:3FE2D6:65149AAA + X-Served-By: + - cache-lga21945-LGA + X-Timer: + - S1695849652.966807,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:11 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_view/ViewTest.test_incidence_angle.yaml b/tests/extensions/cassettes/test_view/ViewTest.test_incidence_angle.yaml new file mode 100644 index 000000000..b204daf26 --- /dev/null +++ b/tests/extensions/cassettes/test_view/ViewTest.test_incidence_angle.yaml @@ -0,0 +1,224 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '550' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:52 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 5c5f6b1b8f28f7c94c0c8fa5f531ca5912bf915e + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21948-LGA + X-Timer: + - S1695849652.107798,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/sat/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n \"title\": + \"Satellite Extension\",\n \"description\": \"STAC Sat Extension to a STAC + Item.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the schema + for STAC Items.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"sat:platform_international_designator\"\n + \ ]\n },\n {\n \"required\": + [\n \"sat:orbit_state\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:absolute_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:relative_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:anx_datetime\"\n ]\n + \ }\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"sat:platform_international_designator\": + {\n \"type\": \"string\"\n },\n \"sat:orbit_state\": + {\n \"title\": \"Orbit State\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"ascending\",\n \"descending\",\n + \ \"geostationary\"\n ]\n },\n \"sat:absolute_orbit\": + {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n + \ \"sat:relative_orbit\": {\n \"type\": \"integer\",\n \"minimum\": + 1\n },\n \"sat:anx_datetime\": {\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n },\n \"patternProperties\": + {\n \"^(?!sat:)\": {\n \"$comment\": \"Do not allow unspecified + fields prefixed with sat:\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '521' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3714' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:52 GMT + ETag: + - '"60414dd7-e82"' + Last-Modified: + - Thu, 04 Mar 2021 21:15:03 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - d1797b93b0fc20654bebc7efb492b5e3f9cc06ca + X-GitHub-Request-Id: + - 641A:3987:3006D4:3FE2D6:65149AAA + X-Served-By: + - cache-lga21967-LGA + X-Timer: + - S1695849652.220263,VS0,VE11 + expires: + - Wed, 27 Sep 2023 21:22:11 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_view/ViewTest.test_off_nadir.yaml b/tests/extensions/cassettes/test_view/ViewTest.test_off_nadir.yaml new file mode 100644 index 000000000..37def48a7 --- /dev/null +++ b/tests/extensions/cassettes/test_view/ViewTest.test_off_nadir.yaml @@ -0,0 +1,224 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '550' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:52 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 9c40ba8707048f683178452366137224190e55d6 + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21946-LGA + X-Timer: + - S1695849652.370808,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/sat/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n \"title\": + \"Satellite Extension\",\n \"description\": \"STAC Sat Extension to a STAC + Item.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the schema + for STAC Items.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"sat:platform_international_designator\"\n + \ ]\n },\n {\n \"required\": + [\n \"sat:orbit_state\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:absolute_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:relative_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:anx_datetime\"\n ]\n + \ }\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"sat:platform_international_designator\": + {\n \"type\": \"string\"\n },\n \"sat:orbit_state\": + {\n \"title\": \"Orbit State\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"ascending\",\n \"descending\",\n + \ \"geostationary\"\n ]\n },\n \"sat:absolute_orbit\": + {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n + \ \"sat:relative_orbit\": {\n \"type\": \"integer\",\n \"minimum\": + 1\n },\n \"sat:anx_datetime\": {\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n },\n \"patternProperties\": + {\n \"^(?!sat:)\": {\n \"$comment\": \"Do not allow unspecified + fields prefixed with sat:\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '521' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3714' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:52 GMT + ETag: + - '"60414dd7-e82"' + Last-Modified: + - Thu, 04 Mar 2021 21:15:03 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 5617dedf87fc78dbd967f2c2532dd9865da2a462 + X-GitHub-Request-Id: + - 641A:3987:3006D4:3FE2D6:65149AAA + X-Served-By: + - cache-lga21958-LGA + X-Timer: + - S1695849652.486391,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:11 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_view/ViewTest.test_sun_azimuth.yaml b/tests/extensions/cassettes/test_view/ViewTest.test_sun_azimuth.yaml new file mode 100644 index 000000000..cb7818971 --- /dev/null +++ b/tests/extensions/cassettes/test_view/ViewTest.test_sun_azimuth.yaml @@ -0,0 +1,224 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '551' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:52 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 78efc4fa15a8eac32dec9df016573d7af4c95e47 + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21949-LGA + X-Timer: + - S1695849653.632194,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/sat/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n \"title\": + \"Satellite Extension\",\n \"description\": \"STAC Sat Extension to a STAC + Item.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the schema + for STAC Items.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"sat:platform_international_designator\"\n + \ ]\n },\n {\n \"required\": + [\n \"sat:orbit_state\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:absolute_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:relative_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:anx_datetime\"\n ]\n + \ }\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"sat:platform_international_designator\": + {\n \"type\": \"string\"\n },\n \"sat:orbit_state\": + {\n \"title\": \"Orbit State\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"ascending\",\n \"descending\",\n + \ \"geostationary\"\n ]\n },\n \"sat:absolute_orbit\": + {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n + \ \"sat:relative_orbit\": {\n \"type\": \"integer\",\n \"minimum\": + 1\n },\n \"sat:anx_datetime\": {\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n },\n \"patternProperties\": + {\n \"^(?!sat:)\": {\n \"$comment\": \"Do not allow unspecified + fields prefixed with sat:\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '522' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3714' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:52 GMT + ETag: + - '"60414dd7-e82"' + Last-Modified: + - Thu, 04 Mar 2021 21:15:03 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 7890294ff3c0b0912a9c5cdcbc1bc69f839a1238 + X-GitHub-Request-Id: + - 641A:3987:3006D4:3FE2D6:65149AAA + X-Served-By: + - cache-lga21967-LGA + X-Timer: + - S1695849653.754038,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:11 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_view/ViewTest.test_sun_elevation.yaml b/tests/extensions/cassettes/test_view/ViewTest.test_sun_elevation.yaml new file mode 100644 index 000000000..7a9650b87 --- /dev/null +++ b/tests/extensions/cassettes/test_view/ViewTest.test_sun_elevation.yaml @@ -0,0 +1,224 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '551' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:52 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - ef91d6c9d8d3823732bf09e4719a67643e6c32e1 + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21951-LGA + X-Timer: + - S1695849653.895457,VS0,VE2 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/sat/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n \"title\": + \"Satellite Extension\",\n \"description\": \"STAC Sat Extension to a STAC + Item.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the schema + for STAC Items.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"sat:platform_international_designator\"\n + \ ]\n },\n {\n \"required\": + [\n \"sat:orbit_state\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:absolute_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:relative_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:anx_datetime\"\n ]\n + \ }\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"sat:platform_international_designator\": + {\n \"type\": \"string\"\n },\n \"sat:orbit_state\": + {\n \"title\": \"Orbit State\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"ascending\",\n \"descending\",\n + \ \"geostationary\"\n ]\n },\n \"sat:absolute_orbit\": + {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n + \ \"sat:relative_orbit\": {\n \"type\": \"integer\",\n \"minimum\": + 1\n },\n \"sat:anx_datetime\": {\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n },\n \"patternProperties\": + {\n \"^(?!sat:)\": {\n \"$comment\": \"Do not allow unspecified + fields prefixed with sat:\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '521' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3714' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:53 GMT + ETag: + - '"60414dd7-e82"' + Last-Modified: + - Thu, 04 Mar 2021 21:15:03 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 4e2fa0ff8764be67ccd943d5f8b4a2f1d1d28608 + X-GitHub-Request-Id: + - 641A:3987:3006D4:3FE2D6:65149AAA + X-Served-By: + - cache-lga21939-LGA + X-Timer: + - S1695849653.012620,VS0,VE3 + expires: + - Wed, 27 Sep 2023 21:22:11 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_view/ViewTest.test_validate_view.yaml b/tests/extensions/cassettes/test_view/ViewTest.test_validate_view.yaml new file mode 100644 index 000000000..854c596dd --- /dev/null +++ b/tests/extensions/cassettes/test_view/ViewTest.test_validate_view.yaml @@ -0,0 +1,224 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '552' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:53 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - d37a3afc678ab52abde15d0f1cf183aa7c04c08d + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21960-LGA + X-Timer: + - S1695849653.151413,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/sat/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n \"title\": + \"Satellite Extension\",\n \"description\": \"STAC Sat Extension to a STAC + Item.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the schema + for STAC Items.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"sat:platform_international_designator\"\n + \ ]\n },\n {\n \"required\": + [\n \"sat:orbit_state\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:absolute_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:relative_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:anx_datetime\"\n ]\n + \ }\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"sat:platform_international_designator\": + {\n \"type\": \"string\"\n },\n \"sat:orbit_state\": + {\n \"title\": \"Orbit State\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"ascending\",\n \"descending\",\n + \ \"geostationary\"\n ]\n },\n \"sat:absolute_orbit\": + {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n + \ \"sat:relative_orbit\": {\n \"type\": \"integer\",\n \"minimum\": + 1\n },\n \"sat:anx_datetime\": {\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n },\n \"patternProperties\": + {\n \"^(?!sat:)\": {\n \"$comment\": \"Do not allow unspecified + fields prefixed with sat:\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '522' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3714' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:53 GMT + ETag: + - '"60414dd7-e82"' + Last-Modified: + - Thu, 04 Mar 2021 21:15:03 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 01cffdcd154a1be9bb85b44aa832578c17be3369 + X-GitHub-Request-Id: + - 641A:3987:3006D4:3FE2D6:65149AAA + X-Served-By: + - cache-lga21942-LGA + X-Timer: + - S1695849653.260638,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:11 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_xarray_assets/test_collection_validate.yaml b/tests/extensions/cassettes/test_xarray_assets/test_collection_validate.yaml new file mode 100644 index 000000000..13ba5a017 --- /dev/null +++ b/tests/extensions/cassettes/test_xarray_assets/test_collection_validate.yaml @@ -0,0 +1,106 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/xarray-assets/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/xarray-assets/v1.0.0/schema.json#\",\n + \ \"title\": \"xarray Assets Extension\",\n \"description\": \"xarray Assets + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\"\n + \ },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections. Remove this object if this extension does not define + top-level fields for Collections AND can't be used in collection assets or + item asset defintions.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"$comment\": \"Remove this object if this + extension does not define top-level fields for Collections.\",\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/xarray-assets/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"fields\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"xarray:open_kwargs\": {\n \"type\": + \"object\"\n },\n \"xarray:storage_options\": {\n \"type\": + \"object\"\n }\n },\n \"patternProperties\": {\n \"^(?!xarray:)\": + {\n \"$comment\": \"\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '519' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2992' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:53 GMT + ETag: + - '"60dcd7ae-bb0"' + Last-Modified: + - Wed, 30 Jun 2021 20:44:30 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - aa62b1bdf2c3d77f4c08a8d35a523856e9f952cd + X-GitHub-Request-Id: + - 954A:1DFB:2D27F2:3D1639:65149AA3 + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849654.607145,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:14 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_xarray_assets/test_item_validate.yaml b/tests/extensions/cassettes/test_xarray_assets/test_item_validate.yaml index 7b11bc380..0201a3006 100644 --- a/tests/extensions/cassettes/test_xarray_assets/test_item_validate.yaml +++ b/tests/extensions/cassettes/test_xarray_assets/test_item_validate.yaml @@ -59,7 +59,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '519' Cache-Control: - max-age=600 Connection: @@ -69,7 +69,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:22 GMT + - Wed, 27 Sep 2023 21:20:53 GMT ETag: - '"60dcd7ae-bb0"' Last-Modified: @@ -83,19 +83,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - ec0bdd0689bbb536597263edf50c8cbf221ffae6 + - af3730db4e7218ed59ba0e7f273aea7366f40ac2 X-GitHub-Request-Id: - - EE1A:517F:BA3E44:1115309:650DE78E + - 954A:1DFB:2D27F2:3D1639:65149AA3 X-Served-By: - - cache-den8229-DEN + - cache-lga21954-LGA X-Timer: - - S1695410063.568953,VS0,VE112 + - S1695849653.475023,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:22 GMT + - Wed, 27 Sep 2023 21:22:14 GMT permissions-policy: - interest-cohort=() x-proxy-cache: diff --git a/tests/extensions/cassettes/test_xarray_assets/test_set_field[open_kwargs-value1].yaml b/tests/extensions/cassettes/test_xarray_assets/test_set_field[open_kwargs-value1].yaml new file mode 100644 index 000000000..a7567a258 --- /dev/null +++ b/tests/extensions/cassettes/test_xarray_assets/test_set_field[open_kwargs-value1].yaml @@ -0,0 +1,106 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/xarray-assets/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/xarray-assets/v1.0.0/schema.json#\",\n + \ \"title\": \"xarray Assets Extension\",\n \"description\": \"xarray Assets + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\"\n + \ },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections. Remove this object if this extension does not define + top-level fields for Collections AND can't be used in collection assets or + item asset defintions.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"$comment\": \"Remove this object if this + extension does not define top-level fields for Collections.\",\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/xarray-assets/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"fields\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"xarray:open_kwargs\": {\n \"type\": + \"object\"\n },\n \"xarray:storage_options\": {\n \"type\": + \"object\"\n }\n },\n \"patternProperties\": {\n \"^(?!xarray:)\": + {\n \"$comment\": \"\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '519' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2992' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:53 GMT + ETag: + - '"60dcd7ae-bb0"' + Last-Modified: + - Wed, 30 Jun 2021 20:44:30 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - ae0442ac34118cc6fae7f20413ff02dc02db2a17 + X-GitHub-Request-Id: + - 954A:1DFB:2D27F2:3D1639:65149AA3 + X-Served-By: + - cache-lga21967-LGA + X-Timer: + - S1695849654.897718,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:14 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/extensions/cassettes/test_xarray_assets/test_set_field[storage_options-value0].yaml b/tests/extensions/cassettes/test_xarray_assets/test_set_field[storage_options-value0].yaml new file mode 100644 index 000000000..e8afb8487 --- /dev/null +++ b/tests/extensions/cassettes/test_xarray_assets/test_set_field[storage_options-value0].yaml @@ -0,0 +1,106 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/xarray-assets/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/xarray-assets/v1.0.0/schema.json#\",\n + \ \"title\": \"xarray Assets Extension\",\n \"description\": \"xarray Assets + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\"\n + \ },\n {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections. Remove this object if this extension does not define + top-level fields for Collections AND can't be used in collection assets or + item asset defintions.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"$comment\": \"Remove this object if this + extension does not define top-level fields for Collections.\",\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/xarray-assets/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"fields\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"xarray:open_kwargs\": {\n \"type\": + \"object\"\n },\n \"xarray:storage_options\": {\n \"type\": + \"object\"\n }\n },\n \"patternProperties\": {\n \"^(?!xarray:)\": + {\n \"$comment\": \"\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '519' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2992' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:20:53 GMT + ETag: + - '"60dcd7ae-bb0"' + Last-Modified: + - Wed, 30 Jun 2021 20:44:30 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - f5231ffb4a6fb23844247c755fc7907629eeb803 + X-GitHub-Request-Id: + - 954A:1DFB:2D27F2:3D1639:65149AA3 + X-Served-By: + - cache-lga21952-LGA + X-Timer: + - S1695849654.765706,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:14 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_all[test_case0].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_all[test_case0].yaml index 5c4c88cd7..6e27038ca 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_all[test_case0].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_all[test_case0].yaml @@ -1,4 +1,386 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '0' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:19 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - a24358205321661fa3c9db38190a910b8e2c0687 + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21969-LGA + X-Timer: + - S1695849739.101030,VS0,VE16 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n },\n \"summaries\": {\n + \ \"$ref\": \"#/definitions/summaries\"\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": {\n \"min\": + {\n \"title\": \"Minimum value\",\n \"type\": + [\"number\", \"string\"]\n },\n \"max\": {\n \"title\": + \"Maximum value\",\n \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": \"Set of + values\",\n \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"description\": \"Any data type could + occur.\"\n }\n }\n ]\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2638' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:19 GMT + ETag: + - '"3b514933a3747f038125935624a13df108e30fe1cb8f9660a7f54ac6d4765ce9"' + Expires: + - Wed, 27 Sep 2023 21:27:19 GMT + Source-Age: + - '84' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 0dd654b4dd16058a17e9eef5abd7fb6ce7b3f2c8 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 146A:2756:778FB:90182:65149AAF + X-Served-By: + - cache-lga21933-LGA + X-Timer: + - S1695849739.420011,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"checksum\",\n + \ \"scientific\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"version\": {\n \"title\": + \"Collection Version\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Homepage\",\n \"type\": \"string\",\n + \ \"format\": \"url\"\n }\n }\n }\n + \ },\n \"extent\": {\n \"title\": \"Extents\",\n \"type\": + \"object\",\n \"required\": [\n \"spatial\",\n \"temporal\"\n + \ ],\n \"properties\": {\n \"spatial\": {\n \"title\": + \"Spatial extent object\",\n \"type\": \"object\",\n \"required\": + [\n \"bbox\"\n ],\n \"properties\": + {\n \"bbox\": {\n \"title\": \"Spatial extents\",\n + \ \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"title\": \"Spatial extent\",\n + \ \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"properties\": {\n \"title\": \"Common properties\",\n \"type\": + \"object\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '4394' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:19 GMT + ETag: + - '"031974beaaaf6f0b5c6877dc97088d9e2aff3bc8962df33ff291dddded353f09"' + Expires: + - Wed, 27 Sep 2023 21:27:19 GMT + Source-Age: + - '84' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - d158dd098ff36cd8f413d931c0897b2d87797c75 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - D9DE:5675:4608:5765:65149AAF + X-Served-By: + - cache-lga21946-LGA + X-Timer: + - S1695849740.522750,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: body: null headers: @@ -111,7 +493,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '582' Cache-Control: - max-age=600 Connection: @@ -121,11 +503,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:47 GMT + - Wed, 27 Sep 2023 21:22:19 GMT ETag: - - '"647f85f4-1b3a"' + - '"65147dc1-1b3a"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -133,19 +515,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 4e11d54f897edd1d9d7c2887d904c11cd159ab27 + - fcb876ec908e22f5bc1c87bc8413a866c543bde7 X-GitHub-Request-Id: - - 103A:8553:D6379C:1218FF0:650DE7A7 + - B090:10B4:DB7D7:145642:65148555 X-Served-By: - - cache-den8246-DEN + - cache-lga21960-LGA X-Timer: - - S1695410088.735920,VS0,VE70 + - S1695849740.626821,VS0,VE3 expires: - - Fri, 22 Sep 2023 19:24:47 GMT + - Wed, 27 Sep 2023 19:51:09 GMT x-proxy-cache: - MISS status: @@ -178,7 +560,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '582' Cache-Control: - max-age=600 Connection: @@ -188,11 +570,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:48 GMT + - Wed, 27 Sep 2023 21:22:19 GMT ETag: - - '"647f85f4-21a"' + - '"65147dc1-21a"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -200,21 +582,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 9f2892b64847c882d8ffae199684cc202805ea49 + - e95d2942b5130ae2c7d2b6152fc4218c74b1f350 X-GitHub-Request-Id: - - 3750:33E5:BF7F14:10ACE14:650DE7A7 + - FB64:6E26:1C4B8F:28510C:65148554 X-Served-By: - - cache-den8259-DEN + - cache-lga21980-LGA X-Timer: - - S1695410088.945309,VS0,VE60 + - S1695849740.746531,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:47 GMT - x-origin-cache: - - HIT + - Wed, 27 Sep 2023 19:51:09 GMT x-proxy-cache: - MISS status: @@ -260,7 +640,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '582' Cache-Control: - max-age=600 Connection: @@ -270,11 +650,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:48 GMT + - Wed, 27 Sep 2023 21:22:19 GMT ETag: - - '"647f85f4-5c5"' + - '"65147dc1-5c5"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -282,19 +662,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 1baa493e9d55c32c66a8b7ffc7a070eea2687f77 + - cea4a695daf98b92d38015d4ba95011a8fe12a7f X-GitHub-Request-Id: - - E440:56FF:CBA3B7:116F4E3:650DE7A6 + - B9DC:56D7:1E2E33:2A5D31:65148555 X-Served-By: - - cache-den8259-DEN + - cache-lga21976-LGA X-Timer: - - S1695410088.104539,VS0,VE61 + - S1695849740.851432,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:48 GMT + - Wed, 27 Sep 2023 19:51:09 GMT + x-origin-cache: + - HIT x-proxy-cache: - MISS status: @@ -329,7 +711,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '582' Cache-Control: - max-age=600 Connection: @@ -339,11 +721,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:48 GMT + - Wed, 27 Sep 2023 21:22:19 GMT ETag: - - '"647f85f4-2bd"' + - '"65147dc1-2bd"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -351,21 +733,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 03287b0e2f04b97d3a8246847bcf5f6b1172405d + - 84b0549c3ab37b7eba14ad307b0fa36dc7c3d731 X-GitHub-Request-Id: - - 41A0:855E:C8CC0D:11421FE:650DE7A6 + - 66F0:1234:5B27E9:86E197:65148555 X-Served-By: - - cache-den8232-DEN + - cache-lga21964-LGA X-Timer: - - S1695410088.285417,VS0,VE57 + - S1695849740.952927,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:48 GMT - x-origin-cache: - - HIT + - Wed, 27 Sep 2023 19:51:09 GMT x-proxy-cache: - MISS status: @@ -395,7 +775,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '582' Cache-Control: - max-age=600 Connection: @@ -405,11 +785,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:48 GMT + - Wed, 27 Sep 2023 21:22:20 GMT ETag: - - '"647f85f4-133"' + - '"65147dc1-133"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -417,19 +797,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - c1e55f57ae498e484507c88fd3fd687e700271b0 + - f324fa3cbf2c017837cc53d295fb032cb688cc08 X-GitHub-Request-Id: - - E440:56FF:CBA3D8:116F50D:650DE7A8 + - FD56:23F1:6A8C75:9641FD:65148555 X-Served-By: - - cache-den8221-DEN + - cache-lga21933-LGA X-Timer: - - S1695410088.457654,VS0,VE57 + - S1695849740.075026,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:24:48 GMT + - Wed, 27 Sep 2023 19:51:09 GMT x-origin-cache: - HIT x-proxy-cache: @@ -472,7 +852,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '582' Cache-Control: - max-age=600 Connection: @@ -482,11 +862,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:48 GMT + - Wed, 27 Sep 2023 21:22:20 GMT ETag: - - '"647f85f4-474"' + - '"65147dc1-474"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -494,19 +874,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - cfde34becd069f84c363086bc3b47c3acb2f2ac7 + - 9081c74c536eeeefa487d45bbc43c8dbdfb6b41b X-GitHub-Request-Id: - - 57B0:1114:C499AB:10FE991:650DE7A8 + - DACE:9613:642736:8FE3FD:65148555 X-Served-By: - - cache-den8232-DEN + - cache-lga21978-LGA X-Timer: - - S1695410089.639305,VS0,VE59 + - S1695849740.191386,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:24:48 GMT + - Wed, 27 Sep 2023 19:51:10 GMT x-origin-cache: - HIT x-proxy-cache: @@ -514,4 +894,83 @@ interactions: status: code: 200 message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/extensions/asset/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Asset Definition Extension Specification\",\n + \ \"description\": \"STAC Asset Definition Extension to a STAC Collection\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../../collection-spec/json-schema/collection.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/assets\"\n }\n ],\n \"definitions\": + {\n \"assets\": {\n \"title\": \"Asset schemas\",\n \"type\": + \"object\",\n \"required\": [\n \"assets\"\n ],\n \"properties\": + {\n \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n }\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"title\",\n \"type\"\n ],\n \"properties\": {\n + \ \"title\": {\n \"title\": \"Asset title\",\n \"type\": + \"string\"\n },\n \"type\": {\n \"title\": \"Asset + type\",\n \"type\": \"string\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1002' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:21 GMT + ETag: + - '"cffbb0036f526b016f24477e0ad674e75b6fefb89708ca796686de9d2e2a67ed"' + Expires: + - Wed, 27 Sep 2023 21:27:21 GMT + Source-Age: + - '84' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 6186950057600a6a3e4b311b851bc9518e528a5f + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A022:6156:4B68:5D65:65149AB0 + X-Served-By: + - cache-lga21939-LGA + X-Timer: + - S1695849741.226506,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_all[test_case1].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_all[test_case1].yaml new file mode 100644 index 000000000..0434c46d9 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_all[test_case1].yaml @@ -0,0 +1,976 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '2' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:21 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - a2ce8666fdcee60d8bb23d64bd478567ccec59c5 + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21921-LGA + X-Timer: + - S1695849741.448800,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n },\n \"summaries\": {\n + \ \"$ref\": \"#/definitions/summaries\"\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": {\n \"min\": + {\n \"title\": \"Minimum value\",\n \"type\": + [\"number\", \"string\"]\n },\n \"max\": {\n \"title\": + \"Maximum value\",\n \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": \"Set of + values\",\n \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"description\": \"Any data type could + occur.\"\n }\n }\n ]\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2638' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:21 GMT + ETag: + - '"3b514933a3747f038125935624a13df108e30fe1cb8f9660a7f54ac6d4765ce9"' + Expires: + - Wed, 27 Sep 2023 21:27:21 GMT + Source-Age: + - '86' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - a5613b28ccfafd7668b93aa5bef0bd154f062a0e + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 146A:2756:778FB:90182:65149AAF + X-Served-By: + - cache-lga21954-LGA + X-Timer: + - S1695849742.651893,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"checksum\",\n + \ \"scientific\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"version\": {\n \"title\": + \"Collection Version\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Homepage\",\n \"type\": \"string\",\n + \ \"format\": \"url\"\n }\n }\n }\n + \ },\n \"extent\": {\n \"title\": \"Extents\",\n \"type\": + \"object\",\n \"required\": [\n \"spatial\",\n \"temporal\"\n + \ ],\n \"properties\": {\n \"spatial\": {\n \"title\": + \"Spatial extent object\",\n \"type\": \"object\",\n \"required\": + [\n \"bbox\"\n ],\n \"properties\": + {\n \"bbox\": {\n \"title\": \"Spatial extents\",\n + \ \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"title\": \"Spatial extent\",\n + \ \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"properties\": {\n \"title\": \"Common properties\",\n \"type\": + \"object\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '4394' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:21 GMT + ETag: + - '"031974beaaaf6f0b5c6877dc97088d9e2aff3bc8962df33ff291dddded353f09"' + Expires: + - Wed, 27 Sep 2023 21:27:21 GMT + Source-Age: + - '86' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '3' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - e40f7fdc1d82d6758a1c14a411312d2492fc77a9 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - D9DE:5675:4608:5765:65149AAF + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849742.764288,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-rc.3\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"iri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\",\n \"minLength\": + 1\n },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"$ref\": + \"#/definitions/assets\"\n },\n \"properties\": {\n + \ \"allOf\": [\n {\n \"$ref\": + \"#/definitions/common_metadata\"\n },\n {\n + \ \"anyOf\": [\n {\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"not\": + {\n \"type\": \"null\"\n }\n + \ }\n }\n },\n + \ {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n + \ ]\n }\n ]\n }\n + \ ]\n }\n },\n \"if\": {\n \"properties\": + {\n \"links\": {\n \"contains\": {\n \"required\": + [\n \"rel\"\n ],\n \"properties\": + {\n \"rel\": {\n \"const\": \"collection\"\n + \ }\n }\n }\n }\n + \ }\n },\n \"then\": {\n \"required\": + [\n \"collection\"\n ],\n \"properties\": + {\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n },\n \"else\": {\n \"properties\": + {\n \"collection\": {\n \"not\": {}\n }\n + \ }\n }\n }\n ]\n },\n \"link\": {\n + \ \"type\": \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n + \ ],\n \"properties\": {\n \"href\": {\n \"title\": + \"Link reference\",\n \"type\": \"string\",\n \"format\": + \"iri-reference\",\n \"minLength\": 1\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\",\n + \ \"minLength\": 1\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": + \"Asset reference\",\n \"type\": \"string\",\n \"format\": + \"iri-reference\",\n \"minLength\": 1\n },\n \"title\": + {\n \"title\": \"Asset title\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Asset + description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n + \ \"type\": \"string\"\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '584' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6970' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:21 GMT + ETag: + - '"65147dc1-1b3a"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 02ba647dea9d78b201947a40299715ad6da46745 + X-GitHub-Request-Id: + - B090:10B4:DB7D7:145642:65148555 + X-Served-By: + - cache-lga21970-LGA + X-Timer: + - S1695849742.889705,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '584' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '538' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:22 GMT + ETag: + - '"65147dc1-21a"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 4716bddd150db83451bbeb1a95992fda4fe66101 + X-GitHub-Request-Id: + - FB64:6E26:1C4B8F:28510C:65148554 + X-Served-By: + - cache-lga21982-LGA + X-Timer: + - S1695849742.018860,VS0,VE3 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n },\n \"properties\": {\n \"datetime\": {\n \"title\": + \"Date and Time\",\n \"description\": \"The searchable date/time of the + assets, in UTC (Formatted in RFC 3339) \",\n \"type\": [\"string\", \"null\"],\n + \ \"format\": \"date-time\",\n \"pattern\": \"(\\\\+00:00|Z)$\"\n + \ },\n \"start_datetime\": {\n \"title\": \"Start Date and Time\",\n + \ \"description\": \"The searchable start date/time of the assets, in + UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\",\n \"pattern\": \"(\\\\+00:00|Z)$\"\n }, \n \"end_datetime\": + {\n \"title\": \"End Date and Time\", \n \"description\": \"The + searchable end date/time of the assets, in UTC (Formatted in RFC 3339) \", + \ \n \"type\": \"string\",\n \"format\": \"date-time\",\n + \ \"pattern\": \"(\\\\+00:00|Z)$\"\n },\n \"created\": {\n \"title\": + \"Creation Time\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n + \ \"pattern\": \"(\\\\+00:00|Z)$\"\n },\n \"updated\": {\n \"title\": + \"Last Update Time\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n + \ \"pattern\": \"(\\\\+00:00|Z)$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '584' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1477' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:22 GMT + ETag: + - '"65147dc1-5c5"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - d8e50783c653c8413b77adb01af31942ef2c20af + X-GitHub-Request-Id: + - B9DC:56D7:1E2E33:2A5D31:65148555 + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849742.120162,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\",\n \"exclusiveMinimum\": 0\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '584' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '701' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:22 GMT + ETag: + - '"65147dc1-2bd"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - f3c7d984ec16594a0512314e778562803ded1139 + X-GitHub-Request-Id: + - 66F0:1234:5B27E9:86E197:65148555 + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849742.235425,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '584' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '307' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:22 GMT + ETag: + - '"65147dc1-133"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - f9d03ea46f5e166428fbce2e572c01477c52ed62 + X-GitHub-Request-Id: + - FD56:23F1:6A8C75:9641FD:65148555 + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849742.367918,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": + [\n \"name\"\n ],\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\",\n + \ \"minLength\": 1\n },\n \"description\": {\n + \ \"title\": \"Organization description\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Organization + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"iri\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '584' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1140' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:22 GMT + ETag: + - '"65147dc1-474"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 625948e24ce9211cc0f7bcf508d3695552f48beb + X-GitHub-Request-Id: + - DACE:9613:642736:8FE3FD:65148555 + X-Served-By: + - cache-lga21979-LGA + X-Timer: + - S1695849743.500456,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:10 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/extensions/asset/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Asset Definition Extension Specification\",\n + \ \"description\": \"STAC Asset Definition Extension to a STAC Collection\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../../collection-spec/json-schema/collection.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/assets\"\n }\n ],\n \"definitions\": + {\n \"assets\": {\n \"title\": \"Asset schemas\",\n \"type\": + \"object\",\n \"required\": [\n \"assets\"\n ],\n \"properties\": + {\n \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n }\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"title\",\n \"type\"\n ],\n \"properties\": {\n + \ \"title\": {\n \"title\": \"Asset title\",\n \"type\": + \"string\"\n },\n \"type\": {\n \"title\": \"Asset + type\",\n \"type\": \"string\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1002' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:23 GMT + ETag: + - '"cffbb0036f526b016f24477e0ad674e75b6fefb89708ca796686de9d2e2a67ed"' + Expires: + - Wed, 27 Sep 2023 21:27:23 GMT + Source-Age: + - '86' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - fc3821ffe5c1efd5b01a67b49db3d594c281c94c + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A022:6156:4B68:5D65:65149AB0 + X-Served-By: + - cache-lga21972-LGA + X-Timer: + - S1695849744.614798,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_all[test_case2].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_all[test_case2].yaml new file mode 100644 index 000000000..d3e2c54cd --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_all[test_case2].yaml @@ -0,0 +1,976 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n },\n \"summaries\": {\n + \ \"$ref\": \"#/definitions/summaries\"\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": {\n \"min\": + {\n \"title\": \"Minimum value\",\n \"type\": + [\"number\", \"string\"]\n },\n \"max\": {\n \"title\": + \"Maximum value\",\n \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": \"Set of + values\",\n \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"description\": \"Any data type could + occur.\"\n }\n }\n ]\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2638' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:24 GMT + ETag: + - '"3b514933a3747f038125935624a13df108e30fe1cb8f9660a7f54ac6d4765ce9"' + Expires: + - Wed, 27 Sep 2023 21:27:24 GMT + Source-Age: + - '88' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 20210d1ea6645800c2d62293e4473653675dbe1f + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 146A:2756:778FB:90182:65149AAF + X-Served-By: + - cache-lga21958-LGA + X-Timer: + - S1695849744.012306,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"checksum\",\n + \ \"scientific\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"version\": {\n \"title\": + \"Collection Version\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Homepage\",\n \"type\": \"string\",\n + \ \"format\": \"url\"\n }\n }\n }\n + \ },\n \"extent\": {\n \"title\": \"Extents\",\n \"type\": + \"object\",\n \"required\": [\n \"spatial\",\n \"temporal\"\n + \ ],\n \"properties\": {\n \"spatial\": {\n \"title\": + \"Spatial extent object\",\n \"type\": \"object\",\n \"required\": + [\n \"bbox\"\n ],\n \"properties\": + {\n \"bbox\": {\n \"title\": \"Spatial extents\",\n + \ \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"title\": \"Spatial extent\",\n + \ \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"properties\": {\n \"title\": \"Common properties\",\n \"type\": + \"object\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '4394' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:24 GMT + ETag: + - '"031974beaaaf6f0b5c6877dc97088d9e2aff3bc8962df33ff291dddded353f09"' + Expires: + - Wed, 27 Sep 2023 21:27:24 GMT + Source-Age: + - '88' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 2075c166be1dbad89649a351773717341160335b + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - D9DE:5675:4608:5765:65149AAF + X-Served-By: + - cache-lga21943-LGA + X-Timer: + - S1695849744.120740,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-rc.3\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"iri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\",\n \"minLength\": + 1\n },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"$ref\": + \"#/definitions/assets\"\n },\n \"properties\": {\n + \ \"allOf\": [\n {\n \"$ref\": + \"#/definitions/common_metadata\"\n },\n {\n + \ \"anyOf\": [\n {\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"not\": + {\n \"type\": \"null\"\n }\n + \ }\n }\n },\n + \ {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n + \ ]\n }\n ]\n }\n + \ ]\n }\n },\n \"if\": {\n \"properties\": + {\n \"links\": {\n \"contains\": {\n \"required\": + [\n \"rel\"\n ],\n \"properties\": + {\n \"rel\": {\n \"const\": \"collection\"\n + \ }\n }\n }\n }\n + \ }\n },\n \"then\": {\n \"required\": + [\n \"collection\"\n ],\n \"properties\": + {\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n },\n \"else\": {\n \"properties\": + {\n \"collection\": {\n \"not\": {}\n }\n + \ }\n }\n }\n ]\n },\n \"link\": {\n + \ \"type\": \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n + \ ],\n \"properties\": {\n \"href\": {\n \"title\": + \"Link reference\",\n \"type\": \"string\",\n \"format\": + \"iri-reference\",\n \"minLength\": 1\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\",\n + \ \"minLength\": 1\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": + \"Asset reference\",\n \"type\": \"string\",\n \"format\": + \"iri-reference\",\n \"minLength\": 1\n },\n \"title\": + {\n \"title\": \"Asset title\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Asset + description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n + \ \"type\": \"string\"\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '587' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6970' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:24 GMT + ETag: + - '"65147dc1-1b3a"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - c2091dd43a0a14f9c05f0a38e75556e9d0f48130 + X-GitHub-Request-Id: + - B090:10B4:DB7D7:145642:65148555 + X-Served-By: + - cache-lga21933-LGA + X-Timer: + - S1695849744.232551,VS0,VE3 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '587' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '538' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:24 GMT + ETag: + - '"65147dc1-21a"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 0afce8b089d38d2edd8826763b004ad54c8ba1df + X-GitHub-Request-Id: + - FB64:6E26:1C4B8F:28510C:65148554 + X-Served-By: + - cache-lga21963-LGA + X-Timer: + - S1695849744.360342,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n },\n \"properties\": {\n \"datetime\": {\n \"title\": + \"Date and Time\",\n \"description\": \"The searchable date/time of the + assets, in UTC (Formatted in RFC 3339) \",\n \"type\": [\"string\", \"null\"],\n + \ \"format\": \"date-time\",\n \"pattern\": \"(\\\\+00:00|Z)$\"\n + \ },\n \"start_datetime\": {\n \"title\": \"Start Date and Time\",\n + \ \"description\": \"The searchable start date/time of the assets, in + UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\",\n \"pattern\": \"(\\\\+00:00|Z)$\"\n }, \n \"end_datetime\": + {\n \"title\": \"End Date and Time\", \n \"description\": \"The + searchable end date/time of the assets, in UTC (Formatted in RFC 3339) \", + \ \n \"type\": \"string\",\n \"format\": \"date-time\",\n + \ \"pattern\": \"(\\\\+00:00|Z)$\"\n },\n \"created\": {\n \"title\": + \"Creation Time\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n + \ \"pattern\": \"(\\\\+00:00|Z)$\"\n },\n \"updated\": {\n \"title\": + \"Last Update Time\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n + \ \"pattern\": \"(\\\\+00:00|Z)$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '587' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1477' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:24 GMT + ETag: + - '"65147dc1-5c5"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 76b41f3bcc35d382f15a33e010084e40c8cc846a + X-GitHub-Request-Id: + - B9DC:56D7:1E2E33:2A5D31:65148555 + X-Served-By: + - cache-lga21976-LGA + X-Timer: + - S1695849744.472259,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\",\n \"exclusiveMinimum\": 0\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '587' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '701' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:24 GMT + ETag: + - '"65147dc1-2bd"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - b9cdd896451eb5c9190a46c1877b5e14e83c4496 + X-GitHub-Request-Id: + - 66F0:1234:5B27E9:86E197:65148555 + X-Served-By: + - cache-lga21943-LGA + X-Timer: + - S1695849745.583894,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '587' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '307' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:24 GMT + ETag: + - '"65147dc1-133"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 76616439f659fc9c43cb48cc0d984337b08be160 + X-GitHub-Request-Id: + - FD56:23F1:6A8C75:9641FD:65148555 + X-Served-By: + - cache-lga21924-LGA + X-Timer: + - S1695849745.701495,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": + [\n \"name\"\n ],\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\",\n + \ \"minLength\": 1\n },\n \"description\": {\n + \ \"title\": \"Organization description\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Organization + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"iri\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '587' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1140' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:24 GMT + ETag: + - '"65147dc1-474"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 9e5564c10139acf65b226f55ad86e588b90ca704 + X-GitHub-Request-Id: + - DACE:9613:642736:8FE3FD:65148555 + X-Served-By: + - cache-lga21922-LGA + X-Timer: + - S1695849745.818415,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:10 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '6' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:24 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - ab50d477437988b93cdb68a2a831fe95482a13f1 + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849745.944275,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/extensions/asset/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Asset Definition Extension Specification\",\n + \ \"description\": \"STAC Asset Definition Extension to a STAC Collection\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../../collection-spec/json-schema/collection.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/assets\"\n }\n ],\n \"definitions\": + {\n \"assets\": {\n \"title\": \"Asset schemas\",\n \"type\": + \"object\",\n \"required\": [\n \"assets\"\n ],\n \"properties\": + {\n \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n }\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"title\",\n \"type\"\n ],\n \"properties\": {\n + \ \"title\": {\n \"title\": \"Asset title\",\n \"type\": + \"string\"\n },\n \"type\": {\n \"title\": \"Asset + type\",\n \"type\": \"string\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1002' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:26 GMT + ETag: + - '"cffbb0036f526b016f24477e0ad674e75b6fefb89708ca796686de9d2e2a67ed"' + Expires: + - Wed, 27 Sep 2023 21:27:26 GMT + Source-Age: + - '89' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 17d4431aecbe11e554b2792f2fa6b5d5cced798a + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A022:6156:4B68:5D65:65149AB0 + X-Served-By: + - cache-lga21945-LGA + X-Timer: + - S1695849746.050361,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_all[test_case3].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_all[test_case3].yaml new file mode 100644 index 000000000..a9d30788e --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_all[test_case3].yaml @@ -0,0 +1,976 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '7' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:26 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 31251a2bee97d8ed5d9f288ab0e5a2261150db3c + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849746.248756,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n },\n \"summaries\": {\n + \ \"$ref\": \"#/definitions/summaries\"\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": {\n \"min\": + {\n \"title\": \"Minimum value\",\n \"type\": + [\"number\", \"string\"]\n },\n \"max\": {\n \"title\": + \"Maximum value\",\n \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": \"Set of + values\",\n \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"description\": \"Any data type could + occur.\"\n }\n }\n ]\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2638' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:27 GMT + ETag: + - '"3b514933a3747f038125935624a13df108e30fe1cb8f9660a7f54ac6d4765ce9"' + Expires: + - Wed, 27 Sep 2023 21:27:27 GMT + Source-Age: + - '92' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 47e2ac205eedad386934a1ef9c1436e868d81a12 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 146A:2756:778FB:90182:65149AAF + X-Served-By: + - cache-lga21945-LGA + X-Timer: + - S1695849747.370405,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"checksum\",\n + \ \"scientific\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"version\": {\n \"title\": + \"Collection Version\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Homepage\",\n \"type\": \"string\",\n + \ \"format\": \"url\"\n }\n }\n }\n + \ },\n \"extent\": {\n \"title\": \"Extents\",\n \"type\": + \"object\",\n \"required\": [\n \"spatial\",\n \"temporal\"\n + \ ],\n \"properties\": {\n \"spatial\": {\n \"title\": + \"Spatial extent object\",\n \"type\": \"object\",\n \"required\": + [\n \"bbox\"\n ],\n \"properties\": + {\n \"bbox\": {\n \"title\": \"Spatial extents\",\n + \ \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"title\": \"Spatial extent\",\n + \ \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"properties\": {\n \"title\": \"Common properties\",\n \"type\": + \"object\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '4394' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:27 GMT + ETag: + - '"031974beaaaf6f0b5c6877dc97088d9e2aff3bc8962df33ff291dddded353f09"' + Expires: + - Wed, 27 Sep 2023 21:27:27 GMT + Source-Age: + - '92' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - ae2ce7bf62b7b99541b0c56301f1adb1d7e22a91 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - D9DE:5675:4608:5765:65149AAF + X-Served-By: + - cache-lga21946-LGA + X-Timer: + - S1695849747.468888,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-rc.3\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"iri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\",\n \"minLength\": + 1\n },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"$ref\": + \"#/definitions/assets\"\n },\n \"properties\": {\n + \ \"allOf\": [\n {\n \"$ref\": + \"#/definitions/common_metadata\"\n },\n {\n + \ \"anyOf\": [\n {\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"not\": + {\n \"type\": \"null\"\n }\n + \ }\n }\n },\n + \ {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n + \ ]\n }\n ]\n }\n + \ ]\n }\n },\n \"if\": {\n \"properties\": + {\n \"links\": {\n \"contains\": {\n \"required\": + [\n \"rel\"\n ],\n \"properties\": + {\n \"rel\": {\n \"const\": \"collection\"\n + \ }\n }\n }\n }\n + \ }\n },\n \"then\": {\n \"required\": + [\n \"collection\"\n ],\n \"properties\": + {\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n },\n \"else\": {\n \"properties\": + {\n \"collection\": {\n \"not\": {}\n }\n + \ }\n }\n }\n ]\n },\n \"link\": {\n + \ \"type\": \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n + \ ],\n \"properties\": {\n \"href\": {\n \"title\": + \"Link reference\",\n \"type\": \"string\",\n \"format\": + \"iri-reference\",\n \"minLength\": 1\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\",\n + \ \"minLength\": 1\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": + \"Asset reference\",\n \"type\": \"string\",\n \"format\": + \"iri-reference\",\n \"minLength\": 1\n },\n \"title\": + {\n \"title\": \"Asset title\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Asset + description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n + \ \"type\": \"string\"\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '590' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6970' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:27 GMT + ETag: + - '"65147dc1-1b3a"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - aa9e6e47f09dd7aee4915c42fb3adcf5e06bdf7b + X-GitHub-Request-Id: + - B090:10B4:DB7D7:145642:65148555 + X-Served-By: + - cache-lga21982-LGA + X-Timer: + - S1695849748.604898,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '590' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '538' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:27 GMT + ETag: + - '"65147dc1-21a"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 00293dba2f5fc0876f506242cf85b590eb6ce29c + X-GitHub-Request-Id: + - FB64:6E26:1C4B8F:28510C:65148554 + X-Served-By: + - cache-lga21936-LGA + X-Timer: + - S1695849748.731876,VS0,VE33 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n },\n \"properties\": {\n \"datetime\": {\n \"title\": + \"Date and Time\",\n \"description\": \"The searchable date/time of the + assets, in UTC (Formatted in RFC 3339) \",\n \"type\": [\"string\", \"null\"],\n + \ \"format\": \"date-time\",\n \"pattern\": \"(\\\\+00:00|Z)$\"\n + \ },\n \"start_datetime\": {\n \"title\": \"Start Date and Time\",\n + \ \"description\": \"The searchable start date/time of the assets, in + UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\",\n \"pattern\": \"(\\\\+00:00|Z)$\"\n }, \n \"end_datetime\": + {\n \"title\": \"End Date and Time\", \n \"description\": \"The + searchable end date/time of the assets, in UTC (Formatted in RFC 3339) \", + \ \n \"type\": \"string\",\n \"format\": \"date-time\",\n + \ \"pattern\": \"(\\\\+00:00|Z)$\"\n },\n \"created\": {\n \"title\": + \"Creation Time\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n + \ \"pattern\": \"(\\\\+00:00|Z)$\"\n },\n \"updated\": {\n \"title\": + \"Last Update Time\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n + \ \"pattern\": \"(\\\\+00:00|Z)$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '590' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1477' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:27 GMT + ETag: + - '"65147dc1-5c5"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 3169a1b74688e021d694b9e1edf16d5f9474ea5d + X-GitHub-Request-Id: + - B9DC:56D7:1E2E33:2A5D31:65148555 + X-Served-By: + - cache-lga21979-LGA + X-Timer: + - S1695849748.899459,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\",\n \"exclusiveMinimum\": 0\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '590' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '701' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:28 GMT + ETag: + - '"65147dc1-2bd"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 4199d02a2efe6e360a643253664cdd921f8b08f0 + X-GitHub-Request-Id: + - 66F0:1234:5B27E9:86E197:65148555 + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849748.025341,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '590' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '307' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:28 GMT + ETag: + - '"65147dc1-133"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 2f192355c435511deeaf745ad4c53fd200c6c475 + X-GitHub-Request-Id: + - FD56:23F1:6A8C75:9641FD:65148555 + X-Served-By: + - cache-lga21946-LGA + X-Timer: + - S1695849748.140902,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": + [\n \"name\"\n ],\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\",\n + \ \"minLength\": 1\n },\n \"description\": {\n + \ \"title\": \"Organization description\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Organization + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"iri\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '590' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1140' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:28 GMT + ETag: + - '"65147dc1-474"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 767478056a38047de33459ea72fb0598e833d4e8 + X-GitHub-Request-Id: + - DACE:9613:642736:8FE3FD:65148555 + X-Served-By: + - cache-lga21962-LGA + X-Timer: + - S1695849748.269677,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:10 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/extensions/asset/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Asset Definition Extension Specification\",\n + \ \"description\": \"STAC Asset Definition Extension to a STAC Collection\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../../collection-spec/json-schema/collection.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/assets\"\n }\n ],\n \"definitions\": + {\n \"assets\": {\n \"title\": \"Asset schemas\",\n \"type\": + \"object\",\n \"required\": [\n \"assets\"\n ],\n \"properties\": + {\n \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n }\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"title\",\n \"type\"\n ],\n \"properties\": {\n + \ \"title\": {\n \"title\": \"Asset title\",\n \"type\": + \"string\"\n },\n \"type\": {\n \"title\": \"Asset + type\",\n \"type\": \"string\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1002' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:29 GMT + ETag: + - '"cffbb0036f526b016f24477e0ad674e75b6fefb89708ca796686de9d2e2a67ed"' + Expires: + - Wed, 27 Sep 2023 21:27:29 GMT + Source-Age: + - '92' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 0fe6412389f89e2efa404398b4a039a6ec72d0f1 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A022:6156:4B68:5D65:65149AB0 + X-Served-By: + - cache-lga21955-LGA + X-Timer: + - S1695849749.266100,VS0,VE4 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_all[test_case4].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_all[test_case4].yaml new file mode 100644 index 000000000..ac08112a1 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_all[test_case4].yaml @@ -0,0 +1,1340 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '14' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:29 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 878ab41142f10ddace99d35607fc3fe7c94d9a46 + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21983-LGA + X-Timer: + - S1695849749.455606,VS0,VE3 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.0.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the + schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for item properties.\",\n \"required\": + [\n \"proj:epsg\"\n ]\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"proj:epsg\":{\n + \ \"title\":\"EPSG code\",\n \"type\":[\n \"integer\",\n + \ \"null\"\n ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.2/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '593' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4646' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:29 GMT + ETag: + - '"63e6651b-1226"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - b1d561e487a06f2802e7f1cc1a8c05e4d26b25da + X-GitHub-Request-Id: + - DE96:7A72:FA1AA:1530DD:6514300F + X-Served-By: + - cache-lga21968-LGA + X-Timer: + - S1695849750.580756,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:20 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '14' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:29 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 5f1496eb7a1289d8e84a7e91a45f7738a122448f + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21923-LGA + X-Timer: + - S1695849750.712517,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n },\n \"summaries\": {\n + \ \"$ref\": \"#/definitions/summaries\"\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": {\n \"min\": + {\n \"title\": \"Minimum value\",\n \"type\": + [\"number\", \"string\"]\n },\n \"max\": {\n \"title\": + \"Maximum value\",\n \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": \"Set of + values\",\n \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"description\": \"Any data type could + occur.\"\n }\n }\n ]\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2638' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:29 GMT + ETag: + - '"3b514933a3747f038125935624a13df108e30fe1cb8f9660a7f54ac6d4765ce9"' + Expires: + - Wed, 27 Sep 2023 21:27:29 GMT + Source-Age: + - '94' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 1530605147a0582ba9636d0f050e8dbb938cf5fd + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 146A:2756:778FB:90182:65149AAF + X-Served-By: + - cache-lga21942-LGA + X-Timer: + - S1695849750.926385,VS0,VE7 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"checksum\",\n + \ \"scientific\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"version\": {\n \"title\": + \"Collection Version\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Homepage\",\n \"type\": \"string\",\n + \ \"format\": \"url\"\n }\n }\n }\n + \ },\n \"extent\": {\n \"title\": \"Extents\",\n \"type\": + \"object\",\n \"required\": [\n \"spatial\",\n \"temporal\"\n + \ ],\n \"properties\": {\n \"spatial\": {\n \"title\": + \"Spatial extent object\",\n \"type\": \"object\",\n \"required\": + [\n \"bbox\"\n ],\n \"properties\": + {\n \"bbox\": {\n \"title\": \"Spatial extents\",\n + \ \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"title\": \"Spatial extent\",\n + \ \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"properties\": {\n \"title\": \"Common properties\",\n \"type\": + \"object\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '4394' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:30 GMT + ETag: + - '"031974beaaaf6f0b5c6877dc97088d9e2aff3bc8962df33ff291dddded353f09"' + Expires: + - Wed, 27 Sep 2023 21:27:30 GMT + Source-Age: + - '94' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - f40005f3086b080fa33a8b8d94229719dda042dc + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - D9DE:5675:4608:5765:65149AAF + X-Served-By: + - cache-lga21962-LGA + X-Timer: + - S1695849750.030015,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-rc.3\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"iri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\",\n \"minLength\": + 1\n },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"$ref\": + \"#/definitions/assets\"\n },\n \"properties\": {\n + \ \"allOf\": [\n {\n \"$ref\": + \"#/definitions/common_metadata\"\n },\n {\n + \ \"anyOf\": [\n {\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"not\": + {\n \"type\": \"null\"\n }\n + \ }\n }\n },\n + \ {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n + \ ]\n }\n ]\n }\n + \ ]\n }\n },\n \"if\": {\n \"properties\": + {\n \"links\": {\n \"contains\": {\n \"required\": + [\n \"rel\"\n ],\n \"properties\": + {\n \"rel\": {\n \"const\": \"collection\"\n + \ }\n }\n }\n }\n + \ }\n },\n \"then\": {\n \"required\": + [\n \"collection\"\n ],\n \"properties\": + {\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n },\n \"else\": {\n \"properties\": + {\n \"collection\": {\n \"not\": {}\n }\n + \ }\n }\n }\n ]\n },\n \"link\": {\n + \ \"type\": \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n + \ ],\n \"properties\": {\n \"href\": {\n \"title\": + \"Link reference\",\n \"type\": \"string\",\n \"format\": + \"iri-reference\",\n \"minLength\": 1\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\",\n + \ \"minLength\": 1\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": + \"Asset reference\",\n \"type\": \"string\",\n \"format\": + \"iri-reference\",\n \"minLength\": 1\n },\n \"title\": + {\n \"title\": \"Asset title\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Asset + description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n + \ \"type\": \"string\"\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '593' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6970' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:30 GMT + ETag: + - '"65147dc1-1b3a"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - a0e36cf28a57e9f87cd1278465fcbddf0ed3596a + X-GitHub-Request-Id: + - B090:10B4:DB7D7:145642:65148555 + X-Served-By: + - cache-lga21968-LGA + X-Timer: + - S1695849750.133093,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '593' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '538' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:30 GMT + ETag: + - '"65147dc1-21a"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 4d186ed4c8e380606e3109f7122712ca2bea3a38 + X-GitHub-Request-Id: + - FB64:6E26:1C4B8F:28510C:65148554 + X-Served-By: + - cache-lga21922-LGA + X-Timer: + - S1695849750.248518,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n },\n \"properties\": {\n \"datetime\": {\n \"title\": + \"Date and Time\",\n \"description\": \"The searchable date/time of the + assets, in UTC (Formatted in RFC 3339) \",\n \"type\": [\"string\", \"null\"],\n + \ \"format\": \"date-time\",\n \"pattern\": \"(\\\\+00:00|Z)$\"\n + \ },\n \"start_datetime\": {\n \"title\": \"Start Date and Time\",\n + \ \"description\": \"The searchable start date/time of the assets, in + UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\",\n \"pattern\": \"(\\\\+00:00|Z)$\"\n }, \n \"end_datetime\": + {\n \"title\": \"End Date and Time\", \n \"description\": \"The + searchable end date/time of the assets, in UTC (Formatted in RFC 3339) \", + \ \n \"type\": \"string\",\n \"format\": \"date-time\",\n + \ \"pattern\": \"(\\\\+00:00|Z)$\"\n },\n \"created\": {\n \"title\": + \"Creation Time\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n + \ \"pattern\": \"(\\\\+00:00|Z)$\"\n },\n \"updated\": {\n \"title\": + \"Last Update Time\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n + \ \"pattern\": \"(\\\\+00:00|Z)$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '593' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1477' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:30 GMT + ETag: + - '"65147dc1-5c5"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 3c3682c4601441d39e00b3a422dbdc714a99574b + X-GitHub-Request-Id: + - B9DC:56D7:1E2E33:2A5D31:65148555 + X-Served-By: + - cache-lga21977-LGA + X-Timer: + - S1695849750.362547,VS0,VE3 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\",\n \"exclusiveMinimum\": 0\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '593' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '701' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:30 GMT + ETag: + - '"65147dc1-2bd"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 10942e90a8f20a6a0924c31ef27d32fc9c16f19b + X-GitHub-Request-Id: + - 66F0:1234:5B27E9:86E197:65148555 + X-Served-By: + - cache-lga21925-LGA + X-Timer: + - S1695849750.479753,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '593' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '307' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:30 GMT + ETag: + - '"65147dc1-133"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - c7551207a1e13cad53475fd95428eaa7a3db260f + X-GitHub-Request-Id: + - FD56:23F1:6A8C75:9641FD:65148555 + X-Served-By: + - cache-lga21929-LGA + X-Timer: + - S1695849751.600043,VS0,VE7 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": + [\n \"name\"\n ],\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\",\n + \ \"minLength\": 1\n },\n \"description\": {\n + \ \"title\": \"Organization description\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Organization + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"iri\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '593' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1140' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:30 GMT + ETag: + - '"65147dc1-474"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 619459db0bb68e8801d24773cf84bc9999baf96c + X-GitHub-Request-Id: + - DACE:9613:642736:8FE3FD:65148555 + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849751.716305,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:10 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '12' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:30 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 20636d3fc568b3960c31cbc5930ba8ee6ea3ab80 + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21932-LGA + X-Timer: + - S1695849751.839880,VS0,VE6 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/extensions/asset/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Asset Definition Extension Specification\",\n + \ \"description\": \"STAC Asset Definition Extension to a STAC Collection\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../../collection-spec/json-schema/collection.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/assets\"\n }\n ],\n \"definitions\": + {\n \"assets\": {\n \"title\": \"Asset schemas\",\n \"type\": + \"object\",\n \"required\": [\n \"assets\"\n ],\n \"properties\": + {\n \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n }\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"title\",\n \"type\"\n ],\n \"properties\": {\n + \ \"title\": {\n \"title\": \"Asset title\",\n \"type\": + \"string\"\n },\n \"type\": {\n \"title\": \"Asset + type\",\n \"type\": \"string\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1002' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:31 GMT + ETag: + - '"cffbb0036f526b016f24477e0ad674e75b6fefb89708ca796686de9d2e2a67ed"' + Expires: + - Wed, 27 Sep 2023 21:27:31 GMT + Source-Age: + - '95' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - efb8d56fb27ba8efcf49c2b3146fc90087653b99 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A022:6156:4B68:5D65:65149AB0 + X-Served-By: + - cache-lga21936-LGA + X-Timer: + - S1695849752.842467,VS0,VE3 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_all[test_case5].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_all[test_case5].yaml new file mode 100644 index 000000000..841524ba5 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_all[test_case5].yaml @@ -0,0 +1,976 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n },\n \"summaries\": {\n + \ \"$ref\": \"#/definitions/summaries\"\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": {\n \"min\": + {\n \"title\": \"Minimum value\",\n \"type\": + [\"number\", \"string\"]\n },\n \"max\": {\n \"title\": + \"Maximum value\",\n \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": \"Set of + values\",\n \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"description\": \"Any data type could + occur.\"\n }\n }\n ]\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2638' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:32 GMT + ETag: + - '"3b514933a3747f038125935624a13df108e30fe1cb8f9660a7f54ac6d4765ce9"' + Expires: + - Wed, 27 Sep 2023 21:27:32 GMT + Source-Age: + - '96' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - a1aaad95645b4b588127615074d1a7c3e0fe99c2 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 146A:2756:778FB:90182:65149AAF + X-Served-By: + - cache-lga21935-LGA + X-Timer: + - S1695849752.995276,VS0,VE7 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"checksum\",\n + \ \"scientific\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"version\": {\n \"title\": + \"Collection Version\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Homepage\",\n \"type\": \"string\",\n + \ \"format\": \"url\"\n }\n }\n }\n + \ },\n \"extent\": {\n \"title\": \"Extents\",\n \"type\": + \"object\",\n \"required\": [\n \"spatial\",\n \"temporal\"\n + \ ],\n \"properties\": {\n \"spatial\": {\n \"title\": + \"Spatial extent object\",\n \"type\": \"object\",\n \"required\": + [\n \"bbox\"\n ],\n \"properties\": + {\n \"bbox\": {\n \"title\": \"Spatial extents\",\n + \ \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"title\": \"Spatial extent\",\n + \ \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"properties\": {\n \"title\": \"Common properties\",\n \"type\": + \"object\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '4394' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:32 GMT + ETag: + - '"031974beaaaf6f0b5c6877dc97088d9e2aff3bc8962df33ff291dddded353f09"' + Expires: + - Wed, 27 Sep 2023 21:27:32 GMT + Source-Age: + - '96' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 64fd4b4a79093c2900ba15f115aca35bfae3782e + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - D9DE:5675:4608:5765:65149AAF + X-Served-By: + - cache-lga21955-LGA + X-Timer: + - S1695849752.114545,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-rc.3\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"iri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\",\n \"minLength\": + 1\n },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"$ref\": + \"#/definitions/assets\"\n },\n \"properties\": {\n + \ \"allOf\": [\n {\n \"$ref\": + \"#/definitions/common_metadata\"\n },\n {\n + \ \"anyOf\": [\n {\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"not\": + {\n \"type\": \"null\"\n }\n + \ }\n }\n },\n + \ {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n + \ ]\n }\n ]\n }\n + \ ]\n }\n },\n \"if\": {\n \"properties\": + {\n \"links\": {\n \"contains\": {\n \"required\": + [\n \"rel\"\n ],\n \"properties\": + {\n \"rel\": {\n \"const\": \"collection\"\n + \ }\n }\n }\n }\n + \ }\n },\n \"then\": {\n \"required\": + [\n \"collection\"\n ],\n \"properties\": + {\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n },\n \"else\": {\n \"properties\": + {\n \"collection\": {\n \"not\": {}\n }\n + \ }\n }\n }\n ]\n },\n \"link\": {\n + \ \"type\": \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n + \ ],\n \"properties\": {\n \"href\": {\n \"title\": + \"Link reference\",\n \"type\": \"string\",\n \"format\": + \"iri-reference\",\n \"minLength\": 1\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\",\n + \ \"minLength\": 1\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": + \"Asset reference\",\n \"type\": \"string\",\n \"format\": + \"iri-reference\",\n \"minLength\": 1\n },\n \"title\": + {\n \"title\": \"Asset title\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Asset + description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n + \ \"type\": \"string\"\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '595' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6970' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:32 GMT + ETag: + - '"65147dc1-1b3a"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 31b539a23b091dbf8b8a12c85390b6a819f9cf52 + X-GitHub-Request-Id: + - B090:10B4:DB7D7:145642:65148555 + X-Served-By: + - cache-lga21962-LGA + X-Timer: + - S1695849752.235373,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '595' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '538' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:32 GMT + ETag: + - '"65147dc1-21a"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 6c15b479da3e748ee7ed8c3af6c874204a09115a + X-GitHub-Request-Id: + - FB64:6E26:1C4B8F:28510C:65148554 + X-Served-By: + - cache-lga21951-LGA + X-Timer: + - S1695849752.365902,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n },\n \"properties\": {\n \"datetime\": {\n \"title\": + \"Date and Time\",\n \"description\": \"The searchable date/time of the + assets, in UTC (Formatted in RFC 3339) \",\n \"type\": [\"string\", \"null\"],\n + \ \"format\": \"date-time\",\n \"pattern\": \"(\\\\+00:00|Z)$\"\n + \ },\n \"start_datetime\": {\n \"title\": \"Start Date and Time\",\n + \ \"description\": \"The searchable start date/time of the assets, in + UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\",\n \"pattern\": \"(\\\\+00:00|Z)$\"\n }, \n \"end_datetime\": + {\n \"title\": \"End Date and Time\", \n \"description\": \"The + searchable end date/time of the assets, in UTC (Formatted in RFC 3339) \", + \ \n \"type\": \"string\",\n \"format\": \"date-time\",\n + \ \"pattern\": \"(\\\\+00:00|Z)$\"\n },\n \"created\": {\n \"title\": + \"Creation Time\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n + \ \"pattern\": \"(\\\\+00:00|Z)$\"\n },\n \"updated\": {\n \"title\": + \"Last Update Time\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n + \ \"pattern\": \"(\\\\+00:00|Z)$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '595' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1477' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:32 GMT + ETag: + - '"65147dc1-5c5"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 1da70b6a06f9543ba6a8a038c128f444ce94950a + X-GitHub-Request-Id: + - B9DC:56D7:1E2E33:2A5D31:65148555 + X-Served-By: + - cache-lga21938-LGA + X-Timer: + - S1695849752.484777,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\",\n \"exclusiveMinimum\": 0\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '595' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '701' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:32 GMT + ETag: + - '"65147dc1-2bd"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 5055647a6f7031b0f4259eff431cfbb63d6182c3 + X-GitHub-Request-Id: + - 66F0:1234:5B27E9:86E197:65148555 + X-Served-By: + - cache-lga21926-LGA + X-Timer: + - S1695849753.599365,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '595' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '307' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:32 GMT + ETag: + - '"65147dc1-133"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - ffbfff8853eb2e3e58ed411b4cffc2141ee5fa08 + X-GitHub-Request-Id: + - FD56:23F1:6A8C75:9641FD:65148555 + X-Served-By: + - cache-lga21923-LGA + X-Timer: + - S1695849753.707761,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": + [\n \"name\"\n ],\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\",\n + \ \"minLength\": 1\n },\n \"description\": {\n + \ \"title\": \"Organization description\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Organization + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"iri\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '595' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1140' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:32 GMT + ETag: + - '"65147dc1-474"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 21548fdf982a0ce83a06a32c6a48d4f5cda1bac6 + X-GitHub-Request-Id: + - DACE:9613:642736:8FE3FD:65148555 + X-Served-By: + - cache-lga21968-LGA + X-Timer: + - S1695849753.824436,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:10 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '14' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:32 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 1edb88e17bd5972539df1580c7e15e58f0c3abee + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21925-LGA + X-Timer: + - S1695849753.952097,VS0,VE2 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/extensions/asset/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Asset Definition Extension Specification\",\n + \ \"description\": \"STAC Asset Definition Extension to a STAC Collection\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../../collection-spec/json-schema/collection.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/assets\"\n }\n ],\n \"definitions\": + {\n \"assets\": {\n \"title\": \"Asset schemas\",\n \"type\": + \"object\",\n \"required\": [\n \"assets\"\n ],\n \"properties\": + {\n \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n }\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"title\",\n \"type\"\n ],\n \"properties\": {\n + \ \"title\": {\n \"title\": \"Asset title\",\n \"type\": + \"string\"\n },\n \"type\": {\n \"title\": \"Asset + type\",\n \"type\": \"string\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1002' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:34 GMT + ETag: + - '"cffbb0036f526b016f24477e0ad674e75b6fefb89708ca796686de9d2e2a67ed"' + Expires: + - Wed, 27 Sep 2023 21:27:34 GMT + Source-Age: + - '98' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - e8453853ea69951633286f8b98970447e39ba256 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A022:6156:4B68:5D65:65149AB0 + X-Served-By: + - cache-lga21930-LGA + X-Timer: + - S1695849755.969318,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_all[test_case6].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_all[test_case6].yaml new file mode 100644 index 000000000..2129aa711 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_all[test_case6].yaml @@ -0,0 +1,1560 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json#\",\n + \ \"title\": \"STAC Collection Specification\",\n \"description\": \"This + object represents Collections in a SpatioTemporal Asset Catalog.\",\n \"allOf\": + [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"keywords\": + {\n \"title\": \"Keywords\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n + \ \"providers\": {\n \"type\": \"array\",\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"title\": + \"Organization name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n },\n \"extent\": + {\n \"title\": \"Extents\",\n \"type\": \"object\",\n \"required\": + [\n \"spatial\",\n \"temporal\"\n ],\n \"properties\": + {\n \"spatial\": {\n \"title\": \"Spatial extent object\",\n + \ \"type\": \"object\",\n \"required\": [\n \"bbox\"\n + \ ],\n \"properties\": {\n \"bbox\": + {\n \"title\": \"Spatial extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Spatial extent\",\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\":4,\n + \ \"maxItems\":4\n },\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '0' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5346' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:35 GMT + ETag: + - '"65147dc1-14e2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - d23a5ad512822067732b8f48cd2333456390e37a + X-GitHub-Request-Id: + - DC8C:6FEB:26F7FB:34E32D:6514878E + X-Served-By: + - cache-lga21922-LGA + X-Timer: + - S1695849755.127967,VS0,VE20 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '0' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:35 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 2ff872bf108ff8eaf28466d87f21ffe6ace639c4 + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21968-LGA + X-Timer: + - S1695849755.252052,VS0,VE14 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-rc.3\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"iri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\",\n \"minLength\": + 1\n },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"$ref\": + \"#/definitions/assets\"\n },\n \"properties\": {\n + \ \"allOf\": [\n {\n \"$ref\": + \"#/definitions/common_metadata\"\n },\n {\n + \ \"anyOf\": [\n {\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"not\": + {\n \"type\": \"null\"\n }\n + \ }\n }\n },\n + \ {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n + \ ]\n }\n ]\n }\n + \ ]\n }\n },\n \"if\": {\n \"properties\": + {\n \"links\": {\n \"contains\": {\n \"required\": + [\n \"rel\"\n ],\n \"properties\": + {\n \"rel\": {\n \"const\": \"collection\"\n + \ }\n }\n }\n }\n + \ }\n },\n \"then\": {\n \"required\": + [\n \"collection\"\n ],\n \"properties\": + {\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n },\n \"else\": {\n \"properties\": + {\n \"collection\": {\n \"not\": {}\n }\n + \ }\n }\n }\n ]\n },\n \"link\": {\n + \ \"type\": \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n + \ ],\n \"properties\": {\n \"href\": {\n \"title\": + \"Link reference\",\n \"type\": \"string\",\n \"format\": + \"iri-reference\",\n \"minLength\": 1\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\",\n + \ \"minLength\": 1\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": + \"Asset reference\",\n \"type\": \"string\",\n \"format\": + \"iri-reference\",\n \"minLength\": 1\n },\n \"title\": + {\n \"title\": \"Asset title\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Asset + description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n + \ \"type\": \"string\"\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '598' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6970' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:35 GMT + ETag: + - '"65147dc1-1b3a"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 1bdbc411a835db6338959283b85cf2c0ff1d37b4 + X-GitHub-Request-Id: + - B090:10B4:DB7D7:145642:65148555 + X-Served-By: + - cache-lga21920-LGA + X-Timer: + - S1695849755.370335,VS0,VE3 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '598' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '538' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:35 GMT + ETag: + - '"65147dc1-21a"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '7' + X-Fastly-Request-ID: + - b8a57e224bc7678602152ef53f56eee0a9ccac65 + X-GitHub-Request-Id: + - FB64:6E26:1C4B8F:28510C:65148554 + X-Served-By: + - cache-lga21932-LGA + X-Timer: + - S1695849755.486107,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n },\n \"properties\": {\n \"datetime\": {\n \"title\": + \"Date and Time\",\n \"description\": \"The searchable date/time of the + assets, in UTC (Formatted in RFC 3339) \",\n \"type\": [\"string\", \"null\"],\n + \ \"format\": \"date-time\",\n \"pattern\": \"(\\\\+00:00|Z)$\"\n + \ },\n \"start_datetime\": {\n \"title\": \"Start Date and Time\",\n + \ \"description\": \"The searchable start date/time of the assets, in + UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\",\n \"pattern\": \"(\\\\+00:00|Z)$\"\n }, \n \"end_datetime\": + {\n \"title\": \"End Date and Time\", \n \"description\": \"The + searchable end date/time of the assets, in UTC (Formatted in RFC 3339) \", + \ \n \"type\": \"string\",\n \"format\": \"date-time\",\n + \ \"pattern\": \"(\\\\+00:00|Z)$\"\n },\n \"created\": {\n \"title\": + \"Creation Time\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n + \ \"pattern\": \"(\\\\+00:00|Z)$\"\n },\n \"updated\": {\n \"title\": + \"Last Update Time\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n + \ \"pattern\": \"(\\\\+00:00|Z)$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '598' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1477' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:35 GMT + ETag: + - '"65147dc1-5c5"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - d0b49590ed6f3c07f9556aceb63666f6b1dfe9f0 + X-GitHub-Request-Id: + - B9DC:56D7:1E2E33:2A5D31:65148555 + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849756.595018,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\",\n \"exclusiveMinimum\": 0\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '598' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '701' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:35 GMT + ETag: + - '"65147dc1-2bd"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 6df9a950fe77b201928b24ae287306d71ccc3be1 + X-GitHub-Request-Id: + - 66F0:1234:5B27E9:86E197:65148555 + X-Served-By: + - cache-lga21929-LGA + X-Timer: + - S1695849756.719314,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '598' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '307' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:35 GMT + ETag: + - '"65147dc1-133"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - bb3e8a35749c05585f09e87e7ee65bb14ab2fed8 + X-GitHub-Request-Id: + - FD56:23F1:6A8C75:9641FD:65148555 + X-Served-By: + - cache-lga21949-LGA + X-Timer: + - S1695849756.817060,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:09 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-rc.3/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": + [\n \"name\"\n ],\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\",\n + \ \"minLength\": 1\n },\n \"description\": {\n + \ \"title\": \"Organization description\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Organization + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"iri\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '598' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1140' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:35 GMT + ETag: + - '"65147dc1-474"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - a8afab2f7bc66f035776f60a08aa07095a097b14 + X-GitHub-Request-Id: + - DACE:9613:642736:8FE3FD:65148555 + X-Served-By: + - cache-lga21969-LGA + X-Timer: + - S1695849756.930542,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:10 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '21' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:36 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - e6afa0f14d803d52745bf9e3ff5406b53a7d6f28 + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21946-LGA + X-Timer: + - S1695849756.080651,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '20' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:36 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - aa612305260c00c23d949cd713c8046eaee3d386 + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21960-LGA + X-Timer: + - S1695849756.183927,VS0,VE2 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.0.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the + schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for item properties.\",\n \"required\": + [\n \"proj:epsg\"\n ]\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"proj:epsg\":{\n + \ \"title\":\"EPSG code\",\n \"type\":[\n \"integer\",\n + \ \"null\"\n ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.2/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '600' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4646' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:36 GMT + ETag: + - '"63e6651b-1226"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - cbbe8c3732274cdb8be786b65dc03187c43f95cb + X-GitHub-Request-Id: + - DE96:7A72:FA1AA:1530DD:6514300F + X-Served-By: + - cache-lga21960-LGA + X-Timer: + - S1695849756.301154,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:20 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n },\n \"summaries\": {\n + \ \"$ref\": \"#/definitions/summaries\"\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": {\n \"min\": + {\n \"title\": \"Minimum value\",\n \"type\": + [\"number\", \"string\"]\n },\n \"max\": {\n \"title\": + \"Maximum value\",\n \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": \"Set of + values\",\n \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"description\": \"Any data type could + occur.\"\n }\n }\n ]\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2638' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:36 GMT + ETag: + - '"3b514933a3747f038125935624a13df108e30fe1cb8f9660a7f54ac6d4765ce9"' + Expires: + - Wed, 27 Sep 2023 21:27:36 GMT + Source-Age: + - '101' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 9b0f0dd0961026228755ccf140420f3cc6d6db6f + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 146A:2756:778FB:90182:65149AAF + X-Served-By: + - cache-lga21963-LGA + X-Timer: + - S1695849757.601144,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"checksum\",\n + \ \"scientific\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"version\": {\n \"title\": + \"Collection Version\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Homepage\",\n \"type\": \"string\",\n + \ \"format\": \"url\"\n }\n }\n }\n + \ },\n \"extent\": {\n \"title\": \"Extents\",\n \"type\": + \"object\",\n \"required\": [\n \"spatial\",\n \"temporal\"\n + \ ],\n \"properties\": {\n \"spatial\": {\n \"title\": + \"Spatial extent object\",\n \"type\": \"object\",\n \"required\": + [\n \"bbox\"\n ],\n \"properties\": + {\n \"bbox\": {\n \"title\": \"Spatial extents\",\n + \ \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"title\": \"Spatial extent\",\n + \ \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"properties\": {\n \"title\": \"Common properties\",\n \"type\": + \"object\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '4394' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:36 GMT + ETag: + - '"031974beaaaf6f0b5c6877dc97088d9e2aff3bc8962df33ff291dddded353f09"' + Expires: + - Wed, 27 Sep 2023 21:27:36 GMT + Source-Age: + - '101' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 670e326577ca703ed964aac758e2040fdba2f32d + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - D9DE:5675:4608:5765:65149AAF + X-Served-By: + - cache-lga21933-LGA + X-Timer: + - S1695849757.717556,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/label/v1.0.1/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/label/v1.0.1/schema.json#\",\n \"title\": + \"Label Extension\",\n \"description\": \"STAC Label Extension for STAC Items + and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": \"This + is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"links\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$comment\": \"Require fields here for item properties.\",\n + \ \"required\": [\n \"label:properties\",\n + \ \"label:description\",\n \"label:type\"\n + \ ]\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n + \ \"links\": {\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link_fields\"\n }\n + \ },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ]\n },\n {\n \"$comment\": + \"This is the schema for STAC Collections.\",\n \"allOf\": [\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/label/v1.0.1/schema.json\"\n + \ }\n }\n }\n },\n \"link_fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"label:assets\": {\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n + \ }\n },\n \"patternProperties\": {\n \"^(?!label:)\": + {}\n },\n \"additionalProperties\": false\n },\n \"fields\": + {\n \"type\": \"object\",\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"null\"\n }\n ]\n + \ },\n \"label:classes\": {\n \"title\": \"Classes\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"required\": [\n \"name\",\n \"classes\"\n + \ ],\n \"properties\": {\n \"name\": {\n + \ \"title\": \"Name\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"oneOf\": [\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n + \ {\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ ]\n }\n }\n }\n },\n + \ \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\",\n \"minLength\": 1\n },\n + \ \"label:type\": {\n \"title\": \"Type\",\n \"type\": + \"string\",\n \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"property_key\": + {\n \"title\": \"Property Key\",\n \"type\": + \"string\"\n },\n \"counts\": {\n \"title\": + \"Counts\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Class + Name\",\n \"type\": \"string\"\n },\n + \ \"count\": {\n \"title\": \"Count\",\n + \ \"type\": \"integer\"\n }\n }\n + \ }\n },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ },\n \"if\": {\n \"properties\": {\n \"label:type\": + {\n \"const\": \"raster\"\n }\n }\n },\n \"then\": + {\n \"properties\": {\n \"label:classes\": {\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"type\": + \"null\"\n }\n }\n }\n }\n + \ }\n },\n \"else\": {\n \"properties\": {\n \"label:classes\": + {\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"type\": \"string\",\n \"minLength\": + 1\n }\n }\n }\n }\n }\n + \ },\n \"patternProperties\": {\n \"^(?!label:)\": {}\n },\n + \ \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '18' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '6847' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:36 GMT + ETag: + - '"61eb1dc9-1abf"' + Last-Modified: + - Fri, 21 Jan 2022 20:55:37 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 1f8d74494f609834d2ca1e08d49c91fa204b0ff0 + X-GitHub-Request-Id: + - 821C:0FF5:2D086F:420327:6514696C + X-Served-By: + - cache-lga21937-LGA + X-Timer: + - S1695849757.850139,VS0,VE1 + expires: + - Wed, 27 Sep 2023 17:52:04 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/extensions/asset/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Asset Definition Extension Specification\",\n + \ \"description\": \"STAC Asset Definition Extension to a STAC Collection\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../../collection-spec/json-schema/collection.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/assets\"\n }\n ],\n \"definitions\": + {\n \"assets\": {\n \"title\": \"Asset schemas\",\n \"type\": + \"object\",\n \"required\": [\n \"assets\"\n ],\n \"properties\": + {\n \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n }\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"title\",\n \"type\"\n ],\n \"properties\": {\n + \ \"title\": {\n \"title\": \"Asset title\",\n \"type\": + \"string\"\n },\n \"type\": {\n \"title\": \"Asset + type\",\n \"type\": \"string\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1002' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:37 GMT + ETag: + - '"cffbb0036f526b016f24477e0ad674e75b6fefb89708ca796686de9d2e2a67ed"' + Expires: + - Wed, 27 Sep 2023 21:27:37 GMT + Source-Age: + - '101' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 93e642fd9edc658846e2676801f19e8ef984d06f + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A022:6156:4B68:5D65:65149AB0 + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849758.904086,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example0].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example0].yaml index fd50f5735..0fae7ef89 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example0].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example0].yaml @@ -68,11 +68,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:24 GMT + - Wed, 27 Sep 2023 21:20:55 GMT ETag: - '"3b514933a3747f038125935624a13df108e30fe1cb8f9660a7f54ac6d4765ce9"' Expires: - - Fri, 22 Sep 2023 19:19:24 GMT + - Wed, 27 Sep 2023 21:25:55 GMT Source-Age: - '0' Strict-Transport-Security: @@ -82,21 +82,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 5958b6ac7cfbc0b0c297bf784cccdd3d75be614d + - 6d9bff922ae67273c8c34a9c1d50297c9d4e3367 X-Frame-Options: - deny X-GitHub-Request-Id: - - 392E:0B1A:39E50F:44C0C5:650DE790 + - 146A:2756:778FB:90182:65149AAF X-Served-By: - - cache-den8227-DEN + - cache-lga21970-LGA X-Timer: - - S1695410064.408500,VS0,VE135 + - S1695849655.498771,VS0,VE71 X-XSS-Protection: - 1; mode=block status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example100].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example100].yaml index cb671dd6c..6c97d58d2 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example100].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example100].yaml @@ -1,4 +1,511 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '17' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:02 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - f963f1592e8bd6b68fd8b875f1cf1fc200857b9e + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21928-LGA + X-Timer: + - S1695849723.761173,VS0,VE5 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '17' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:02 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - d8f479b0060019e445438d19d5a372ba58120703 + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21959-LGA + X-Timer: + - S1695849723.885940,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '17' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:03 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - fe0fed788f4217c763151e0fa75f0e69c6b2f256 + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21971-LGA + X-Timer: + - S1695849723.003252,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '17' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:03 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 573bc8ae5338894b1f18d932324e7a8f953e9920 + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21938-LGA + X-Timer: + - S1695849723.121726,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '17' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:03 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 68ff96856a3f3211a84313a1af55e4f988fcaf1c + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21957-LGA + X-Timer: + - S1695849723.234311,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '17' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:03 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 4e851e8f938e42048ce10b5f6f6b32464e4723d0 + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21944-LGA + X-Timer: + - S1695849723.352431,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK - request: body: null headers: @@ -40,7 +547,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '571' Cache-Control: - max-age=600 Connection: @@ -50,11 +557,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:42 GMT + - Wed, 27 Sep 2023 21:22:03 GMT ETag: - - '"647f85f4-675"' + - '"65147dc1-675"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -62,19 +569,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 0fe76ea2af64f99a81c89ce370a487c21c0ed1dd + - a7acc9fb730799d98d1c749a900551495bb88c21 X-GitHub-Request-Id: - - 0FB8:7454:C7AA31:112FA77:650DE7A1 + - 7A00:64A7:242349:326732:65149AC0 X-Served-By: - - cache-den8278-DEN + - cache-lga21956-LGA X-Timer: - - S1695410083.557782,VS0,VE60 + - S1695849723.451954,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:24:42 GMT + - Wed, 27 Sep 2023 21:22:32 GMT x-origin-cache: - HIT x-proxy-cache: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example101].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example101].yaml new file mode 100644 index 000000000..26b609e53 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example101].yaml @@ -0,0 +1,435 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json#\",\n + \ \"title\": \"STAC Collection Specification\",\n \"description\": \"This + object represents Collections in a SpatioTemporal Asset Catalog.\",\n \"allOf\": + [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"keywords\": + {\n \"title\": \"Keywords\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n + \ \"providers\": {\n \"type\": \"array\",\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"title\": + \"Organization name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n },\n \"extent\": + {\n \"title\": \"Extents\",\n \"type\": \"object\",\n \"required\": + [\n \"spatial\",\n \"temporal\"\n ],\n \"properties\": + {\n \"spatial\": {\n \"title\": \"Spatial extent object\",\n + \ \"type\": \"object\",\n \"required\": [\n \"bbox\"\n + \ ],\n \"properties\": {\n \"bbox\": + {\n \"title\": \"Spatial extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Spatial extent\",\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\":4,\n + \ \"maxItems\":4\n },\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '575' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5346' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:03 GMT + ETag: + - '"65147dc1-14e2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 4c1d2d69309d6666496a9f1023984db8143c0906 + X-GitHub-Request-Id: + - DC8C:6FEB:26F7FB:34E32D:6514878E + X-Served-By: + - cache-lga21935-LGA + X-Timer: + - S1695849724.572818,VS0,VE1 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '575' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:03 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 13b97889fedfd1822622e24af35b6b3a82d0ead2 + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21953-LGA + X-Timer: + - S1695849724.684276,VS0,VE2 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/version/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/version/json-schema/schema.json#\",\n + \ \"title\": \"Versioning Indicators Extension\",\n \"description\": \"STAC + Versioning Indicators Extension for STAC Items or STAC Collections.\",\n \"oneOf\": + [\n {\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"properties\"\n ],\n \"properties\": {\n + \ \"properties\": {\n \"$ref\": \"#/definitions/version_extension\"\n + \ }\n }\n }\n ]\n },\n {\n \"allOf\": + [\n {\n \"$ref\": \"../../../collection-spec/json-schema/collection.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"$ref\": \"#/definitions/version_extension\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"enum\": [\n \"version\",\n + \ \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/version/json-schema/schema.json\"\n + \ ]\n }\n }\n }\n },\n \"version_extension\": + {\n \"type\": \"object\",\n \"required\": [\n \"version\"\n + \ ],\n \"properties\": {\n \"version\": {\n \"type\": + \"string\",\n \"title\": \"Version\"\n }, \n \"deprecated\": + {\n \"type\": \"boolean\", \n \"title\": \"Deprecated\",\n + \ \"default\": false\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '573' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1803' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:03 GMT + ETag: + - '"65147dc1-70b"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - bf6248a083603d7d25281de44f96b0fb77e32c26 + X-GitHub-Request-Id: + - 4FDA:5029:252A36:33B473:65149ABE + X-Served-By: + - cache-lga21965-LGA + X-Timer: + - S1695849724.797283,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '18' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:03 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - c45459058eed1021b6555d8bfbe3a4b1ba4a8d63 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21953-LGA + X-Timer: + - S1695849724.908061,VS0,VE7 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example102].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example102].yaml new file mode 100644 index 000000000..cd1ea9f31 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example102].yaml @@ -0,0 +1,812 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '18' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:04 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 45ab7837dac094bae22b85972cd5559ff58768f7 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21962-LGA + X-Timer: + - S1695849724.050314,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '18' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:04 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - ce126b54f28ee7482d1bbf9eeca010c9f8f50f80 + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21944-LGA + X-Timer: + - S1695849724.178060,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '18' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:04 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - b938c2d97ad9f964f56efbd1620480268771bcc9 + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21946-LGA + X-Timer: + - S1695849724.293573,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '18' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:04 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - a158103af5607f5f4a2c6651618cad7915d500de + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21960-LGA + X-Timer: + - S1695849724.389966,VS0,VE11 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '18' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:04 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - b3429eee47d7a4010f19fc381555d461937dea6d + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21950-LGA + X-Timer: + - S1695849724.493506,VS0,VE6 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '18' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:04 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 759788d0fde392bfffc293549dac7bf83d7b025c + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21969-LGA + X-Timer: + - S1695849725.605735,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/version/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/version/json-schema/schema.json#\",\n + \ \"title\": \"Versioning Indicators Extension\",\n \"description\": \"STAC + Versioning Indicators Extension for STAC Items or STAC Collections.\",\n \"oneOf\": + [\n {\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"properties\"\n ],\n \"properties\": {\n + \ \"properties\": {\n \"$ref\": \"#/definitions/version_extension\"\n + \ }\n }\n }\n ]\n },\n {\n \"allOf\": + [\n {\n \"$ref\": \"../../../collection-spec/json-schema/collection.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"$ref\": \"#/definitions/version_extension\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"enum\": [\n \"version\",\n + \ \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/version/json-schema/schema.json\"\n + \ ]\n }\n }\n }\n },\n \"version_extension\": + {\n \"type\": \"object\",\n \"required\": [\n \"version\"\n + \ ],\n \"properties\": {\n \"version\": {\n \"type\": + \"string\",\n \"title\": \"Version\"\n }, \n \"deprecated\": + {\n \"type\": \"boolean\", \n \"title\": \"Deprecated\",\n + \ \"default\": false\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '574' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1803' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:04 GMT + ETag: + - '"65147dc1-70b"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 4ba76d8c64ac24dd5609cf6edf1acc312997f282 + X-GitHub-Request-Id: + - 4FDA:5029:252A36:33B473:65149ABE + X-Served-By: + - cache-lga21951-LGA + X-Timer: + - S1695849725.723528,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json#\",\n + \ \"title\": \"STAC Collection Specification\",\n \"description\": \"This + object represents Collections in a SpatioTemporal Asset Catalog.\",\n \"allOf\": + [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"keywords\": + {\n \"title\": \"Keywords\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n + \ \"providers\": {\n \"type\": \"array\",\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"title\": + \"Organization name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n },\n \"extent\": + {\n \"title\": \"Extents\",\n \"type\": \"object\",\n \"required\": + [\n \"spatial\",\n \"temporal\"\n ],\n \"properties\": + {\n \"spatial\": {\n \"title\": \"Spatial extent object\",\n + \ \"type\": \"object\",\n \"required\": [\n \"bbox\"\n + \ ],\n \"properties\": {\n \"bbox\": + {\n \"title\": \"Spatial extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Spatial extent\",\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\":4,\n + \ \"maxItems\":4\n },\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '576' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5346' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:04 GMT + ETag: + - '"65147dc1-14e2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - b8157649395a9eb9e67dc7f0f1346a7ea4dc08d9 + X-GitHub-Request-Id: + - DC8C:6FEB:26F7FB:34E32D:6514878E + X-Served-By: + - cache-lga21937-LGA + X-Timer: + - S1695849725.843280,VS0,VE2 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '576' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:04 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - d3c60650cfd3209793a1c00e4e848daddd008003 + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21959-LGA + X-Timer: + - S1695849725.960532,VS0,VE0 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example103].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example103].yaml new file mode 100644 index 000000000..7c0c05d09 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example103].yaml @@ -0,0 +1,676 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '19' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:05 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 5eeadd0361ff24c7dd81b69b74c01054bc059682 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21941-LGA + X-Timer: + - S1695849725.090797,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '19' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:05 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - b401d83a912063798bbdd643c31d8d3098b350d9 + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21954-LGA + X-Timer: + - S1695849725.243552,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '19' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:05 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 29422440e32679279efcc52c6b32b9b87f0aa084 + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21962-LGA + X-Timer: + - S1695849725.352312,VS0,VE3 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '19' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:05 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 77281f987d479f141af6517de053f38e4cf4c646 + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849725.466129,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '19' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:05 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 214a940f8f0cda1ccba445b21a0a71ed4810a770 + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21955-LGA + X-Timer: + - S1695849726.577784,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '19' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:05 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 6c553d85ed6226a91bf1f61d68774db72a2ad352 + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21931-LGA + X-Timer: + - S1695849726.699149,VS0,VE0 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/sat/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/sat/json-schema/schema.json#\",\n + \ \"title\": \"Sat Extension\",\n \"description\": \"STAC Sat Extension to + a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/sat\"\n },\n {\n \"$ref\": + \"../../../item-spec/json-schema/instrument.json\"\n }\n ],\n \"definitions\": + {\n \"sat\": {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\",\n + \ \"properties\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"enum\": + [\n \"sat\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/sat/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"anyOf\": [\n {\"required\": [\"sat:relative_orbit\"]},\n + \ {\"required\": [\"sat:orbit_state\"]}\n ],\n \"properties\": + {\n \"sat:relative_orbit\": {\n \"type\": \"integer\",\n + \ \"minimum\": 1\n },\n \"sat:orbit_state\": + {\n \"title\": \"Orbit State\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"ascending\",\n \"descending\",\n + \ \"geostationary\"\n ]\n }\n }\n + \ }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '574' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1467' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:05 GMT + ETag: + - '"65147dc1-5bb"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '4' + X-Fastly-Request-ID: + - 60ace51ad4ea196cfd54e2429d4d134316955645 + X-GitHub-Request-Id: + - 2FFC:5E3C:221FCD:3093E0:65149ABF + X-Served-By: + - cache-lga21945-LGA + X-Timer: + - S1695849726.797676,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:32 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json#\",\n + \ \"title\": \"View Geometry Extension\",\n \"description\": \"STAC View + Geometry Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": + \"../../../item-spec/json-schema/item.json\"\n },\n {\n \"$ref\": + \"#/definitions/view\"\n }\n ],\n \"definitions\": {\n \"view\": {\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_extensions\",\n + \ \"properties\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"enum\": + [\n \"view\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"anyOf\": [\n {\"required\": [\"view:off_nadir\"]},\n + \ {\"required\": [\"view:incidence_angle\"]},\n {\"required\": + [\"view:azimuth\"]},\n {\"required\": [\"view:sun_azimuth\"]},\n + \ {\"required\": [\"view:sun_elevation\"]}\n ],\n \"properties\": + {\n \"view:off_nadir\": {\n \"title\": \"Off Nadir\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 90\n },\n \"view:incidence_angle\": {\n \"title\": + \"Center incidence angle\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n + \ \"view:sun_azimuth\": {\n \"title\": \"Sun Azimuth\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 360\n },\n \"view:sun_elevation\": {\n \"title\": + \"Sun Elevation\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n }\n }\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '576' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2089' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:05 GMT + ETag: + - '"65147dc1-829"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - cf84fc0a3da89f62de577b6d4dd431a0c6a7657f + X-GitHub-Request-Id: + - CCB2:76FD:21A196:30210A:65149ABC + X-Served-By: + - cache-lga21946-LGA + X-Timer: + - S1695849726.921978,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example104].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example104].yaml new file mode 100644 index 000000000..a1ee16e0c --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example104].yaml @@ -0,0 +1,700 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '20' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:06 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 49c1a33e80df747c8d2822969c0f8810fc3d45dd + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21924-LGA + X-Timer: + - S1695849726.048932,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '20' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:06 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - c15573cb91db449872ce1122b24fe0f59334d224 + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21969-LGA + X-Timer: + - S1695849726.167557,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '20' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:06 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 7b4f7b87615d71ecbd46ae4f1bb551b7be3325b6 + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21950-LGA + X-Timer: + - S1695849726.263190,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '20' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:06 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 325248658ba5e95d9a035ef71cc61e177a12aebb + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21960-LGA + X-Timer: + - S1695849726.357267,VS0,VE0 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '20' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:06 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 882b29382b7fe2be77475c1c058552be9100f5d5 + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21947-LGA + X-Timer: + - S1695849726.458594,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '20' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:06 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 2f0806c3199aaf0e044b9cfa9f18633f74fc182d + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21934-LGA + X-Timer: + - S1695849727.554219,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/projection/json-schema/schema.json + response: + body: + string: "{\n \"$schema\":\"http://json-schema.org/draft-07/schema#\",\n \"$id\":\"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/projection/json-schema/schema.json#\",\n + \ \"title\":\"Projection Extension\",\n \"description\":\"STAC Projection + Extension to a STAC Item\",\n \"allOf\":[\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\":\"#/definitions/proj\"\n }\n ],\n \"definitions\":{\n + \ \"proj\":{\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\",\n + \ \"properties\"\n ],\n \"properties\":{\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"enum\": + [\n \"projection\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/projection/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\":{\n \"type\":\"object\",\n + \ \"required\":[\n \"proj:epsg\"\n ],\n \"properties\":{\n + \ \"proj:epsg\":{\n \"title\":\"EPSG code\",\n \"type\":[\n + \ \"integer\",\n \"null\"\n ]\n + \ },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": + \"https://proj.org/schemas/v0.2/projjson.schema.json\"\n },\n + \ {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"title\":\"Geometry\",\n + \ \"oneOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Polygon.json\"\n }\n ]\n + \ },\n \"proj:bbox\":{\n \"title\":\"Extent\",\n + \ \"type\":\"array\",\n \"oneOf\": [\n {\n + \ \"minItems\":4,\n \"maxItems\":4\n },\n + \ {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n + \ \"lat\": {\n \"type\": \"number\",\n \"minimum\": + -90,\n \"maximum\": 90\n },\n \"lon\": + {\n \"type\": \"number\",\n \"minimum\": + -180,\n \"maximum\": 180\n }\n }\n + \ },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n + \ },\n \"proj:transform\":{\n \"title\":\"Transform\",\n + \ \"type\":\"array\",\n \"oneOf\": [\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n },\n + \ {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '576' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3527' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:06 GMT + ETag: + - '"65147dc1-dc7"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 6b1447f87b01651656a85ffbfb5db19cee531add + X-GitHub-Request-Id: + - 7A00:64A7:2422C3:32667C:65149ABD + X-Served-By: + - cache-lga21959-LGA + X-Timer: + - S1695849727.657146,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:31 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json#\",\n + \ \"title\": \"View Geometry Extension\",\n \"description\": \"STAC View + Geometry Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": + \"../../../item-spec/json-schema/item.json\"\n },\n {\n \"$ref\": + \"#/definitions/view\"\n }\n ],\n \"definitions\": {\n \"view\": {\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_extensions\",\n + \ \"properties\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"enum\": + [\n \"view\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"anyOf\": [\n {\"required\": [\"view:off_nadir\"]},\n + \ {\"required\": [\"view:incidence_angle\"]},\n {\"required\": + [\"view:azimuth\"]},\n {\"required\": [\"view:sun_azimuth\"]},\n + \ {\"required\": [\"view:sun_elevation\"]}\n ],\n \"properties\": + {\n \"view:off_nadir\": {\n \"title\": \"Off Nadir\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 90\n },\n \"view:incidence_angle\": {\n \"title\": + \"Center incidence angle\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n + \ \"view:sun_azimuth\": {\n \"title\": \"Sun Azimuth\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 360\n },\n \"view:sun_elevation\": {\n \"title\": + \"Sun Elevation\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n }\n }\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '576' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2089' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:06 GMT + ETag: + - '"65147dc1-829"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 90196a931dd98f8280ddf041b50a7652154a4763 + X-GitHub-Request-Id: + - CCB2:76FD:21A196:30210A:65149ABC + X-Served-By: + - cache-lga21937-LGA + X-Timer: + - S1695849727.759644,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example105].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example105].yaml new file mode 100644 index 000000000..c38962ba8 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example105].yaml @@ -0,0 +1,509 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '21' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:06 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 7d00519840d0259dada50361391c8d0dd469e3bf + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21950-LGA + X-Timer: + - S1695849727.895323,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '21' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:07 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 406286eaf257489d5e18c961655ba21960e46ff9 + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21955-LGA + X-Timer: + - S1695849727.016263,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '21' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:07 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 332669580deb554688023f633cf695605527e9c9 + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849727.129660,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '21' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:07 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - ec7c2229e4e78177b012e63357eebf18d93647c5 + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21959-LGA + X-Timer: + - S1695849727.229920,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '21' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:07 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 21af8221b2bd7d0679fd33f87db765f2c50fc273 + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21954-LGA + X-Timer: + - S1695849727.342992,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '21' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:07 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - aae7edf20cc6a70fa5ee829f5b5e6d28c7803d83 + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21943-LGA + X-Timer: + - S1695849727.462836,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example106].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example106].yaml new file mode 100644 index 000000000..7ffb11b3f --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example106].yaml @@ -0,0 +1,788 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '22' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:07 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - af15437b9c867c09b967a139074ba36685ca9294 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21946-LGA + X-Timer: + - S1695849728.569218,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '22' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:07 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 56c65aa161e7cd9e9b54f133c0973e05e650e006 + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21945-LGA + X-Timer: + - S1695849728.673060,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '22' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:07 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 7e3dc7f525f025d51f0cbf7abb71e5038c8f8ef5 + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21931-LGA + X-Timer: + - S1695849728.786979,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '22' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:07 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 674ff1951584f8bc178f770f195069f6852c15fd + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21942-LGA + X-Timer: + - S1695849728.905328,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '22' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:08 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - eb1c1b2d448b68eec90c545a262aa36ac70efdbd + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21961-LGA + X-Timer: + - S1695849728.025130,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '22' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:08 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - e9267209086cdb21597033b5192c43f3a78da32d + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21951-LGA + X-Timer: + - S1695849728.143796,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/eo/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/eo/json-schema/schema.json#\",\n + \ \"title\": \"EO Extension\",\n \"description\": \"STAC EO Extension to + a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/eo\"\n }\n ],\n \"definitions\": + {\n \"eo\": {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"stac_extensions\": {\n \"type\": \"array\",\n \"contains\": + {\n \"enum\": [\n \"eo\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/eo/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:bands\": {\n \"$ref\": + \"#/definitions/bands\"\n },\n \"eo:cloud_cover\": {\n + \ \"title\": \"Cloud Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n }\n + \ }\n },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"eo:bands\": {\n \"$ref\": + \"#/definitions/bands\"\n }\n }\n }\n }\n + \ }\n },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\"\n },\n + \ \"center_wavelength\": {\n \"title\": \"Center Wavelength\",\n + \ \"type\": \"number\"\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '578' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2053' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:08 GMT + ETag: + - '"65147dc1-805"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 8a51e8abc2f547ef60eaf8cc659c6b5ce5c4960d + X-GitHub-Request-Id: + - C5E4:3891:21EDA0:302569:65149ABD + X-Served-By: + - cache-lga21964-LGA + X-Timer: + - S1695849728.246921,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/projection/json-schema/schema.json + response: + body: + string: "{\n \"$schema\":\"http://json-schema.org/draft-07/schema#\",\n \"$id\":\"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/projection/json-schema/schema.json#\",\n + \ \"title\":\"Projection Extension\",\n \"description\":\"STAC Projection + Extension to a STAC Item\",\n \"allOf\":[\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\":\"#/definitions/proj\"\n }\n ],\n \"definitions\":{\n + \ \"proj\":{\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\",\n + \ \"properties\"\n ],\n \"properties\":{\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"enum\": + [\n \"projection\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/projection/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\":{\n \"type\":\"object\",\n + \ \"required\":[\n \"proj:epsg\"\n ],\n \"properties\":{\n + \ \"proj:epsg\":{\n \"title\":\"EPSG code\",\n \"type\":[\n + \ \"integer\",\n \"null\"\n ]\n + \ },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": + \"https://proj.org/schemas/v0.2/projjson.schema.json\"\n },\n + \ {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"title\":\"Geometry\",\n + \ \"oneOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Polygon.json\"\n }\n ]\n + \ },\n \"proj:bbox\":{\n \"title\":\"Extent\",\n + \ \"type\":\"array\",\n \"oneOf\": [\n {\n + \ \"minItems\":4,\n \"maxItems\":4\n },\n + \ {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n + \ \"lat\": {\n \"type\": \"number\",\n \"minimum\": + -90,\n \"maximum\": 90\n },\n \"lon\": + {\n \"type\": \"number\",\n \"minimum\": + -180,\n \"maximum\": 180\n }\n }\n + \ },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n + \ },\n \"proj:transform\":{\n \"title\":\"Transform\",\n + \ \"type\":\"array\",\n \"oneOf\": [\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n },\n + \ {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '577' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3527' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:08 GMT + ETag: + - '"65147dc1-dc7"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 60baae063718961d079e48ad048c8900a2af1d73 + X-GitHub-Request-Id: + - 7A00:64A7:2422C3:32667C:65149ABD + X-Served-By: + - cache-lga21955-LGA + X-Timer: + - S1695849728.352249,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:31 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json#\",\n + \ \"title\": \"View Geometry Extension\",\n \"description\": \"STAC View + Geometry Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": + \"../../../item-spec/json-schema/item.json\"\n },\n {\n \"$ref\": + \"#/definitions/view\"\n }\n ],\n \"definitions\": {\n \"view\": {\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_extensions\",\n + \ \"properties\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"enum\": + [\n \"view\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"anyOf\": [\n {\"required\": [\"view:off_nadir\"]},\n + \ {\"required\": [\"view:incidence_angle\"]},\n {\"required\": + [\"view:azimuth\"]},\n {\"required\": [\"view:sun_azimuth\"]},\n + \ {\"required\": [\"view:sun_elevation\"]}\n ],\n \"properties\": + {\n \"view:off_nadir\": {\n \"title\": \"Off Nadir\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 90\n },\n \"view:incidence_angle\": {\n \"title\": + \"Center incidence angle\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n + \ \"view:sun_azimuth\": {\n \"title\": \"Sun Azimuth\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 360\n },\n \"view:sun_elevation\": {\n \"title\": + \"Sun Elevation\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n }\n }\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '578' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2089' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:08 GMT + ETag: + - '"65147dc1-829"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 9d0f80fa37370f28c018e4f450590321b951d585 + X-GitHub-Request-Id: + - CCB2:76FD:21A196:30210A:65149ABC + X-Served-By: + - cache-lga21936-LGA + X-Timer: + - S1695849728.468154,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example107].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example107].yaml new file mode 100644 index 000000000..d2d680b49 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example107].yaml @@ -0,0 +1,684 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '22' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:08 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - c5aac456b4e40e0c67cd881b8fc56408f5b73e49 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21958-LGA + X-Timer: + - S1695849729.601444,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '23' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:08 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 0c486717fcf1e1bc7cf759c983cf6bd0bd49f4ff + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21945-LGA + X-Timer: + - S1695849729.706195,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '23' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:08 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - e7e4ab9c21c9910d8b5668e8430390511492f874 + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21956-LGA + X-Timer: + - S1695849729.807035,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '23' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:08 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 95960bb91624c4baa86001a60f34c2a686733d5a + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21936-LGA + X-Timer: + - S1695849729.905175,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '23' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:09 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - aa4fbdf4a9e5a9e72ad0eb93d486c100384a2fe7 + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21971-LGA + X-Timer: + - S1695849729.013314,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '23' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:09 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 9099ead9f7ad7bf1b1a053d22595b8d0e0e0f596 + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21957-LGA + X-Timer: + - S1695849729.136845,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/eo/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/eo/json-schema/schema.json#\",\n + \ \"title\": \"EO Extension\",\n \"description\": \"STAC EO Extension to + a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/eo\"\n }\n ],\n \"definitions\": + {\n \"eo\": {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"stac_extensions\": {\n \"type\": \"array\",\n \"contains\": + {\n \"enum\": [\n \"eo\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/eo/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:bands\": {\n \"$ref\": + \"#/definitions/bands\"\n },\n \"eo:cloud_cover\": {\n + \ \"title\": \"Cloud Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n }\n + \ }\n },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"eo:bands\": {\n \"$ref\": + \"#/definitions/bands\"\n }\n }\n }\n }\n + \ }\n },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\"\n },\n + \ \"center_wavelength\": {\n \"title\": \"Center Wavelength\",\n + \ \"type\": \"number\"\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '579' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2053' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:09 GMT + ETag: + - '"65147dc1-805"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 4669c39e952f18fda30a31915bccb057b8ab690c + X-GitHub-Request-Id: + - C5E4:3891:21EDA0:302569:65149ABD + X-Served-By: + - cache-lga21929-LGA + X-Timer: + - S1695849729.248251,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json#\",\n + \ \"title\": \"View Geometry Extension\",\n \"description\": \"STAC View + Geometry Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": + \"../../../item-spec/json-schema/item.json\"\n },\n {\n \"$ref\": + \"#/definitions/view\"\n }\n ],\n \"definitions\": {\n \"view\": {\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_extensions\",\n + \ \"properties\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"enum\": + [\n \"view\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"anyOf\": [\n {\"required\": [\"view:off_nadir\"]},\n + \ {\"required\": [\"view:incidence_angle\"]},\n {\"required\": + [\"view:azimuth\"]},\n {\"required\": [\"view:sun_azimuth\"]},\n + \ {\"required\": [\"view:sun_elevation\"]}\n ],\n \"properties\": + {\n \"view:off_nadir\": {\n \"title\": \"Off Nadir\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 90\n },\n \"view:incidence_angle\": {\n \"title\": + \"Center incidence angle\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n + \ \"view:sun_azimuth\": {\n \"title\": \"Sun Azimuth\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 360\n },\n \"view:sun_elevation\": {\n \"title\": + \"Sun Elevation\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n }\n }\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '579' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2089' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:09 GMT + ETag: + - '"65147dc1-829"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 942cf4c6b4a83e4c6343970878587be2875d17a2 + X-GitHub-Request-Id: + - CCB2:76FD:21A196:30210A:65149ABC + X-Served-By: + - cache-lga21949-LGA + X-Timer: + - S1695849729.356770,VS0,VE6 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example108].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example108].yaml new file mode 100644 index 000000000..e99c70f06 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example108].yaml @@ -0,0 +1,684 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '24' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:09 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 70561623683c9f79ea41e0855a35191e36e89d3f + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21950-LGA + X-Timer: + - S1695849729.497878,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '24' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:09 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 60a71c582b1fbb248d01ed4736959f4c273bf55f + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21964-LGA + X-Timer: + - S1695849730.621126,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '24' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:09 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - da8ae5a36edafdf511cc0fb46fed4c4374a00a9e + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21965-LGA + X-Timer: + - S1695849730.731234,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '24' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:09 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 10d88d649419bb71183264937fded07f63d600bb + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21951-LGA + X-Timer: + - S1695849730.843624,VS0,VE9 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '24' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:09 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 65030d2fa3f7a0b9cb368e6f457d0d9b68b4839e + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21962-LGA + X-Timer: + - S1695849730.970408,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '24' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:10 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - d8bb9ba75ee354fe4d729ed99f726c6c8090f6dc + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21942-LGA + X-Timer: + - S1695849730.079816,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/eo/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/eo/json-schema/schema.json#\",\n + \ \"title\": \"EO Extension\",\n \"description\": \"STAC EO Extension to + a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/eo\"\n }\n ],\n \"definitions\": + {\n \"eo\": {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"stac_extensions\": {\n \"type\": \"array\",\n \"contains\": + {\n \"enum\": [\n \"eo\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/eo/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:bands\": {\n \"$ref\": + \"#/definitions/bands\"\n },\n \"eo:cloud_cover\": {\n + \ \"title\": \"Cloud Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n }\n + \ }\n },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"eo:bands\": {\n \"$ref\": + \"#/definitions/bands\"\n }\n }\n }\n }\n + \ }\n },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\"\n },\n + \ \"center_wavelength\": {\n \"title\": \"Center Wavelength\",\n + \ \"type\": \"number\"\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '580' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2053' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:10 GMT + ETag: + - '"65147dc1-805"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 4612e5d7555f77823aa055f6c3e8bbc9ec40ae51 + X-GitHub-Request-Id: + - C5E4:3891:21EDA0:302569:65149ABD + X-Served-By: + - cache-lga21944-LGA + X-Timer: + - S1695849730.177748,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json#\",\n + \ \"title\": \"View Geometry Extension\",\n \"description\": \"STAC View + Geometry Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": + \"../../../item-spec/json-schema/item.json\"\n },\n {\n \"$ref\": + \"#/definitions/view\"\n }\n ],\n \"definitions\": {\n \"view\": {\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_extensions\",\n + \ \"properties\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"enum\": + [\n \"view\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"anyOf\": [\n {\"required\": [\"view:off_nadir\"]},\n + \ {\"required\": [\"view:incidence_angle\"]},\n {\"required\": + [\"view:azimuth\"]},\n {\"required\": [\"view:sun_azimuth\"]},\n + \ {\"required\": [\"view:sun_elevation\"]}\n ],\n \"properties\": + {\n \"view:off_nadir\": {\n \"title\": \"Off Nadir\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 90\n },\n \"view:incidence_angle\": {\n \"title\": + \"Center incidence angle\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n + \ \"view:sun_azimuth\": {\n \"title\": \"Sun Azimuth\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 360\n },\n \"view:sun_elevation\": {\n \"title\": + \"Sun Elevation\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n }\n }\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '580' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2089' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:10 GMT + ETag: + - '"65147dc1-829"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 3fa06c350c39610cf34ea16b615ca78435ee1b0b + X-GitHub-Request-Id: + - CCB2:76FD:21A196:30210A:65149ABC + X-Served-By: + - cache-lga21958-LGA + X-Timer: + - S1695849730.281327,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example109].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example109].yaml new file mode 100644 index 000000000..18047f6be --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example109].yaml @@ -0,0 +1,684 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '25' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:10 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 9ae44b10b61cb05a8f2acb93d587268d8207bda0 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21935-LGA + X-Timer: + - S1695849730.421779,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '25' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:10 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - dadc86b9fedfa40739026b49e4b4851873a431bf + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21955-LGA + X-Timer: + - S1695849731.540197,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '24' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:10 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - e10090f6a35b468acdc846f3287c1677ecde7f1f + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21957-LGA + X-Timer: + - S1695849731.635760,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '24' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:10 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 593e9b140f9f7b9e85fc1dddb8309c58bfbad186 + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21971-LGA + X-Timer: + - S1695849731.735523,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '24' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:10 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - e514b9b180be8d2d773bc2d6918271b322bd6cf9 + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21936-LGA + X-Timer: + - S1695849731.835299,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '24' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:10 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - c20512803bdc73d1d2eabe65a7cdcf038d3f0575 + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21956-LGA + X-Timer: + - S1695849731.942465,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/eo/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/eo/json-schema/schema.json#\",\n + \ \"title\": \"EO Extension\",\n \"description\": \"STAC EO Extension to + a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/eo\"\n }\n ],\n \"definitions\": + {\n \"eo\": {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"stac_extensions\": {\n \"type\": \"array\",\n \"contains\": + {\n \"enum\": [\n \"eo\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/eo/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:bands\": {\n \"$ref\": + \"#/definitions/bands\"\n },\n \"eo:cloud_cover\": {\n + \ \"title\": \"Cloud Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n }\n + \ }\n },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"eo:bands\": {\n \"$ref\": + \"#/definitions/bands\"\n }\n }\n }\n }\n + \ }\n },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\"\n },\n + \ \"center_wavelength\": {\n \"title\": \"Center Wavelength\",\n + \ \"type\": \"number\"\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '581' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2053' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:11 GMT + ETag: + - '"65147dc1-805"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - ebb5cb7a3adbfd05dcf4dde08ca003c7f524499b + X-GitHub-Request-Id: + - C5E4:3891:21EDA0:302569:65149ABD + X-Served-By: + - cache-lga21964-LGA + X-Timer: + - S1695849731.039818,VS0,VE0 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json#\",\n + \ \"title\": \"View Geometry Extension\",\n \"description\": \"STAC View + Geometry Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": + \"../../../item-spec/json-schema/item.json\"\n },\n {\n \"$ref\": + \"#/definitions/view\"\n }\n ],\n \"definitions\": {\n \"view\": {\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_extensions\",\n + \ \"properties\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"enum\": + [\n \"view\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"anyOf\": [\n {\"required\": [\"view:off_nadir\"]},\n + \ {\"required\": [\"view:incidence_angle\"]},\n {\"required\": + [\"view:azimuth\"]},\n {\"required\": [\"view:sun_azimuth\"]},\n + \ {\"required\": [\"view:sun_elevation\"]}\n ],\n \"properties\": + {\n \"view:off_nadir\": {\n \"title\": \"Off Nadir\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 90\n },\n \"view:incidence_angle\": {\n \"title\": + \"Center incidence angle\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n + \ \"view:sun_azimuth\": {\n \"title\": \"Sun Azimuth\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 360\n },\n \"view:sun_elevation\": {\n \"title\": + \"Sun Elevation\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n }\n }\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '581' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2089' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:11 GMT + ETag: + - '"65147dc1-829"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 9b06ba2b544261a15bca0e6f9890dfd052f35e19 + X-GitHub-Request-Id: + - CCB2:76FD:21A196:30210A:65149ABC + X-Served-By: + - cache-lga21950-LGA + X-Timer: + - S1695849731.146522,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example10].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example10].yaml new file mode 100644 index 000000000..03a352773 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example10].yaml @@ -0,0 +1,105 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n },\n \"summaries\": {\n + \ \"$ref\": \"#/definitions/summaries\"\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": {\n \"min\": + {\n \"title\": \"Minimum value\",\n \"type\": + [\"number\", \"string\"]\n },\n \"max\": {\n \"title\": + \"Maximum value\",\n \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": \"Set of + values\",\n \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"description\": \"Any data type could + occur.\"\n }\n }\n ]\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2638' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:20:58 GMT + ETag: + - '"3b514933a3747f038125935624a13df108e30fe1cb8f9660a7f54ac6d4765ce9"' + Expires: + - Wed, 27 Sep 2023 21:25:58 GMT + Source-Age: + - '3' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - cd739c9bdd980fb1fb35235d24321d59dfb321bb + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 146A:2756:778FB:90182:65149AAF + X-Served-By: + - cache-lga21922-LGA + X-Timer: + - S1695849658.180245,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example110].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example110].yaml new file mode 100644 index 000000000..96a4f2cb0 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example110].yaml @@ -0,0 +1,509 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '25' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:11 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 37c6e9130e94fa865adf354e48454e19a9829507 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21949-LGA + X-Timer: + - S1695849731.277723,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '25' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:11 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 77c0b922989cfb0f482f3304b785517fa3e173bd + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21929-LGA + X-Timer: + - S1695849731.400258,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '25' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:11 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 92d198ebe990946e5a3e97e5a340accff059c356 + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849732.515072,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '25' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:11 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 0f137d4e336cf38d2ea4bf01282c39540248c274 + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21977-LGA + X-Timer: + - S1695849732.626605,VS0,VE0 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '25' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:11 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - ce1d3aad4e0e747e2586063be2a3a71c389763f7 + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21935-LGA + X-Timer: + - S1695849732.741851,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '25' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:11 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 9b962dcf83af8984a9a99099c21fe33207c70e5c + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21980-LGA + X-Timer: + - S1695849732.855731,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example111].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example111].yaml new file mode 100644 index 000000000..76440646f --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example111].yaml @@ -0,0 +1,700 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '26' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:11 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 7e52f68b7f5874e302754d2b3d8884f7c0718104 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21970-LGA + X-Timer: + - S1695849732.990310,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '26' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:12 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '3' + X-Fastly-Request-ID: + - 00d973d896704c0fd81d5def9103c5164df153d0 + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21920-LGA + X-Timer: + - S1695849732.111018,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '26' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:12 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 33a0985c5e108f3df1e5780a14998441ff79beaf + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21974-LGA + X-Timer: + - S1695849732.228555,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '27' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:12 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - ec0cb501ceb82186584b05b569d7c37829ebe51f + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21929-LGA + X-Timer: + - S1695849732.346276,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '26' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:12 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 5edb7c93f04291791d5ac2e4672f2b508b1b8aae + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21971-LGA + X-Timer: + - S1695849732.454595,VS0,VE0 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '26' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:12 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - b370aa7d54f8a70b6875ede6d5dd9026c05e2a46 + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21921-LGA + X-Timer: + - S1695849733.572693,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json#\",\n + \ \"title\": \"View Geometry Extension\",\n \"description\": \"STAC View + Geometry Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": + \"../../../item-spec/json-schema/item.json\"\n },\n {\n \"$ref\": + \"#/definitions/view\"\n }\n ],\n \"definitions\": {\n \"view\": {\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_extensions\",\n + \ \"properties\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"enum\": + [\n \"view\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"anyOf\": [\n {\"required\": [\"view:off_nadir\"]},\n + \ {\"required\": [\"view:incidence_angle\"]},\n {\"required\": + [\"view:azimuth\"]},\n {\"required\": [\"view:sun_azimuth\"]},\n + \ {\"required\": [\"view:sun_elevation\"]}\n ],\n \"properties\": + {\n \"view:off_nadir\": {\n \"title\": \"Off Nadir\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 90\n },\n \"view:incidence_angle\": {\n \"title\": + \"Center incidence angle\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n + \ \"view:sun_azimuth\": {\n \"title\": \"Sun Azimuth\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 360\n },\n \"view:sun_elevation\": {\n \"title\": + \"Sun Elevation\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n }\n }\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '582' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2089' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:12 GMT + ETag: + - '"65147dc1-829"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 43b8c36115fa16e0eff811f508e193af02e0556d + X-GitHub-Request-Id: + - CCB2:76FD:21A196:30210A:65149ABC + X-Served-By: + - cache-lga21922-LGA + X-Timer: + - S1695849733.701763,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/projection/json-schema/schema.json + response: + body: + string: "{\n \"$schema\":\"http://json-schema.org/draft-07/schema#\",\n \"$id\":\"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/projection/json-schema/schema.json#\",\n + \ \"title\":\"Projection Extension\",\n \"description\":\"STAC Projection + Extension to a STAC Item\",\n \"allOf\":[\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\":\"#/definitions/proj\"\n }\n ],\n \"definitions\":{\n + \ \"proj\":{\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\",\n + \ \"properties\"\n ],\n \"properties\":{\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"enum\": + [\n \"projection\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/projection/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\":{\n \"type\":\"object\",\n + \ \"required\":[\n \"proj:epsg\"\n ],\n \"properties\":{\n + \ \"proj:epsg\":{\n \"title\":\"EPSG code\",\n \"type\":[\n + \ \"integer\",\n \"null\"\n ]\n + \ },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": + \"https://proj.org/schemas/v0.2/projjson.schema.json\"\n },\n + \ {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"title\":\"Geometry\",\n + \ \"oneOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Polygon.json\"\n }\n ]\n + \ },\n \"proj:bbox\":{\n \"title\":\"Extent\",\n + \ \"type\":\"array\",\n \"oneOf\": [\n {\n + \ \"minItems\":4,\n \"maxItems\":4\n },\n + \ {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n + \ \"lat\": {\n \"type\": \"number\",\n \"minimum\": + -90,\n \"maximum\": 90\n },\n \"lon\": + {\n \"type\": \"number\",\n \"minimum\": + -180,\n \"maximum\": 180\n }\n }\n + \ },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n + \ },\n \"proj:transform\":{\n \"title\":\"Transform\",\n + \ \"type\":\"array\",\n \"oneOf\": [\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n },\n + \ {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '582' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3527' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:12 GMT + ETag: + - '"65147dc1-dc7"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 9f3e52ba91a619fbfdb347dbb758cd79837667ec + X-GitHub-Request-Id: + - 7A00:64A7:2422C3:32667C:65149ABD + X-Served-By: + - cache-lga21942-LGA + X-Timer: + - S1695849733.802983,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:31 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example112].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example112].yaml new file mode 100644 index 000000000..8991c4afb --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example112].yaml @@ -0,0 +1,228 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"commons\",\n + \ \"checksum\",\n \"datacube\",\n \"scientific\",\n + \ \"version\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"license\": {\n \"title\": + \"Collection License Name\",\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n + \ }\n },\n \"extent\": {\n \"title\": \"Extents\",\n + \ \"type\": \"object\",\n \"required\": [\n \"spatial\",\n + \ \"temporal\"\n ],\n \"properties\": {\n \"spatial\": + {\n \"title\": \"Spatial extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"bbox\"\n ],\n + \ \"properties\": {\n \"bbox\": {\n \"title\": + \"Spatial extents\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"title\": \"Spatial + extent\",\n \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5265' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:12 GMT + ETag: + - '"efa6309742b904ab7b06bab4c30c3ea2e1ce78163892365a7f4ee461716396b3"' + Expires: + - Wed, 27 Sep 2023 21:27:12 GMT + Source-Age: + - '63' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 6c0fc82e41c70d98255ab7c85f4a732b20ccb2c0 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - BC5C:6DEB:5AD5:6D2C:65149AB5 + X-Served-By: + - cache-lga21961-LGA + X-Timer: + - S1695849733.931899,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1766' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:13 GMT + ETag: + - '"c76fd44b22619705d40fb03a5b1d875e2e786f9ac7a85244758d15cc7cc947a9"' + Expires: + - Wed, 27 Sep 2023 21:27:13 GMT + Source-Age: + - '63' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '3' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 8c721a05ad745364ff8bd6da5dd4d41e25cf8a54 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A566:10B3:511A:6368:65149AB6 + X-Served-By: + - cache-lga21942-LGA + X-Timer: + - S1695849733.058372,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example113].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example113].yaml new file mode 100644 index 000000000..726a0de15 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example113].yaml @@ -0,0 +1,229 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"checksum\",\n + \ \"scientific\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"version\": {\n \"title\": + \"Collection Version\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Homepage\",\n \"type\": \"string\",\n + \ \"format\": \"url\"\n }\n }\n }\n + \ },\n \"extent\": {\n \"title\": \"Extents\",\n \"type\": + \"object\",\n \"required\": [\n \"spatial\",\n \"temporal\"\n + \ ],\n \"properties\": {\n \"spatial\": {\n \"title\": + \"Spatial extent object\",\n \"type\": \"object\",\n \"required\": + [\n \"bbox\"\n ],\n \"properties\": + {\n \"bbox\": {\n \"title\": \"Spatial extents\",\n + \ \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"title\": \"Spatial extent\",\n + \ \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"properties\": {\n \"title\": \"Common properties\",\n \"type\": + \"object\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '4394' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:13 GMT + ETag: + - '"031974beaaaf6f0b5c6877dc97088d9e2aff3bc8962df33ff291dddded353f09"' + Expires: + - Wed, 27 Sep 2023 21:27:13 GMT + Source-Age: + - '77' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - a02f8566a9cfb82f137ee2f39d5ea27f7f97e0c4 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - D9DE:5675:4608:5765:65149AAF + X-Served-By: + - cache-lga21952-LGA + X-Timer: + - S1695849733.185289,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n },\n \"summaries\": {\n + \ \"$ref\": \"#/definitions/summaries\"\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": {\n \"min\": + {\n \"title\": \"Minimum value\",\n \"type\": + [\"number\", \"string\"]\n },\n \"max\": {\n \"title\": + \"Maximum value\",\n \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": \"Set of + values\",\n \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"description\": \"Any data type could + occur.\"\n }\n }\n ]\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2638' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:22:13 GMT + ETag: + - '"3b514933a3747f038125935624a13df108e30fe1cb8f9660a7f54ac6d4765ce9"' + Expires: + - Wed, 27 Sep 2023 21:27:13 GMT + Source-Age: + - '78' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - ea03ef6856fa8082c4d7aaaf1a17b35759aab72e + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 146A:2756:778FB:90182:65149AAF + X-Served-By: + - cache-lga21939-LGA + X-Timer: + - S1695849733.300250,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example114].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example114].yaml index 1843e205b..9332fbdfa 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example114].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example114].yaml @@ -100,7 +100,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '580' Cache-Control: - max-age=600 Connection: @@ -110,11 +110,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:43 GMT + - Wed, 27 Sep 2023 21:22:13 GMT ETag: - - '"647f85f4-17f9"' + - '"65147dc1-17f9"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -122,19 +122,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 849879ff73bb79fdd4c6bf933141d39f65b6ef0f + - 3212d294a61e7b62d05669a77dc4196fc5df8bd8 X-GitHub-Request-Id: - - 86A6:37DC:C95048:114A10B:650DE7A1 + - 4392:29B7:2066E2:2E9564:65149AC0 X-Served-By: - - cache-den8224-DEN + - cache-lga21980-LGA X-Timer: - - S1695410083.969257,VS0,VE58 + - S1695849733.428857,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:43 GMT + - Wed, 27 Sep 2023 21:22:33 GMT + x-origin-cache: + - HIT x-proxy-cache: - MISS status: @@ -167,7 +169,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '580' Cache-Control: - max-age=600 Connection: @@ -177,11 +179,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:43 GMT + - Wed, 27 Sep 2023 21:22:13 GMT ETag: - - '"647f85f4-21a"' + - '"65147dc1-21a"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -189,21 +191,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 0e05dc7eca6a51ae2b7fd88db1e1f5a2efc27af6 + - f5841ebb6333b4f144d61eb8b07ef80db74c3c4a X-GitHub-Request-Id: - - 5808:466F:C16E8C:10CB7F5:650DE7A3 + - F8B8:474B:248BD5:331E10:65149AC0 X-Served-By: - - cache-den8248-DEN + - cache-lga21935-LGA X-Timer: - - S1695410083.134181,VS0,VE60 + - S1695849734.552165,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:24:43 GMT - x-origin-cache: - - HIT + - Wed, 27 Sep 2023 21:22:33 GMT x-proxy-cache: - MISS status: @@ -247,7 +247,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '580' Cache-Control: - max-age=600 Connection: @@ -257,11 +257,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:43 GMT + - Wed, 27 Sep 2023 21:22:13 GMT ETag: - - '"647f85f4-51b"' + - '"65147dc1-51b"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -269,19 +269,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - f3a2478d297def8f56988841c0c28a8ccbc69365 + - 43dd86a772902713f298c60585a43ec8809c98dd X-GitHub-Request-Id: - - 0EA2:56FF:CBA192:116F246:650DE7A3 + - FBAE:602C:35612F:4568D0:65149AC1 X-Served-By: - - cache-den8235-DEN + - cache-lga21977-LGA X-Timer: - - S1695410083.314834,VS0,VE73 + - S1695849734.649952,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:24:43 GMT + - Wed, 27 Sep 2023 21:22:33 GMT x-proxy-cache: - MISS status: @@ -316,7 +316,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '580' Cache-Control: - max-age=600 Connection: @@ -326,11 +326,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:43 GMT + - Wed, 27 Sep 2023 21:22:13 GMT ETag: - - '"647f85f4-2a0"' + - '"65147dc1-2a0"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -338,21 +338,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 161c826bf6d8d9fbfa8335146bc9c81932e1b0b0 + - 0c0384db64a28ab39041a7f3b566f6d9093ab44d X-GitHub-Request-Id: - - C748:1052:7E76B9:AE64E5:650DE7A3 + - CEA2:1134:33BDA9:43D1EE:65149AC0 X-Served-By: - - cache-den8229-DEN + - cache-lga21926-LGA X-Timer: - - S1695410084.505848,VS0,VE57 + - S1695849734.768884,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:43 GMT - x-origin-cache: - - HIT + - Wed, 27 Sep 2023 21:22:33 GMT x-proxy-cache: - MISS status: @@ -382,7 +380,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '580' Cache-Control: - max-age=600 Connection: @@ -392,11 +390,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:43 GMT + - Wed, 27 Sep 2023 21:22:13 GMT ETag: - - '"647f85f4-133"' + - '"65147dc1-133"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -404,19 +402,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 78545d56ac4d5baa68032a08fea7d81cfeaacb8b + - 8455817a95ec5426765fe298858e529335a8aaa5 X-GitHub-Request-Id: - - CAEA:757F:C1C1FA:10D15A9:650DE7A3 + - D9AA:4783:24410F:32EE24:65149AC1 X-Served-By: - - cache-den8240-DEN + - cache-lga21929-LGA X-Timer: - - S1695410084.678558,VS0,VE57 + - S1695849734.880468,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:43 GMT + - Wed, 27 Sep 2023 21:22:33 GMT x-origin-cache: - HIT x-proxy-cache: @@ -459,7 +457,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '580' Cache-Control: - max-age=600 Connection: @@ -469,11 +467,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:43 GMT + - Wed, 27 Sep 2023 21:22:14 GMT ETag: - - '"647f85f4-458"' + - '"65147dc1-458"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -481,21 +479,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - a0d045e9c64c81fa4f9a028de67b8861204bcdde + - a92524dfe81d2b81a3066102907ca84ada6cbfda X-GitHub-Request-Id: - - EF52:01C1:C6F21C:112473D:650DE7A3 + - 4392:29B7:206719:2E95B0:65149AC1 X-Served-By: - - cache-den8251-DEN + - cache-lga21974-LGA X-Timer: - - S1695410084.856997,VS0,VE64 + - S1695849734.011403,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:43 GMT - x-origin-cache: - - HIT + - Wed, 27 Sep 2023 21:22:33 GMT x-proxy-cache: - MISS status: @@ -575,7 +571,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '580' Cache-Control: - max-age=600 Connection: @@ -585,11 +581,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:44 GMT + - Wed, 27 Sep 2023 21:22:14 GMT ETag: - - '"647f85f4-1039"' + - '"65147dc1-1039"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -597,19 +593,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - d262d12ec757eb992bdf4733722c86caa069c1ec + - a719447244ace01122dee93bd191d425cb1f3ede X-GitHub-Request-Id: - - 1A6C:757F:C1C23C:10D15F8:650DE7A4 + - 0874:278D:22BCEF:30FA4B:65149AC2 X-Served-By: - - cache-den8240-DEN + - cache-lga21920-LGA X-Timer: - - S1695410084.479069,VS0,VE56 + - S1695849734.179552,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:24:44 GMT + - Wed, 27 Sep 2023 21:22:34 GMT x-origin-cache: - HIT x-proxy-cache: @@ -698,7 +694,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '580' Cache-Control: - max-age=600 Connection: @@ -708,11 +704,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:44 GMT + - Wed, 27 Sep 2023 21:22:14 GMT ETag: - - '"647f85f4-1247"' + - '"65147dc1-1247"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -720,19 +716,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 2cf9ef2325b9a1784bdb47bdfcfaafe587cc36b4 + - 61bc4d1b4a99b508ec81a6d69b9c74af49b43b24 X-GitHub-Request-Id: - - 2852:100F:9DAEF2:DDBF9F:650DE7A4 + - D9A6:64A7:2423E4:326802:65149AC2 X-Served-By: - - cache-den8277-DEN + - cache-lga21971-LGA X-Timer: - - S1695410085.637483,VS0,VE61 + - S1695849734.295677,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:44 GMT + - Wed, 27 Sep 2023 21:22:34 GMT x-origin-cache: - HIT x-proxy-cache: @@ -809,7 +805,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '580' Cache-Control: - max-age=600 Connection: @@ -819,11 +815,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:44 GMT + - Wed, 27 Sep 2023 21:22:14 GMT ETag: - - '"647f85f4-e6f"' + - '"65147dc1-e6f"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -831,19 +827,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - a940834784fd64e5f47f2ac9fc8d8794b4360400 + - ba49d2f2fdbeadf8bc4bc669486c95ca1ca08527 X-GitHub-Request-Id: - - 7E82:01C1:C6F26D:11247A0:650DE7A4 + - 5B50:724D:209DE5:2F06DF:65149AC2 X-Served-By: - - cache-den8227-DEN + - cache-lga21942-LGA X-Timer: - - S1695410085.814167,VS0,VE62 + - S1695849734.411603,VS0,VE3 expires: - - Fri, 22 Sep 2023 19:24:44 GMT + - Wed, 27 Sep 2023 21:22:34 GMT + x-origin-cache: + - HIT x-proxy-cache: - MISS status: @@ -916,7 +914,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '580' Cache-Control: - max-age=600 Connection: @@ -926,11 +924,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:45 GMT + - Wed, 27 Sep 2023 21:22:14 GMT ETag: - - '"647f85f4-def"' + - '"65147dc1-def"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -938,19 +936,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - b35e3706db63ae7e1d0f9eac202874287d521dab + - c1cb579edd520245fb43a0eda925dfb2fb850c74 X-GitHub-Request-Id: - - 641C:4E5A:C291D1:10DE431:650DE7A4 + - B620:28A7:1E4977:2CA998:65149AC2 X-Served-By: - - cache-den8264-DEN + - cache-lga21922-LGA X-Timer: - - S1695410085.981734,VS0,VE60 + - S1695849735.517252,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:24:45 GMT + - Wed, 27 Sep 2023 21:22:34 GMT x-origin-cache: - HIT x-proxy-cache: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example115].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example115].yaml index 109a50403..721fc4733 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example115].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example115].yaml @@ -102,7 +102,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '580' Cache-Control: - max-age=600 Connection: @@ -112,11 +112,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:45 GMT + - Wed, 27 Sep 2023 21:22:14 GMT ETag: - - '"647f85f4-1887"' + - '"65147dc1-1887"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -124,19 +124,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 900d59fe5212c0c5a5758dd9b5532ec4d2043830 + - 112092aa2c49bf92fc929ddcbbbcac9658fca275 X-GitHub-Request-Id: - - 96AC:9814:CBA6A2:116FAAB:650DE7A4 + - 0F90:10B4:142EB5:1D3F7A:65149AC2 X-Served-By: - - cache-den8251-DEN + - cache-lga21921-LGA X-Timer: - - S1695410085.153263,VS0,VE58 + - S1695849735.639432,VS0,VE22 expires: - - Fri, 22 Sep 2023 19:24:45 GMT + - Wed, 27 Sep 2023 21:22:35 GMT x-origin-cache: - HIT x-proxy-cache: @@ -171,7 +171,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '580' Cache-Control: - max-age=600 Connection: @@ -181,11 +181,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:45 GMT + - Wed, 27 Sep 2023 21:22:14 GMT ETag: - - '"647f85f4-21a"' + - '"65147dc1-21a"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -193,19 +193,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 0afe9003ace10ab7533f964d7d88f7e9189bead7 + - 8fbb164955a51225fd7c8458fa22cb51ec5a4519 X-GitHub-Request-Id: - - 1BA8:466F:C16F3E:10CB8E0:650DE7A4 + - 97A8:1156:1B4DED:280162:65149AC3 X-Served-By: - - cache-den8278-DEN + - cache-lga21971-LGA X-Timer: - - S1695410085.337527,VS0,VE63 + - S1695849735.827851,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:45 GMT + - Wed, 27 Sep 2023 21:22:35 GMT + x-origin-cache: + - HIT x-proxy-cache: - MISS status: @@ -249,7 +251,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '580' Cache-Control: - max-age=600 Connection: @@ -259,11 +261,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:45 GMT + - Wed, 27 Sep 2023 21:22:14 GMT ETag: - - '"647f85f4-51b"' + - '"65147dc1-51b"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -271,19 +273,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - d260ba2a99a61d5a450075e7a25aadcd653447ef + - ba7d70afe024039c319fdd769fd644398d91ff19 X-GitHub-Request-Id: - - 8584:75B7:CF33FC:1186EE2:650DE7A4 + - C9CA:3891:21EED6:30272C:65149AC3 X-Served-By: - - cache-den8275-DEN + - cache-lga21979-LGA X-Timer: - - S1695410086.514044,VS0,VE58 + - S1695849735.933793,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:24:45 GMT + - Wed, 27 Sep 2023 21:22:35 GMT x-origin-cache: - HIT x-proxy-cache: @@ -320,7 +322,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '580' Cache-Control: - max-age=600 Connection: @@ -330,11 +332,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:45 GMT + - Wed, 27 Sep 2023 21:22:15 GMT ETag: - - '"647f85f4-2bd"' + - '"65147dc1-2bd"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -342,21 +344,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 8329d374eea5d2945d292ad7851c1b81d4f4ceb2 + - c56a0270db3017be19954c8e9df89976b183c936 X-GitHub-Request-Id: - - 8EAE:7855:C42E0E:10F80DD:650DE7A5 + - 94C6:29B7:20679C:2E9665:65149AC3 X-Served-By: - - cache-den8232-DEN + - cache-lga21935-LGA X-Timer: - - S1695410086.692890,VS0,VE61 + - S1695849735.076853,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:45 GMT - x-origin-cache: - - HIT + - Wed, 27 Sep 2023 21:22:35 GMT x-proxy-cache: - MISS status: @@ -386,7 +386,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '579' Cache-Control: - max-age=600 Connection: @@ -396,11 +396,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:45 GMT + - Wed, 27 Sep 2023 21:22:15 GMT ETag: - - '"647f85f4-133"' + - '"65147dc1-133"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -408,19 +408,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 5473d3cf2f40f21cb241f14426ec26fec346f10c + - f417b9813db074fcca289977e02497718c4c12f7 X-GitHub-Request-Id: - - 8980:33E5:BF7E79:10ACD44:650DE7A5 + - 3796:7B4C:2A5FA9:3A5BE3:65149AC3 X-Served-By: - - cache-den8225-DEN + - cache-lga21964-LGA X-Timer: - - S1695410086.870438,VS0,VE62 + - S1695849735.178715,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:24:45 GMT + - Wed, 27 Sep 2023 21:22:35 GMT x-proxy-cache: - MISS status: @@ -461,7 +461,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '579' Cache-Control: - max-age=600 Connection: @@ -471,11 +471,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:46 GMT + - Wed, 27 Sep 2023 21:22:15 GMT ETag: - - '"647f85f4-474"' + - '"65147dc1-474"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -483,19 +483,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 42dae43471769c244a33b971abfb6fa44dfae46f + - 9d99de998262a0ba5b3f77e066c12162e0c10d1f X-GitHub-Request-Id: - - 0A48:11FF:CC01C5:1175432:650DE7A5 + - 5424:56AD:23A542:3214AA:65149AC2 X-Served-By: - - cache-den8246-DEN + - cache-lga21978-LGA X-Timer: - - S1695410086.039417,VS0,VE60 + - S1695849735.272327,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:24:46 GMT + - Wed, 27 Sep 2023 21:22:35 GMT x-origin-cache: - HIT x-proxy-cache: @@ -503,6 +503,136 @@ interactions: status: code: 200 message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '0' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:15 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - a096dea629d53c700fd36777158380ff2fc1173e + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21931-LGA + X-Timer: + - S1695849735.429573,VS0,VE14 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK - request: body: null headers: @@ -583,7 +713,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '579' Cache-Control: - max-age=600 Connection: @@ -593,7 +723,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:46 GMT + - Wed, 27 Sep 2023 21:22:15 GMT ETag: - '"63e6651b-1226"' Last-Modified: @@ -607,19 +737,267 @@ interactions: Via: - 1.1 varnish X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 96687f5b5638d390bc3eae222967dc88f0c119fc + X-GitHub-Request-Id: + - DE96:7A72:FA1AA:1530DD:6514300F + X-Served-By: + - cache-lga21925-LGA + X-Timer: + - S1695849736.562777,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:20 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/scientific/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json#\",\n \"title\": + \"Scientific Citation Extension\",\n \"description\": \"Scientific Citation + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/require_any_field\"\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n {\n + \ \"$comment\": \"This validates the fields in Collection Assets, + but does not require them.\",\n \"required\": [\n \"assets\"\n + \ ],\n \"properties\": {\n \"assets\": {\n \"type\": + \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"sci:doi\"]},\n {\"required\": [\"sci:citation\"]},\n {\"required\": + [\"sci:publications\"]}\n ]\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n }, \n \"sci:citation\": + {\n \"type\": \"string\", \n \"title\": \"Proposed Data + Citation\"\n },\n \"sci:publications\": {\n \"type\": + \"array\",\n \"title\": \"Publications\",\n \"items\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n + \ }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n },\n \"patternProperties\": + {\n \"^(?!sci:)\": {}\n },\n \"additionalProperties\": false\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '0' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5626' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:15 GMT + ETag: + - '"60febab7-15fa"' + Last-Modified: + - Mon, 26 Jul 2021 13:37:59 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - c51b3bbf3bd6542aa61242ce48e28c08d4c41f5a + X-GitHub-Request-Id: + - 13A2:20A2:6B2A6D:96E7BB:65148554 + X-Served-By: + - cache-lga21934-LGA + X-Timer: + - S1695849736.674786,VS0,VE13 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: - '0' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:15 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' X-Fastly-Request-ID: - - 268949586f7b0fdc12d4cbe395bf8eb871c1e350 + - 28d1c5eeb2c7bd8d08aada113b1567fd9172b5b6 X-GitHub-Request-Id: - - 5C08:466F:C16FB1:10CB978:650DE7A6 + - AA28:096C:44DFB1:66DC9F:65143010 X-Served-By: - - cache-den8256-DEN + - cache-lga21921-LGA X-Timer: - - S1695410087.722732,VS0,VE64 + - S1695849736.783226,VS0,VE15 expires: - - Fri, 22 Sep 2023 19:24:46 GMT + - Wed, 27 Sep 2023 13:47:21 GMT permissions-policy: - interest-cohort=() x-proxy-cache: @@ -700,7 +1078,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '579' Cache-Control: - max-age=600 Connection: @@ -710,7 +1088,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:46 GMT + - Wed, 27 Sep 2023 21:22:15 GMT ETag: - '"6046b731-f97"' Last-Modified: @@ -724,19 +1102,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 5212ab6a1a162cb80e3bb11d79a6c0c86524ac84 + - 68b66d5441a9df239f0a9f5d93ec4756b74c5ee9 X-GitHub-Request-Id: - - AB12:09FD:C94401:1149441:650DE7A6 + - D91C:0FD7:49889:76EA2:65148554 X-Served-By: - - cache-den8250-DEN + - cache-lga21937-LGA X-Timer: - - S1695410087.884048,VS0,VE61 + - S1695849736.920083,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:46 GMT + - Wed, 27 Sep 2023 19:51:08 GMT permissions-policy: - interest-cohort=() x-proxy-cache: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example117].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example117].yaml new file mode 100644 index 000000000..2d4c4706b --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example117].yaml @@ -0,0 +1,366 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '1' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:16 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - ff4df849816153edb7ae270c06e56119d430cc48 + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21921-LGA + X-Timer: + - S1695849736.091797,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.0.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the + schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for item properties.\",\n \"required\": + [\n \"proj:epsg\"\n ]\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"proj:epsg\":{\n + \ \"title\":\"EPSG code\",\n \"type\":[\n \"integer\",\n + \ \"null\"\n ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.2/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '580' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4646' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:16 GMT + ETag: + - '"63e6651b-1226"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - f8d1b621eb22b11965d3e97916c550da3f813f0c + X-GitHub-Request-Id: + - DE96:7A72:FA1AA:1530DD:6514300F + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849736.191286,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:20 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '1' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:16 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 2bc31d89736af276a8d659666570df08aa4775e8 + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21924-LGA + X-Timer: + - S1695849736.306726,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example118].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example118].yaml new file mode 100644 index 000000000..211170363 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example118].yaml @@ -0,0 +1,242 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '1' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:16 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - c579628bc42a22ee374b153b95bab12634411b23 + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21969-LGA + X-Timer: + - S1695849736.453342,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '1' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:16 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 3398e36e0d57a2cc5f1a443108eec49de2b3ade1 + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21932-LGA + X-Timer: + - S1695849737.564684,VS0,VE5 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example119].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example119].yaml new file mode 100644 index 000000000..d9ff66eec --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example119].yaml @@ -0,0 +1,242 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '1' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:16 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 5e99629dc7ff1da135f1a82225e23a0ecec85760 + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21926-LGA + X-Timer: + - S1695849737.693512,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '1' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:16 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - d3398ac63d268ece73be8998f376c69053f81d6e + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21930-LGA + X-Timer: + - S1695849737.824033,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example11].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example11].yaml index ced52400c..0b951fc95 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example11].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example11].yaml @@ -1,4 +1,151 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"core\": {\n + \ \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"stac_version\",\n \"id\",\n \"links\",\n + \ \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"cube\",\n \"datetime-range\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"sar\",\n \"scientific\"\n ]\n + \ }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n + \ },\n \"additionalProperties\": false\n },\n + \ \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"title\": \"Date and + Time\",\n \"description\": \"The searchable date/time of + the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n + \ \"title\": {\n \"title\": \"Item Title\",\n + \ \"description\": \"A human-readable title describing the + item.\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Item Licenses\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Organization + name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": + \"Organization roles\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n + \ ]\n }\n },\n + \ \"url\": {\n \"title\": \"Homepage\",\n + \ \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n + \ },\n \"created\": {\n \"title\": + \"Metadata created at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": + \"Metadata updated at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"type\": {\n + \ \"title\": \"Asset type\",\n \"type\": \"string\"\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '6074' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:20:58 GMT + ETag: + - '"4e24763d74f0d463b0cb6c63fc099e0b59447c7a049b93ffda4c6eb9eb54ae95"' + Expires: + - Wed, 27 Sep 2023 21:25:58 GMT + Source-Age: + - '2' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - db78d38da0cb61d1bf7ddd4fd9ecab0e0ad99a86 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 2630:09BA:1F7C:2D49:65149AB0 + X-Served-By: + - cache-lga21941-LGA + X-Timer: + - S1695849658.319293,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: body: null headers: @@ -76,11 +223,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:26 GMT + - Wed, 27 Sep 2023 21:20:58 GMT ETag: - '"46c09f290da4303780880924f1569b2cb0b979a2d363a4446e2b8b7cc494844b"' Expires: - - Fri, 22 Sep 2023 19:19:26 GMT + - Wed, 27 Sep 2023 21:25:58 GMT Source-Age: - '0' Strict-Transport-Security: @@ -90,21 +237,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 1b608683274a563c06e3aaf38da17bbef2c7e2db + - 5fa57a0aa4f74fbc1eed51849484eb62776c108e X-Frame-Options: - deny X-GitHub-Request-Id: - - C708:7720:369C16:4177DD:650DE790 + - 9C40:3F12:7305B:8B919:65149AAF X-Served-By: - - cache-den8224-DEN + - cache-lga21971-LGA X-Timer: - - S1695410066.954892,VS0,VE120 + - S1695849658.440954,VS0,VE68 X-XSS-Protection: - 1; mode=block status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example121].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example121].yaml index 31b6adb24..02ae70710 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example121].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example121].yaml @@ -1,4 +1,472 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '2' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:16 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - d60b82687a3b0e111d94728b73d64c4edd8bf35a + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21980-LGA + X-Timer: + - S1695849737.984849,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/sat/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n \"title\": + \"Satellite Extension\",\n \"description\": \"STAC Sat Extension to a STAC + Item.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the schema + for STAC Items.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"sat:platform_international_designator\"\n + \ ]\n },\n {\n \"required\": + [\n \"sat:orbit_state\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:absolute_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:relative_orbit\"\n ]\n + \ },\n {\n \"required\": + [\n \"sat:anx_datetime\"\n ]\n + \ }\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"sat:platform_international_designator\": + {\n \"type\": \"string\"\n },\n \"sat:orbit_state\": + {\n \"title\": \"Orbit State\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"ascending\",\n \"descending\",\n + \ \"geostationary\"\n ]\n },\n \"sat:absolute_orbit\": + {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n + \ \"sat:relative_orbit\": {\n \"type\": \"integer\",\n \"minimum\": + 1\n },\n \"sat:anx_datetime\": {\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n },\n \"patternProperties\": + {\n \"^(?!sat:)\": {\n \"$comment\": \"Do not allow unspecified + fields prefixed with sat:\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '0' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3714' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:17 GMT + ETag: + - '"60414dd7-e82"' + Last-Modified: + - Thu, 04 Mar 2021 21:15:03 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - d6f3de38051f7ba614b797301eaf3b07ca450f9d + X-GitHub-Request-Id: + - 641A:3987:3006D4:3FE2D6:65149AAA + X-Served-By: + - cache-lga21960-LGA + X-Timer: + - S1695849737.101387,VS0,VE14 + expires: + - Wed, 27 Sep 2023 21:22:11 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.0.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the + schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for item properties.\",\n \"required\": + [\n \"proj:epsg\"\n ]\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"proj:epsg\":{\n + \ \"title\":\"EPSG code\",\n \"type\":[\n \"integer\",\n + \ \"null\"\n ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.2/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '581' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4646' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:17 GMT + ETag: + - '"63e6651b-1226"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - d474341c89399082879b081381c237d39f113540 + X-GitHub-Request-Id: + - DE96:7A72:FA1AA:1530DD:6514300F + X-Served-By: + - cache-lga21931-LGA + X-Timer: + - S1695849737.234153,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:20 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/mgrs/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/mgrs/v1.0.0/schema.json#\",\n \"title\": + \"MGRS Extension\",\n \"description\": \"STAC MGRS Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"allOf\": + [\n {\n \"$comment\": \"Require fields here + for item properties.\",\n \"required\": [\n \"mgrs:latitude_band\",\n + \ \"mgrs:grid_square\"\n ]\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/mgrs/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"mgrs:latitude_band\": + {\n \"type\": \"string\"\n },\n \"mgrs:grid_square\": + {\n \"type\": \"string\"\n },\n \"mgrs:utm_zone\": + {\n \"type\": \"integer\"\n }\n },\n \"patternProperties\": + {\n \"^(?!mgrs:)\": {\n \"$comment\": \"Do not allow other + fields with this prefix\"\n }\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '0' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2889' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:17 GMT + ETag: + - '"60c20ce1-b49"' + Last-Modified: + - Thu, 10 Jun 2021 13:00:17 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - cdb6aa05ee676ca10d514ef5429f8c8e760e74fa + X-GitHub-Request-Id: + - 7960:22B5:28EFF5:38AE77:65149AA8 + X-Served-By: + - cache-lga21952-LGA + X-Timer: + - S1695849737.353411,VS0,VE13 + expires: + - Wed, 27 Sep 2023 21:22:09 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK - request: body: null headers: @@ -41,7 +509,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '581' Cache-Control: - max-age=600 Connection: @@ -51,7 +519,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:47 GMT + - Wed, 27 Sep 2023 21:22:17 GMT ETag: - '"638a24f0-6d5"' Last-Modified: @@ -65,19 +533,129 @@ interactions: Via: - 1.1 varnish X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - a2e1d74c6ede60e3da8ddd876ad4972a6d21db9e + X-GitHub-Request-Id: + - DE0A:1DC2:203BDB:2EE31F:65149AC4 + X-Served-By: + - cache-lga21920-LGA + X-Timer: + - S1695849737.492433,VS0,VE3 + expires: + - Wed, 27 Sep 2023 21:22:36 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '2' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:17 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT X-Cache-Hits: - - '0' + - '2' X-Fastly-Request-ID: - - 1954c2b16749f0d5b456d87b7bf2634393306564 + - aab13e69c02d9edee800155eed43d0c96e515852 X-GitHub-Request-Id: - - FA00:9814:CBA780:116FBBC:650DE7A6 + - AA28:096C:44DFB1:66DC9F:65143010 X-Served-By: - - cache-den8267-DEN + - cache-lga21924-LGA X-Timer: - - S1695410087.182460,VS0,VE60 + - S1695849738.608983,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:24:47 GMT + - Wed, 27 Sep 2023 13:47:21 GMT permissions-policy: - interest-cohort=() x-proxy-cache: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example122].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example122].yaml new file mode 100644 index 000000000..1f5cdaab1 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example122].yaml @@ -0,0 +1,621 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '2' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:17 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 2ae17e871002657859a0b59ffb43fdf883a4475f + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849738.743274,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.0.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the + schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for item properties.\",\n \"required\": + [\n \"proj:epsg\"\n ]\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"proj:epsg\":{\n + \ \"title\":\"EPSG code\",\n \"type\":[\n \"integer\",\n + \ \"null\"\n ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.2/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '582' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4646' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:17 GMT + ETag: + - '"63e6651b-1226"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 1540c09a60697e54a514b26cbdd93d327911931a + X-GitHub-Request-Id: + - DE96:7A72:FA1AA:1530DD:6514300F + X-Served-By: + - cache-lga21931-LGA + X-Timer: + - S1695849738.859440,VS0,VE0 + expires: + - Wed, 27 Sep 2023 13:47:20 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/scientific/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json#\",\n \"title\": + \"Scientific Citation Extension\",\n \"description\": \"Scientific Citation + Extension for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n + \ \"$comment\": \"This is the schema for STAC Items. Remove this object + if this extension only applies to Collections.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"type\": \"object\",\n \"required\": [\n \"type\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Feature\"\n },\n + \ \"properties\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"$comment\": \"This validates the fields in Item Assets, + but does not require them.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n }\n ]\n },\n {\n \"$comment\": \"This + is the schema for STAC Collections.\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n }\n }\n },\n {\n \"$ref\": + \"#/definitions/stac_extensions\"\n }\n ],\n \"anyOf\": [\n + \ {\n \"$comment\": \"This is the schema for the top-level + fields in a Collection. Remove this if this extension does not define top-level + fields for Collections.\",\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/require_any_field\"\n },\n {\n \"$ref\": + \"#/definitions/fields\"\n }\n ]\n },\n {\n + \ \"$comment\": \"This validates the fields in Collection Assets, + but does not require them.\",\n \"required\": [\n \"assets\"\n + \ ],\n \"properties\": {\n \"assets\": {\n \"type\": + \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Item Asset Definitions. It doesn't + require any fields.\",\n \"required\": [\n \"item_assets\"\n + \ ],\n \"properties\": {\n \"item_assets\": {\n + \ \"type\": \"object\",\n \"not\": {\n \"additionalProperties\": + {\n \"not\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"#/definitions/require_any_field\"\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n }\n }\n + \ }\n }\n }\n },\n {\n \"$comment\": + \"This is the schema for the fields in Summaries. By default, only checks + the existance of the properties, but not the schema of the summaries.\",\n + \ \"required\": [\n \"summaries\"\n ],\n \"properties\": + {\n \"summaries\": {\n \"$ref\": \"#/definitions/require_any_field\"\n + \ }\n }\n }\n ]\n }\n ],\n \"definitions\": + {\n \"stac_extensions\": {\n \"type\": \"object\",\n \"required\": + [\n \"stac_extensions\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/scientific/v1.0.0/schema.json\"\n }\n + \ }\n }\n },\n \"require_any_field\": {\n \"$comment\": + \"Please list all fields here so that we can force the existance of one of + them in other parts of the schemas.\",\n \"anyOf\": [\n {\"required\": + [\"sci:doi\"]},\n {\"required\": [\"sci:citation\"]},\n {\"required\": + [\"sci:publications\"]}\n ]\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n }, \n \"sci:citation\": + {\n \"type\": \"string\", \n \"title\": \"Proposed Data + Citation\"\n },\n \"sci:publications\": {\n \"type\": + \"array\",\n \"title\": \"Publications\",\n \"items\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^10\\\\.[0-9a-zA-Z]{4,}/[^\\\\s]+$\"\n + \ }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n },\n \"patternProperties\": + {\n \"^(?!sci:)\": {}\n },\n \"additionalProperties\": false\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '2' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5626' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:17 GMT + ETag: + - '"60febab7-15fa"' + Last-Modified: + - Mon, 26 Jul 2021 13:37:59 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - c190b5cb930f83eec5b83da7979cd63831a99db0 + X-GitHub-Request-Id: + - 13A2:20A2:6B2A6D:96E7BB:65148554 + X-Served-By: + - cache-lga21925-LGA + X-Timer: + - S1695849738.969873,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/view/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json#\",\n \"title\": + \"View Geometry Extension\",\n \"description\": \"STAC View Geometry Extension + for STAC Items and STAC Collections.\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"anyOf\": + [\n {\"required\": [\"view:off_nadir\"]},\n {\"required\": + [\"view:incidence_angle\"]},\n {\"required\": [\"view:azimuth\"]},\n + \ {\"required\": [\"view:sun_azimuth\"]},\n {\"required\": + [\"view:sun_elevation\"]}\n ]\n },\n {\n + \ \"$ref\": \"#/definitions/fields\"\n }\n + \ ]\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n }\n + \ ]\n },\n {\n \"$comment\": \"This is the schema for STAC + Collections.\",\n \"allOf\": [\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"type\"\n ],\n \"properties\": + {\n \"type\": {\n \"const\": \"Collection\"\n },\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n },\n + \ \"item_assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"contains\": {\n \"const\": + \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n }\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_azimuth\": + {\n \"title\": \"Sun Azimuth\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n \"view:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": -90,\n \"maximum\": 90\n }\n },\n + \ \"patternProperties\": {\n \"^(?!view:)\": {}\n },\n \"additionalProperties\": + false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '2' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3583' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:18 GMT + ETag: + - '"60635220-dff"' + Last-Modified: + - Tue, 30 Mar 2021 16:30:24 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 43e900a30d5d0f708b5470a254a8b363ad6324ff + X-GitHub-Request-Id: + - AA28:096C:44DFB1:66DC9F:65143010 + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849738.078350,VS0,VE1 + expires: + - Wed, 27 Sep 2023 13:47:21 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/remote-data/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/remote-data/v1.0.0/schema.json\",\n \"title\": + \"Remote Data (Example) Extension\",\n \"description\": \"STAC Example Extension + for fictional vendor Remote Data\",\n \"oneOf\": [\n {\n \"$comment\": + \"This is the schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"$comment\": + \"Required fields here for item properties.\",\n \"required\": + [\n \"rd:type\",\n \"rd:product_level\",\n + \ \"rd:sat_id\"\n ]\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"rd:visibility\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$comment\": \"Remove this + and the following object if this is not an extension to a Collection.\",\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"$ref\": \"#/definitions/collection_fields\"\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"stac_extensions\": {\n \"type\": + \"object\",\n \"required\": [\n \"stac_extensions\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/remote-data/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"collection_fields\": {\n \"properties\": + {\n \"rd:visibility\": {\n \"type\": \"string\",\n \"enum\": + [\n \"public\",\n \"protected\",\n \"private\"\n + \ ]\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Remote Data fictional fields.\",\n \"type\": \"object\",\n \"properties\": + {\n \"rd:type\": {\n \"type\": \"string\",\n \"enum\": + [\n \"scene\"\n ]\n },\n \"rd:product_level\": + {\n \"type\": \"string\",\n \"enum\": [\n \"LV1A\",\n + \ \"LV1B\",\n \"LV2A\",\n \"LV2B\",\n \"LV3A\",\n + \ \"LV3B\"\n ]\n }, \n \"rd:runs\": {\n \"type\": + \"array\", \n \"items\": {\n \"type\": \"string\"\n }\n + \ },\n \"rd:parsecs\": {\n \"type\": \"array\", \n \"items\": + {\n \"type\": \"number\"\n }\n },\n \"rd:anomalous_pixels\": + {\n \"type\": \"number\"\n },\n \"rd:sat_id\": {\n + \ \"type\": \"string\"\n },\n \"rd:earth_sun_distance\": + {\n \"type\": \"number\"\n },\n \"rd:flux_capacitor\": + {\n \"type\": \"boolean\"\n }\n },\n \"patternProperties\": + {\n \"^(?!rd:)\": {\n \"$comment\": \"Disallow other fields + with rd: prefix\"\n }\n },\n \"additionalProperties\": false\n + \ }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '582' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '3991' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:18 GMT + ETag: + - '"6046b731-f97"' + Last-Modified: + - Mon, 08 Mar 2021 23:45:53 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 98e49ebc61b5bf36391cba82691a234719aaafa2 + X-GitHub-Request-Id: + - D91C:0FD7:49889:76EA2:65148554 + X-Served-By: + - cache-lga21922-LGA + X-Timer: + - S1695849738.219725,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:08 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example124].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example124].yaml new file mode 100644 index 000000000..650e83ef0 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example124].yaml @@ -0,0 +1,836 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/eo/v1.1.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/eo/v1.1.0/schema.json#\",\n \"title\": + \"EO Extension\",\n \"description\": \"STAC EO Extension for STAC Items.\",\n + \ \"oneOf\": [\n {\n \"$comment\": \"This is the schema for STAC Items.\",\n + \ \"allOf\": [\n {\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"properties\",\n \"assets\"\n + \ ],\n \"properties\": {\n \"type\": {\n \"const\": + \"Feature\"\n },\n \"properties\": {\n \"$ref\": + \"#/definitions/fields\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n }\n },\n \"$comment\": + \"The if-then-else below checks whether the eo:bands is given in assets or + not. If yes, allows eo:bands in properties (else), otherwise, disallows eo:bands + in properties (then).\",\n \"if\": {\n \"required\": [\n + \ \"assets\"\n ],\n \"properties\": {\n + \ \"assets\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"properties\": {\n \"eo:bands\": + false\n }\n }\n }\n }\n + \ },\n \"then\": {\n \"properties\": {\n \"properties\": + {\n \"properties\": {\n \"eo:bands\": false\n + \ }\n }\n }\n },\n \"else\": + {\n \"properties\": {\n \"properties\": {\n \"properties\": + {\n \"eo:bands\": {\n \"$ref\": \"#/definitions/bands\"\n + \ }\n }\n }\n }\n }\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:snow_cover\": {\n + \ \"title\": \"Snow and Ice Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n },\n \"eo:bands\": + {\n \"$ref\": \"#/definitions/bands\"\n }\n },\n \"patternProperties\": + {\n \"^(?!eo:)\": {}\n },\n \"additionalProperties\": false\n + \ },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"title\": \"Band\",\n + \ \"type\": \"object\",\n \"minProperties\": 1,\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\",\n \"enum\": + [\n \"coastal\",\n \"blue\",\n \"green\",\n + \ \"red\",\n \"rededge\",\n \"yellow\",\n + \ \"pan\",\n \"nir\",\n \"nir08\",\n + \ \"nir09\",\n \"cirrus\",\n \"swir16\",\n + \ \"swir22\",\n \"lwir\",\n \"lwir11\",\n + \ \"lwir12\"\n ]\n },\n \"description\": + {\n \"title\": \"Description of the band\",\n \"type\": + \"string\",\n \"minLength\": 1\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": \"number\",\n + \ \"minimumExclusive\": 0\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\",\n \"minimumExclusive\": 0\n },\n \"solar_illumination\": + {\n \"title\": \"Solar Illumination\",\n \"type\": \"number\",\n + \ \"minimum\": 0\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '3' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5052' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:18 GMT + ETag: + - '"63e664c8-13bc"' + Last-Modified: + - Fri, 10 Feb 2023 15:37:44 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 36f2ff0186e367854ae0f7c0768b6057d965fcb7 + X-GitHub-Request-Id: + - 784C:6B89:1EE369:2AD4C5:65148553 + X-Served-By: + - cache-lga21972-LGA + X-Timer: + - S1695849738.436540,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:07 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - stac-extensions.github.io + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://stac-extensions.github.io/projection/v1.0.0/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://stac-extensions.github.io/projection/v1.0.0/schema.json\",\n \"title\": + \"Projection Extension\",\n \"description\": \"STAC Projection Extension + for STAC Items.\",\n \"oneOf\": [\n {\n \"$comment\": \"This is the + schema for STAC Items.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"type\": + {\n \"const\": \"Feature\"\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"$comment\": + \"Require fields here for item properties.\",\n \"required\": + [\n \"proj:epsg\"\n ]\n },\n + \ {\n \"$ref\": \"#/definitions/fields\"\n + \ }\n ]\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n },\n {\n \"$comment\": \"This is the schema + for STAC Collections.\",\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"type\"\n ],\n + \ \"properties\": {\n \"type\": {\n \"const\": + \"Collection\"\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/fields\"\n }\n },\n \"item_assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/fields\"\n }\n }\n + \ }\n },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"const\": \"https://stac-extensions.github.io/projection/v1.0.0/schema.json\"\n + \ }\n }\n }\n },\n \"fields\": {\n \"$comment\": + \"Add your new fields here. Don't require them here, do that above in the + item schema.\",\n \"type\": \"object\",\n \"properties\": {\n \"proj:epsg\":{\n + \ \"title\":\"EPSG code\",\n \"type\":[\n \"integer\",\n + \ \"null\"\n ]\n },\n \"proj:wkt2\":{\n \"title\":\"Coordinate + Reference System in WKT2 format\",\n \"type\":[\n \"string\",\n + \ \"null\"\n ]\n },\n \"proj:projjson\": + {\n \"title\":\"Coordinate Reference System in PROJJSON format\",\n + \ \"oneOf\": [\n {\n \"$ref\": \"https://proj.org/schemas/v0.2/projjson.schema.json\"\n + \ },\n {\n \"type\": \"null\"\n }\n + \ ]\n },\n \"proj:geometry\":{\n \"$ref\": + \"https://geojson.org/schema/Geometry.json\"\n },\n \"proj:bbox\":{\n + \ \"title\":\"Extent\",\n \"type\":\"array\",\n \"oneOf\": + [\n {\n \"minItems\":4,\n \"maxItems\":4\n + \ },\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n },\n \"proj:centroid\":{\n \"title\":\"Centroid\",\n + \ \"type\":\"object\",\n \"required\": [\n \"lat\",\n + \ \"lon\"\n ],\n \"properties\": {\n \"lat\": + {\n \"type\": \"number\",\n \"minimum\": -90,\n + \ \"maximum\": 90\n },\n \"lon\": {\n \"type\": + \"number\",\n \"minimum\": -180,\n \"maximum\": + 180\n }\n }\n },\n \"proj:shape\":{\n \"title\":\"Shape\",\n + \ \"type\":\"array\",\n \"minItems\":2,\n \"maxItems\":2,\n + \ \"items\":{\n \"type\":\"integer\"\n }\n },\n + \ \"proj:transform\":{\n \"title\":\"Transform\",\n \"type\":\"array\",\n + \ \"oneOf\": [\n {\n \"minItems\":6,\n \"maxItems\":6\n + \ },\n {\n \"minItems\":9,\n \"maxItems\":9\n + \ }\n ],\n \"items\":{\n \"type\":\"number\"\n + \ }\n }\n },\n \"patternProperties\": {\n \"^(?!proj:)\": + {}\n },\n \"additionalProperties\": false\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '582' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4646' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:18 GMT + ETag: + - '"63e6651b-1226"' + Last-Modified: + - Fri, 10 Feb 2023 15:39:07 GMT + Server: + - GitHub.com + Strict-Transport-Security: + - max-age=31556952 + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 990978f6e2444e4d1a07d414b5b5472f6625e115 + X-GitHub-Request-Id: + - DE96:7A72:FA1AA:1530DD:6514300F + X-Served-By: + - cache-lga21938-LGA + X-Timer: + - S1695849739.561910,VS0,VE2 + expires: + - Wed, 27 Sep 2023 13:47:20 GMT + permissions-policy: + - interest-cohort=() + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - proj.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://proj.org/schemas/v0.2/projjson.schema.json + response: + body: + string: '' + headers: + Age: + - '587' + CDN-Cache-Control: + - public + CF-Cache-Status: + - HIT + CF-Ray: + - 80d6cd22d8dd0f6d-EWR + Cache-Control: + - max-age=1200 + Connection: + - close + Content-Language: + - en + Content-Length: + - '0' + Content-Type: + - text/html; charset=utf-8 + Cross-Origin-Opener-Policy: + - same-origin + Date: + - Wed, 27 Sep 2023 21:22:18 GMT + Location: + - https://proj.org/en/9.3/schemas/v0.2/projjson.schema.json + Referrer-Policy: + - no-referrer-when-downgrade + Server: + - cloudflare + Vary: + - Accept-Language, Cookie, Accept-Encoding + X-Backend: + - web-i-038d4e8ae08886551 + X-Content-Type-Options: + - nosniff + X-RTD-Domain: + - proj.org + X-RTD-Project: + - osgeo-proj + X-RTD-Project-Method: + - custom_domain + X-RTD-Redirect: + - user + X-RTD-Version-Method: + - path + X-Served: + - Proxito-404 + alt-svc: + - h3=":443"; ma=86400 + status: + code: 302 + message: Found +- request: + body: null + headers: + Connection: + - close + Host: + - proj.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://proj.org/en/9.3/schemas/v0.2/projjson.schema.json + response: + body: + string: "{\n \"$id\": \"https://proj.org/schemas/v0.2/projjson.schema.json\",\n + \ \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"description\": + \"Schema for PROJJSON (v0.2.1)\",\n \"$comment\": \"This file exists both + in data/ and in schemas/vXXX/. Keep both in sync. And if changing the value + of $id, change PROJJSON_CURRENT_VERSION accordingly in io.cpp\",\n\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/crs\" },\n { \"$ref\": \"#/definitions/datum\" + },\n { \"$ref\": \"#/definitions/datum_ensemble\" },\n { \"$ref\": \"#/definitions/ellipsoid\" + },\n { \"$ref\": \"#/definitions/prime_meridian\" },\n { \"$ref\": \"#/definitions/single_operation\" + },\n { \"$ref\": \"#/definitions/concatenated_operation\" }\n ],\n\n \"definitions\": + {\n\n \"abridged_transformation\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"AbridgedTransformation\"] },\n \"name\": { + \"type\": \"string\" },\n \"method\": { \"$ref\": \"#/definitions/method\" + },\n \"parameters\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/parameter_value\" }\n },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"method\", \"parameters\" ],\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"axis\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"Axis\"] },\n \"name\": { \"type\": \"string\" },\n \"abbreviation\": + { \"type\": \"string\" },\n \"direction\": { \"type\": \"string\",\n + \ \"enum\": [ \"north\",\n \"northNorthEast\",\n + \ \"northEast\",\n \"eastNorthEast\",\n + \ \"east\",\n \"eastSouthEast\",\n + \ \"southEast\",\n \"southSouthEast\",\n + \ \"south\",\n \"southSouthWest\",\n + \ \"southWest\",\n \"westSouthWest\",\n + \ \"west\",\n \"westNorthWest\",\n + \ \"northWest\",\n \"northNorthWest\",\n + \ \"up\",\n \"down\",\n + \ \"geocentricX\",\n \"geocentricY\",\n + \ \"geocentricZ\",\n \"columnPositive\",\n + \ \"columnNegative\",\n \"rowPositive\",\n + \ \"rowNegative\",\n \"displayRight\",\n + \ \"displayLeft\",\n \"displayUp\",\n + \ \"displayDown\",\n \"forward\",\n + \ \"aft\",\n \"port\",\n + \ \"starboard\",\n \"clockwise\",\n + \ \"counterClockwise\",\n \"towards\",\n + \ \"awayFrom\",\n \"future\",\n + \ \"past\",\n \"unspecified\" + ] },\n \"unit\": { \"$ref\": \"#/definitions/unit\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"abbreviation\", \"direction\" + ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"bbox\": + {\n \"type\": \"object\",\n \"properties\": {\n \"east_longitude\": + { \"type\": \"number\" },\n \"west_longitude\": { \"type\": \"number\" + },\n \"south_latitude\": { \"type\": \"number\" },\n \"north_latitude\": + { \"type\": \"number\" }\n },\n \"required\" : [ \"east_longitude\", + \"west_longitude\",\n \"south_latitude\", \"north_latitude\" + ],\n \"additionalProperties\": false\n },\n\n \"bound_crs\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"BoundCRS\"] },\n \"source_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"target_crs\": { \"$ref\": \"#/definitions/crs\" },\n \"transformation\": + { \"$ref\": \"#/definitions/abridged_transformation\" }\n },\n \"required\" + : [ \"source_crs\", \"target_crs\", \"transformation\" ],\n \"additionalProperties\": + false\n },\n\n \"compound_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"CompoundCRS\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"components\": {\n + \ \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/crs\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"components\" ],\n \"additionalProperties\": false\n },\n\n \"concatenated_operation\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"ConcatenatedOperation\"] },\n \"name\": { \"type\": \"string\" },\n + \ \"source_crs\": { \"$ref\": \"#/definitions/crs\" },\n \"target_crs\": + { \"$ref\": \"#/definitions/crs\" },\n \"steps\": {\n \"type\": + \"array\",\n \"items\": { \"$ref\": \"#/definitions/single_operation\" + }\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"source_crs\", \"target_crs\", \"steps\" ],\n \"additionalProperties\": + false\n },\n\n \"conversion\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"Conversion\"] },\n \"name\": { \"type\": \"string\" + },\n \"method\": { \"$ref\": \"#/definitions/method\" },\n \"parameters\": + {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/parameter_value\" + }\n },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\", + \"method\" ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"coordinate_system\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"CoordinateSystem\"] },\n \"name\": { \"type\": \"string\" },\n \"subtype\": + { \"type\": \"string\",\n \"enum\": [\"Cartesian\",\n + \ \"spherical\",\n \"ellipsoidal\",\n + \ \"vertical\",\n \"ordinal\",\n + \ \"parametric\",\n \"TemporalDateTime\",\n + \ \"TemporalCount\",\n \"TemporalMeasure\"] + \ },\n \"axis\": {\n \"type\": \"array\",\n \"items\": + { \"$ref\": \"#/definitions/axis\" }\n },\n \"id\": { \"$ref\": + \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"subtype\", \"axis\" ],\n \"allOf\": + [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n + \ \"additionalProperties\": false\n },\n\n \"crs\": {\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/bound_crs\" },\n { \"$ref\": + \"#/definitions/compound_crs\" },\n { \"$ref\": \"#/definitions/derived_engineering_crs\" + },\n { \"$ref\": \"#/definitions/derived_geodetic_crs\" },\n { + \"$ref\": \"#/definitions/derived_parametric_crs\" },\n { \"$ref\": + \"#/definitions/derived_projected_crs\" },\n { \"$ref\": \"#/definitions/derived_temporal_crs\" + },\n { \"$ref\": \"#/definitions/derived_vertical_crs\" },\n { + \"$ref\": \"#/definitions/engineering_crs\" },\n { \"$ref\": \"#/definitions/geodetic_crs\" + },\n { \"$ref\": \"#/definitions/parametric_crs\" },\n { \"$ref\": + \"#/definitions/projected_crs\" },\n { \"$ref\": \"#/definitions/temporal_crs\" + },\n { \"$ref\": \"#/definitions/vertical_crs\" }\n ]\n },\n\n + \ \"datum\": {\n \"oneOf\": [\n { \"$ref\": \"#/definitions/geodetic_reference_frame\" + },\n { \"$ref\": \"#/definitions/vertical_reference_frame\" },\n { + \"$ref\": \"#/definitions/dynamic_geodetic_reference_frame\" },\n { + \"$ref\": \"#/definitions/dynamic_vertical_reference_frame\" },\n { + \"$ref\": \"#/definitions/temporal_datum\" },\n { \"$ref\": \"#/definitions/parametric_datum\" + },\n { \"$ref\": \"#/definitions/engineering_datum\" }\n ]\n },\n\n + \ \"datum_ensemble\": {\n \"type\": \"object\",\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"DatumEnsemble\"] },\n \"name\": { \"type\": + \"string\" },\n \"members\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": { \"type\": \"string\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": + \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\" ],\n \"allOf\": [\n { \"$ref\": + \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n }\n },\n \"ellipsoid\": { \"$ref\": \"#/definitions/ellipsoid\" + },\n \"accuracy\": { \"type\": \"string\" },\n \"id\": { \"$ref\": + \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"members\", \"accuracy\" ],\n + \ \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"derived_engineering_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\",\n + \ \"enum\": [\"DerivedEngineeringCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": \"#/definitions/engineering_crs\" + },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" },\n + \ \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"usages\": {},\n \"remarks\": {},\n + \ \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"base_crs\", \"conversion\", \"coordinate_system\" ],\n \"additionalProperties\": + false\n },\n\n \"derived_geodetic_crs\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\",\n \"enum\": + [\"DerivedGeodeticCRS\",\n \"DerivedGeographicCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/geodetic_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"usages\": {},\n \"remarks\": {},\n + \ \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"base_crs\", \"conversion\", \"coordinate_system\" ],\n \"additionalProperties\": + false\n },\n\n \"derived_parametric_crs\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\",\n \"enum\": + [\"DerivedParametricCRS\"] },\n \"name\": { \"type\": \"string\" },\n + \ \"base_crs\": { \"$ref\": \"#/definitions/parametric_crs\" },\n \"conversion\": + { \"$ref\": \"#/definitions/conversion\" },\n \"coordinate_system\": + { \"$ref\": \"#/definitions/coordinate_system\" },\n \"$schema\" : + {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"usages\": {},\n \"remarks\": {},\n \"id\": {}, \"ids\": + {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_projected_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedProjectedCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/projected_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"usages\": {},\n \"remarks\": {},\n + \ \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"base_crs\", \"conversion\", \"coordinate_system\" ],\n \"additionalProperties\": + false\n },\n\n \"derived_temporal_crs\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\",\n \"enum\": + [\"DerivedTemporalCRS\"] },\n \"name\": { \"type\": \"string\" },\n + \ \"base_crs\": { \"$ref\": \"#/definitions/temporal_crs\" },\n \"conversion\": + { \"$ref\": \"#/definitions/conversion\" },\n \"coordinate_system\": + { \"$ref\": \"#/definitions/coordinate_system\" },\n \"$schema\" : + {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"usages\": {},\n \"remarks\": {},\n \"id\": {}, \"ids\": + {}\n },\n \"required\" : [ \"name\", \"base_crs\", \"conversion\", + \"coordinate_system\" ],\n \"additionalProperties\": false\n },\n\n + \ \"derived_vertical_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\",\n \"enum\": [\"DerivedVerticalCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": { \"$ref\": + \"#/definitions/vertical_crs\" },\n \"conversion\": { \"$ref\": \"#/definitions/conversion\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"usages\": {},\n \"remarks\": {},\n + \ \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"base_crs\", \"conversion\", \"coordinate_system\" ],\n \"additionalProperties\": + false\n },\n\n \"dynamic_geodetic_reference_frame\": {\n \"type\": + \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/geodetic_reference_frame\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"DynamicGeodeticReferenceFrame\"] },\n \"name\": {},\n \"anchor\": + {},\n \"ellipsoid\": {},\n \"prime_meridian\": {},\n \"frame_reference_epoch\": + { \"type\": \"number\" },\n \"deformation_model\": { \"type\": \"string\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"usages\": {},\n \"remarks\": {},\n + \ \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"ellipsoid\", \"frame_reference_epoch\" ],\n \"additionalProperties\": + false\n },\n\n \"dynamic_vertical_reference_frame\": {\n \"type\": + \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/vertical_reference_frame\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"DynamicVerticalReferenceFrame\"] },\n \"name\": {},\n \"anchor\": + {},\n \"frame_reference_epoch\": { \"type\": \"number\" },\n \"deformation_model\": + { \"type\": \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n + \ \"area\": {},\n \"bbox\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\", + \"frame_reference_epoch\" ],\n \"additionalProperties\": false\n },\n\n + \ \"ellipsoid\": {\n \"type\": \"object\",\n \"oneOf\":[\n {\n + \ \"properties\": {\n \"$schema\" : { \"type\": \"string\" + },\n \"type\": { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] + },\n \"name\": { \"type\": \"string\" },\n \"semi_major_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"semi_minor_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\", \"semi_major_axis\", + \"semi_minor_axis\" ],\n \"additionalProperties\": false\n },\n + \ {\n \"properties\": {\n \"$schema\" : { \"type\": + \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] + },\n \"name\": { \"type\": \"string\" },\n \"semi_major_axis\": + { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" },\n \"inverse_flattening\": + { \"type\": \"number\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n + \ \"required\" : [ \"name\", \"semi_major_axis\", \"inverse_flattening\" + ],\n \"additionalProperties\": false\n },\n {\n \"properties\": + {\n \"$schema\" : { \"type\": \"string\" },\n \"type\": + { \"type\": \"string\", \"enum\": [\"Ellipsoid\"] },\n \"name\": + { \"type\": \"string\" },\n \"radius\": { \"$ref\": \"#/definitions/value_in_metre_or_value_and_unit\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" + : [ \"name\", \"radius\" ],\n \"additionalProperties\": false\n }\n + \ ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ]\n },\n\n \"engineering_crs\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"EngineeringCRS\"] + },\n \"name\": { \"type\": \"string\" },\n \"datum\": { \"$ref\": + \"#/definitions/engineering_datum\" },\n \"coordinate_system\": { \"$ref\": + \"#/definitions/coordinate_system\" },\n \"$schema\" : {},\n \"scope\": + {},\n \"area\": {},\n \"bbox\": {},\n \"usages\": {},\n + \ \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" + : [ \"name\", \"datum\" ],\n \"additionalProperties\": false\n },\n\n + \ \"engineering_datum\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"EngineeringDatum\"] + },\n \"name\": { \"type\": \"string\" },\n \"anchor\": { \"type\": + \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\" + ],\n \"additionalProperties\": false\n },\n\n \"geodetic_crs\": + {\n \"type\": \"object\",\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"GeodeticCRS\", \"GeographicCRS\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"datum\": {\n \"oneOf\": + [\n { \"$ref\": \"#/definitions/geodetic_reference_frame\" + },\n { \"$ref\": \"#/definitions/dynamic_geodetic_reference_frame\" + }\n ]\n },\n \"datum_ensemble\": { \"$ref\": \"#/definitions/datum_ensemble\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": {},\n + \ \"bbox\": {},\n \"usages\": {},\n \"remarks\": {},\n + \ \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\" + ],\n \"description\": \"One and only one of datum and datum_ensemble + must be provided\",\n \"allOf\": [\n { \"$ref\": \"#/definitions/object_usage\" + },\n { \"$ref\": \"#/definitions/one_and_only_one_of_datum_or_datum_ensemble\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"geodetic_reference_frame\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"GeodeticReferenceFrame\"] },\n \"name\": { \"type\": \"string\" + },\n \"anchor\": { \"type\": \"string\" },\n \"ellipsoid\": + { \"$ref\": \"#/definitions/ellipsoid\" },\n \"prime_meridian\": { + \"$ref\": \"#/definitions/prime_meridian\" },\n \"$schema\" : {},\n + \ \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\", \"ellipsoid\" ],\n \"additionalProperties\": + false\n },\n\n \"id\": {\n \"type\": \"object\",\n \"properties\": + {\n \"authority\": { \"type\": \"string\" },\n \"code\": {\n + \ \"oneOf\": [ { \"type\": \"string\" }, { \"type\": \"integer\" } + ]\n }\n },\n \"required\" : [ \"authority\", \"code\" ],\n + \ \"additionalProperties\": false\n },\n\n \"ids\": {\n \"type\": + \"array\",\n \"items\": { \"$ref\": \"#/definitions/id\" }\n },\n\n + \ \"method\": {\n \"type\": \"object\",\n \"properties\": {\n + \ \"$schema\" : { \"type\": \"string\" },\n \"type\": { \"type\": + \"string\", \"enum\": [\"OperationMethod\"]},\n \"name\": { \"type\": + \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\" + ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"id_ids_mutually_exclusive\": + {\n \"not\": {\n \"type\": \"object\",\n \"required\": + [ \"id\", \"ids\" ]\n }\n },\n\n \"one_and_only_one_of_datum_or_datum_ensemble\": + {\n \"allOf\": [\n {\n \"not\": {\n \"type\": + \"object\",\n \"required\": [ \"datum\", \"datum_ensemble\" + ]\n }\n },\n {\n \"oneOf\": [\n { + \"type\": \"object\", \"required\": [\"datum\"] },\n { \"type\": + \"object\", \"required\": [\"datum_ensemble\"] }\n ]\n }\n + \ ]\n },\n\n \"object_usage\": {\n \"anyOf\": [\n {\n + \ \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"scope\": { \"type\": \"string\" + },\n \"area\": { \"type\": \"string\" },\n \"bbox\": + { \"$ref\": \"#/definitions/bbox\" },\n \"remarks\": { \"type\": + \"string\" },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"usages\": { \"$ref\": \"#/definitions/usages\" + },\n \"remarks\": { \"type\": \"string\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ]\n }\n ]\n },\n\n \"parameter_value\": {\n \"type\": + \"object\",\n \"properties\": {\n \"$schema\" : { \"type\": \"string\" + },\n \"type\": { \"type\": \"string\", \"enum\": [\"ParameterValue\"] + },\n \"name\": { \"type\": \"string\" },\n \"value\": {\n \"oneOf\": + [\n { \"type\": \"string\" },\n { \"type\": \"number\" + }\n ]\n },\n \"unit\": { \"$ref\": \"#/definitions/unit\" + },\n \"id\": { \"$ref\": \"#/definitions/id\" },\n \"ids\": + { \"$ref\": \"#/definitions/ids\" }\n },\n \"required\" : [ \"name\", + \"value\" ],\n \"allOf\": [\n { \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"parametric_crs\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"ParametricCRS\"] },\n \"name\": { \"type\": \"string\" },\n \"datum\": + { \"$ref\": \"#/definitions/parametric_datum\" },\n \"coordinate_system\": + { \"$ref\": \"#/definitions/coordinate_system\" },\n \"$schema\" : + {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"usages\": {},\n \"remarks\": {},\n \"id\": {}, \"ids\": + {}\n },\n \"required\" : [ \"name\", \"datum\" ],\n \"additionalProperties\": + false\n },\n\n \"parametric_datum\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"ParametricDatum\"] + },\n \"name\": { \"type\": \"string\" },\n \"anchor\": { \"type\": + \"string\" },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\" + ],\n \"additionalProperties\": false\n },\n\n \"prime_meridian\": + {\n \"type\": \"object\",\n \"properties\": {\n \"$schema\" + : { \"type\": \"string\" },\n \"type\": { \"type\": \"string\", \"enum\": + [\"PrimeMeridian\"] },\n \"name\": { \"type\": \"string\" },\n \"longitude\": + { \"$ref\": \"#/definitions/value_in_degree_or_value_and_unit\" },\n \"id\": + { \"$ref\": \"#/definitions/id\" },\n \"ids\": { \"$ref\": \"#/definitions/ids\" + }\n },\n \"required\" : [ \"name\" ],\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n },\n\n \"single_operation\": {\n \"oneOf\": [\n { + \"$ref\": \"#/definitions/conversion\" },\n { \"$ref\": \"#/definitions/transformation\" + }\n ]\n },\n\n \"projected_crs\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\",\n \"enum\": + [\"ProjectedCRS\"] },\n \"name\": { \"type\": \"string\" },\n \"base_crs\": + { \"$ref\": \"#/definitions/geodetic_crs\" },\n \"conversion\": { \"$ref\": + \"#/definitions/conversion\" },\n \"coordinate_system\": { \"$ref\": + \"#/definitions/coordinate_system\" },\n \"$schema\" : {},\n \"scope\": + {},\n \"area\": {},\n \"bbox\": {},\n \"usages\": {},\n + \ \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" + : [ \"name\", \"base_crs\", \"conversion\", \"coordinate_system\" ],\n \"additionalProperties\": + false\n },\n\n \"temporal_crs\": {\n \"type\": \"object\",\n \"allOf\": + [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n + \ \"type\": { \"type\": \"string\", \"enum\": [\"TemporalCRS\"] },\n + \ \"name\": { \"type\": \"string\" },\n \"datum\": { \"$ref\": + \"#/definitions/temporal_datum\" },\n \"coordinate_system\": { \"$ref\": + \"#/definitions/coordinate_system\" },\n \"$schema\" : {},\n \"scope\": + {},\n \"area\": {},\n \"bbox\": {},\n \"usages\": {},\n + \ \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" + : [ \"name\", \"datum\" ],\n \"additionalProperties\": false\n },\n\n + \ \"temporal_datum\": {\n \"type\": \"object\",\n \"allOf\": [{ + \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"TemporalDatum\"] },\n \"name\": + { \"type\": \"string\" },\n \"calendar\": { \"type\": \"string\" },\n + \ \"time_origin\": { \"type\": \"string\" },\n \"$schema\" : + {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"usages\": {},\n \"remarks\": {},\n \"id\": {}, \"ids\": + {}\n },\n \"required\" : [ \"name\", \"calendar\" ],\n \"additionalProperties\": + false\n },\n\n \"transformation\": {\n \"type\": \"object\",\n + \ \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" }],\n \"properties\": + {\n \"type\": { \"type\": \"string\", \"enum\": [\"Transformation\"] + },\n \"name\": { \"type\": \"string\" },\n \"source_crs\": { + \"$ref\": \"#/definitions/crs\" },\n \"target_crs\": { \"$ref\": \"#/definitions/crs\" + },\n \"interpolation_crs\": { \"$ref\": \"#/definitions/crs\" },\n + \ \"method\": { \"$ref\": \"#/definitions/method\" },\n \"parameters\": + {\n \"type\": \"array\",\n \"items\": { \"$ref\": \"#/definitions/parameter_value\" + }\n },\n \"accuracy\": { \"type\": \"string\" },\n \"$schema\" + : {},\n \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n + \ \"usages\": {},\n \"remarks\": {},\n \"id\": {}, \"ids\": + {}\n },\n \"required\" : [ \"name\", \"source_crs\", \"target_crs\", + \"method\", \"parameters\" ],\n \"additionalProperties\": false\n },\n\n + \ \"unit\": {\n \"oneOf\": [\n {\n \"type\": \"string\",\n + \ \"enum\": [\"metre\", \"degree\", \"unity\"]\n },\n {\n + \ \"type\": \"object\",\n \"properties\": {\n \"type\": + { \"type\": \"string\",\n \"enum\": [\"LinearUnit\", \"AngularUnit\", + \"ScaleUnit\",\n \"TimeUnit\", \"ParametricUnit\", + \"Unit\"] },\n \"name\": { \"type\": \"string\" },\n \"conversion_factor\": + { \"type\": \"number\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + },\n \"ids\": { \"$ref\": \"#/definitions/ids\" }\n },\n + \ \"required\" : [ \"type\", \"name\" ],\n \"allOf\": [\n { + \"$ref\": \"#/definitions/id_ids_mutually_exclusive\" }\n ],\n \"additionalProperties\": + false\n }\n ]\n },\n\n \"usages\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"object\",\n \"properties\": + {\n \"scope\": { \"type\": \"string\" },\n \"area\": + { \"type\": \"string\" },\n \"bbox\": { \"$ref\": \"#/definitions/bbox\" + }\n },\n \"additionalProperties\": false\n }\n },\n\n + \ \"value_and_unit\": {\n \"type\": \"object\",\n \"properties\": + {\n \"value\": { \"type\": \"number\" },\n \"unit\": { \"$ref\": + \"#/definitions/unit\" }\n },\n \"required\" : [ \"value\", \"unit\" + ],\n \"additionalProperties\": false\n },\n\n \"value_in_degree_or_value_and_unit\": + {\n \"oneOf\": [\n { \"type\": \"number\" },\n { \"$ref\": + \"#/definitions/value_and_unit\" }\n ]\n },\n\n \"value_in_metre_or_value_and_unit\": + {\n \"oneOf\": [\n { \"type\": \"number\" },\n { \"$ref\": + \"#/definitions/value_and_unit\" }\n ]\n },\n\n \"vertical_crs\": + {\n \"type\": \"object\",\n \"properties\": {\n \"type\": + { \"type\": \"string\", \"enum\": [\"VerticalCRS\"] },\n \"name\": + { \"type\": \"string\" },\n \"datum\": {\n \"oneOf\": [\n + \ { \"$ref\": \"#/definitions/vertical_reference_frame\" },\n + \ { \"$ref\": \"#/definitions/dynamic_vertical_reference_frame\" + }\n ]\n },\n \"datum_ensemble\": { \"$ref\": \"#/definitions/datum_ensemble\" + },\n \"coordinate_system\": { \"$ref\": \"#/definitions/coordinate_system\" + },\n \"geoid_model\": {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": { \"type\": \"string\" },\n \"interpolation_crs\": + { \"$ref\": \"#/definitions/crs\" },\n \"id\": { \"$ref\": \"#/definitions/id\" + }\n },\n \"required\" : [ \"name\" ],\n \"additionalProperties\": + false\n },\n \"$schema\" : {},\n \"scope\": {},\n \"area\": + {},\n \"bbox\": {},\n \"usages\": {},\n \"remarks\": + {},\n \"id\": {}, \"ids\": {}\n },\n \"required\" : [ \"name\"],\n + \ \"description\": \"One and only one of datum and datum_ensemble must + be provided\",\n \"allOf\": [\n { \"$ref\": \"#/definitions/object_usage\" + },\n { \"$ref\": \"#/definitions/one_and_only_one_of_datum_or_datum_ensemble\" + }\n ],\n \"additionalProperties\": false\n },\n\n \"vertical_reference_frame\": + {\n \"type\": \"object\",\n \"allOf\": [{ \"$ref\": \"#/definitions/object_usage\" + }],\n \"properties\": {\n \"type\": { \"type\": \"string\", \"enum\": + [\"VerticalReferenceFrame\"] },\n \"name\": { \"type\": \"string\" + },\n \"anchor\": { \"type\": \"string\" },\n \"$schema\" : {},\n + \ \"scope\": {},\n \"area\": {},\n \"bbox\": {},\n \"usages\": + {},\n \"remarks\": {},\n \"id\": {}, \"ids\": {}\n },\n + \ \"required\" : [ \"name\" ],\n \"additionalProperties\": false\n + \ }\n\n }\n}\n" + headers: + Access-Control-Allow-Methods: + - HEAD, OPTIONS, GET + Access-Control-Allow-Origin: + - '*' + Age: + - '23' + CDN-Cache-Control: + - public + CF-Cache-Status: + - HIT + CF-Ray: + - 80d6cd23c81b0f65-EWR + Cache-Control: + - max-age=1200 + Connection: + - close + Content-Type: + - application/json + Date: + - Wed, 27 Sep 2023 21:22:18 GMT + ETag: + - W/"229554e540c67351947cd45680c62eef" + Last-Modified: + - Sun, 03 Sep 2023 09:10:52 GMT + Referrer-Policy: + - no-referrer-when-downgrade + Server: + - cloudflare + Transfer-Encoding: + - chunked + Vary: + - Accept-Encoding + X-Backend: + - web-i-0d1f77148b0d09147 + X-Content-Type-Options: + - nosniff + X-RTD-Domain: + - proj.org + X-RTD-Path: + - /proxito/html/osgeo-proj/9.3/schemas/v0.2/projjson.schema.json + X-RTD-Project: + - osgeo-proj + X-RTD-Project-Method: + - custom_domain + X-RTD-Version: + - '9.3' + X-RTD-Version-Method: + - path + X-Served: + - Nginx-Proxito-Sendfile + alt-svc: + - h3=":443"; ma=86400 + x-amz-id-2: + - oZSS/g1M1qQDbSjh7Ibsnek7WF+DLziq3IRGuiv02COQ8XVOQg9Eg9SLYpxl0XV0+VzmyAz6O3k= + x-amz-meta-mtime: + - '1693732240.238196845' + x-amz-request-id: + - 4YW4G7N4AYK56G5W + x-amz-server-side-encryption: + - AES256 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example12].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example12].yaml new file mode 100644 index 000000000..64ffb2690 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example12].yaml @@ -0,0 +1,260 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"core\": {\n + \ \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"stac_version\",\n \"id\",\n \"links\",\n + \ \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"cube\",\n \"datetime-range\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"sar\",\n \"scientific\"\n ]\n + \ }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n + \ },\n \"additionalProperties\": false\n },\n + \ \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"title\": \"Date and + Time\",\n \"description\": \"The searchable date/time of + the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n + \ \"title\": {\n \"title\": \"Item Title\",\n + \ \"description\": \"A human-readable title describing the + item.\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Item Licenses\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Organization + name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": + \"Organization roles\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n + \ ]\n }\n },\n + \ \"url\": {\n \"title\": \"Homepage\",\n + \ \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n + \ },\n \"created\": {\n \"title\": + \"Metadata created at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": + \"Metadata updated at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"type\": {\n + \ \"title\": \"Asset type\",\n \"type\": \"string\"\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '6074' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:20:58 GMT + ETag: + - '"4e24763d74f0d463b0cb6c63fc099e0b59447c7a049b93ffda4c6eb9eb54ae95"' + Expires: + - Wed, 27 Sep 2023 21:25:58 GMT + Source-Age: + - '2' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 1ef42a7d29758deb1d624d6943ff071b8e968227 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 2630:09BA:1F7C:2D49:65149AB0 + X-Served-By: + - cache-lga21926-LGA + X-Timer: + - S1695849659.639993,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/extensions/label/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n + \ \"id\": \"stac-label-item-schema.json#\",\n \"title\": \"STAC Label + Data Item Extension Spec\",\n \"type\": \"object\",\n \"properties\": + {\n \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"label:properties\",\n \"label:classes\",\n \"label:description\"\n + \ ],\n \"properties\": {\n \"label:properties\": {\n + \ \"title\": \"Property\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"label:classes\": + {\n \"title\": \"Classes\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"object\",\n \"required\": + [\n \"name\",\n \"classes\"\n ],\n + \ \"properties\": {\n \"name\": {\n \"title\": + \"Name\",\n \"type\": \"string\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n + \ },\n \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\"\n },\n \"label:type\": + {\n \"title\": \"Type\",\n \"type\": \"string\",\n \"enum\": + [\n \"raster\",\n \"vector\"\n ]\n },\n + \ \"label:tasks\": {\n \"title\": \"Task\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n + \ }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n + \ \"type\": \"string\",\n \"enum\": [\n \"automated\",\n + \ \"manual\"\n ]\n }\n },\n + \ \"label:overviews\": {\n \"title\": \"Overview\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"property_key\": {\n \"title\": + \"Property Key\",\n \"type\": \"string\"\n },\n + \ \"counts\": {\n \"title\": \"Counts\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"name\": + {\n \"title\": \"Class Name\",\n \"type\": + \"string\"\n },\n \"count\": {\n + \ \"title\": \"Count\",\n \"type\": + \"integer\"\n }\n }\n }\n + \ },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ }\n }\n }\n }\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '3404' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:20:58 GMT + ETag: + - '"46c09f290da4303780880924f1569b2cb0b979a2d363a4446e2b8b7cc494844b"' + Expires: + - Wed, 27 Sep 2023 21:25:58 GMT + Source-Age: + - '0' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - c0e1976dc2b377ef28cafcd6fdf829bdaac14755 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 9C40:3F12:7305B:8B919:65149AAF + X-Served-By: + - cache-lga21968-LGA + X-Timer: + - S1695849659.825740,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example13].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example13].yaml new file mode 100644 index 000000000..e00344118 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example13].yaml @@ -0,0 +1,260 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"core\": {\n + \ \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"stac_version\",\n \"id\",\n \"links\",\n + \ \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"cube\",\n \"datetime-range\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"sar\",\n \"scientific\"\n ]\n + \ }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n + \ },\n \"additionalProperties\": false\n },\n + \ \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"title\": \"Date and + Time\",\n \"description\": \"The searchable date/time of + the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n + \ \"title\": {\n \"title\": \"Item Title\",\n + \ \"description\": \"A human-readable title describing the + item.\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Item Licenses\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Organization + name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": + \"Organization roles\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n + \ ]\n }\n },\n + \ \"url\": {\n \"title\": \"Homepage\",\n + \ \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n + \ },\n \"created\": {\n \"title\": + \"Metadata created at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": + \"Metadata updated at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"type\": {\n + \ \"title\": \"Asset type\",\n \"type\": \"string\"\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '6074' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:20:58 GMT + ETag: + - '"4e24763d74f0d463b0cb6c63fc099e0b59447c7a049b93ffda4c6eb9eb54ae95"' + Expires: + - Wed, 27 Sep 2023 21:25:58 GMT + Source-Age: + - '3' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - fda6c3bb8d7b41327be29d85ce9480fc39ea4eca + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 2630:09BA:1F7C:2D49:65149AB0 + X-Served-By: + - cache-lga21922-LGA + X-Timer: + - S1695849659.942901,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/extensions/label/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n + \ \"id\": \"stac-label-item-schema.json#\",\n \"title\": \"STAC Label + Data Item Extension Spec\",\n \"type\": \"object\",\n \"properties\": + {\n \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"label:properties\",\n \"label:classes\",\n \"label:description\"\n + \ ],\n \"properties\": {\n \"label:properties\": {\n + \ \"title\": \"Property\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"label:classes\": + {\n \"title\": \"Classes\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"object\",\n \"required\": + [\n \"name\",\n \"classes\"\n ],\n + \ \"properties\": {\n \"name\": {\n \"title\": + \"Name\",\n \"type\": \"string\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n + \ },\n \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\"\n },\n \"label:type\": + {\n \"title\": \"Type\",\n \"type\": \"string\",\n \"enum\": + [\n \"raster\",\n \"vector\"\n ]\n },\n + \ \"label:tasks\": {\n \"title\": \"Task\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n + \ }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n + \ \"type\": \"string\",\n \"enum\": [\n \"automated\",\n + \ \"manual\"\n ]\n }\n },\n + \ \"label:overviews\": {\n \"title\": \"Overview\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"property_key\": {\n \"title\": + \"Property Key\",\n \"type\": \"string\"\n },\n + \ \"counts\": {\n \"title\": \"Counts\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"name\": + {\n \"title\": \"Class Name\",\n \"type\": + \"string\"\n },\n \"count\": {\n + \ \"title\": \"Count\",\n \"type\": + \"integer\"\n }\n }\n }\n + \ },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ }\n }\n }\n }\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '3404' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:20:59 GMT + ETag: + - '"46c09f290da4303780880924f1569b2cb0b979a2d363a4446e2b8b7cc494844b"' + Expires: + - Wed, 27 Sep 2023 21:25:59 GMT + Source-Age: + - '1' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 882ff6b9c4a51a0a5791fe1cb73a243aaf7047a5 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 9C40:3F12:7305B:8B919:65149AAF + X-Served-By: + - cache-lga21932-LGA + X-Timer: + - S1695849659.071439,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example14].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example14].yaml new file mode 100644 index 000000000..a17e33717 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example14].yaml @@ -0,0 +1,229 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"checksum\",\n + \ \"scientific\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"version\": {\n \"title\": + \"Collection Version\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Homepage\",\n \"type\": \"string\",\n + \ \"format\": \"url\"\n }\n }\n }\n + \ },\n \"extent\": {\n \"title\": \"Extents\",\n \"type\": + \"object\",\n \"required\": [\n \"spatial\",\n \"temporal\"\n + \ ],\n \"properties\": {\n \"spatial\": {\n \"title\": + \"Spatial extent object\",\n \"type\": \"object\",\n \"required\": + [\n \"bbox\"\n ],\n \"properties\": + {\n \"bbox\": {\n \"title\": \"Spatial extents\",\n + \ \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"title\": \"Spatial extent\",\n + \ \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"properties\": {\n \"title\": \"Common properties\",\n \"type\": + \"object\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '4394' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:20:59 GMT + ETag: + - '"031974beaaaf6f0b5c6877dc97088d9e2aff3bc8962df33ff291dddded353f09"' + Expires: + - Wed, 27 Sep 2023 21:25:59 GMT + Source-Age: + - '3' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 3caf574622e35f16b026d4b06c4b2c5fac604090 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - D9DE:5675:4608:5765:65149AAF + X-Served-By: + - cache-lga21983-LGA + X-Timer: + - S1695849659.187695,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n },\n \"summaries\": {\n + \ \"$ref\": \"#/definitions/summaries\"\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": {\n \"min\": + {\n \"title\": \"Minimum value\",\n \"type\": + [\"number\", \"string\"]\n },\n \"max\": {\n \"title\": + \"Maximum value\",\n \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": \"Set of + values\",\n \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"description\": \"Any data type could + occur.\"\n }\n }\n ]\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2638' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:20:59 GMT + ETag: + - '"3b514933a3747f038125935624a13df108e30fe1cb8f9660a7f54ac6d4765ce9"' + Expires: + - Wed, 27 Sep 2023 21:25:59 GMT + Source-Age: + - '4' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - ed73b46ab5dfd49cafd9437daeec40c7a2dbd0c2 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 146A:2756:778FB:90182:65149AAF + X-Served-By: + - cache-lga21929-LGA + X-Timer: + - S1695849659.302506,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example15].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example15].yaml new file mode 100644 index 000000000..3a9640a26 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example15].yaml @@ -0,0 +1,229 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"checksum\",\n + \ \"scientific\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"version\": {\n \"title\": + \"Collection Version\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Homepage\",\n \"type\": \"string\",\n + \ \"format\": \"url\"\n }\n }\n }\n + \ },\n \"extent\": {\n \"title\": \"Extents\",\n \"type\": + \"object\",\n \"required\": [\n \"spatial\",\n \"temporal\"\n + \ ],\n \"properties\": {\n \"spatial\": {\n \"title\": + \"Spatial extent object\",\n \"type\": \"object\",\n \"required\": + [\n \"bbox\"\n ],\n \"properties\": + {\n \"bbox\": {\n \"title\": \"Spatial extents\",\n + \ \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"title\": \"Spatial extent\",\n + \ \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"properties\": {\n \"title\": \"Common properties\",\n \"type\": + \"object\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '4394' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:20:59 GMT + ETag: + - '"031974beaaaf6f0b5c6877dc97088d9e2aff3bc8962df33ff291dddded353f09"' + Expires: + - Wed, 27 Sep 2023 21:25:59 GMT + Source-Age: + - '3' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 3788ea82915244622b3d1be1200fd86b857fe07d + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - D9DE:5675:4608:5765:65149AAF + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849659.419398,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n },\n \"summaries\": {\n + \ \"$ref\": \"#/definitions/summaries\"\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": {\n \"min\": + {\n \"title\": \"Minimum value\",\n \"type\": + [\"number\", \"string\"]\n },\n \"max\": {\n \"title\": + \"Maximum value\",\n \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": \"Set of + values\",\n \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"description\": \"Any data type could + occur.\"\n }\n }\n ]\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2638' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:20:59 GMT + ETag: + - '"3b514933a3747f038125935624a13df108e30fe1cb8f9660a7f54ac6d4765ce9"' + Expires: + - Wed, 27 Sep 2023 21:25:59 GMT + Source-Age: + - '4' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 8f2521afd30e24573bb01193104c3a74bf161fef + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 146A:2756:778FB:90182:65149AAF + X-Served-By: + - cache-lga21962-LGA + X-Timer: + - S1695849660.570179,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example16].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example16].yaml new file mode 100644 index 000000000..eca89cb47 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example16].yaml @@ -0,0 +1,260 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"core\": {\n + \ \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"stac_version\",\n \"id\",\n \"links\",\n + \ \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"cube\",\n \"datetime-range\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"sar\",\n \"scientific\"\n ]\n + \ }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n + \ },\n \"additionalProperties\": false\n },\n + \ \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"title\": \"Date and + Time\",\n \"description\": \"The searchable date/time of + the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n + \ \"title\": {\n \"title\": \"Item Title\",\n + \ \"description\": \"A human-readable title describing the + item.\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Item Licenses\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Organization + name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": + \"Organization roles\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n + \ ]\n }\n },\n + \ \"url\": {\n \"title\": \"Homepage\",\n + \ \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n + \ },\n \"created\": {\n \"title\": + \"Metadata created at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": + \"Metadata updated at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"type\": {\n + \ \"title\": \"Asset type\",\n \"type\": \"string\"\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '6074' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:20:59 GMT + ETag: + - '"4e24763d74f0d463b0cb6c63fc099e0b59447c7a049b93ffda4c6eb9eb54ae95"' + Expires: + - Wed, 27 Sep 2023 21:25:59 GMT + Source-Age: + - '3' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - e62ea581a836d7ed21dfe869a524d048d5911d74 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 2630:09BA:1F7C:2D49:65149AB0 + X-Served-By: + - cache-lga21980-LGA + X-Timer: + - S1695849660.895970,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/extensions/label/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n + \ \"id\": \"stac-label-item-schema.json#\",\n \"title\": \"STAC Label + Data Item Extension Spec\",\n \"type\": \"object\",\n \"properties\": + {\n \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"label:properties\",\n \"label:classes\",\n \"label:description\"\n + \ ],\n \"properties\": {\n \"label:properties\": {\n + \ \"title\": \"Property\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"label:classes\": + {\n \"title\": \"Classes\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"object\",\n \"required\": + [\n \"name\",\n \"classes\"\n ],\n + \ \"properties\": {\n \"name\": {\n \"title\": + \"Name\",\n \"type\": \"string\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n + \ },\n \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\"\n },\n \"label:type\": + {\n \"title\": \"Type\",\n \"type\": \"string\",\n \"enum\": + [\n \"raster\",\n \"vector\"\n ]\n },\n + \ \"label:tasks\": {\n \"title\": \"Task\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n + \ }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n + \ \"type\": \"string\",\n \"enum\": [\n \"automated\",\n + \ \"manual\"\n ]\n }\n },\n + \ \"label:overviews\": {\n \"title\": \"Overview\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"property_key\": {\n \"title\": + \"Property Key\",\n \"type\": \"string\"\n },\n + \ \"counts\": {\n \"title\": \"Counts\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"name\": + {\n \"title\": \"Class Name\",\n \"type\": + \"string\"\n },\n \"count\": {\n + \ \"title\": \"Count\",\n \"type\": + \"integer\"\n }\n }\n }\n + \ },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ }\n }\n }\n }\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '3404' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:04 GMT + ETag: + - '"46c09f290da4303780880924f1569b2cb0b979a2d363a4446e2b8b7cc494844b"' + Expires: + - Wed, 27 Sep 2023 21:26:04 GMT + Source-Age: + - '6' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 3d6b6555b92fae1d00683dede9d74e111916eb3b + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 9C40:3F12:7305B:8B919:65149AAF + X-Served-By: + - cache-lga21983-LGA + X-Timer: + - S1695849665.575733,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example17].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example17].yaml new file mode 100644 index 000000000..e19bc883a --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example17].yaml @@ -0,0 +1,260 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"core\": {\n + \ \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"stac_version\",\n \"id\",\n \"links\",\n + \ \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"cube\",\n \"datetime-range\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"sar\",\n \"scientific\"\n ]\n + \ }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n + \ },\n \"additionalProperties\": false\n },\n + \ \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"title\": \"Date and + Time\",\n \"description\": \"The searchable date/time of + the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n + \ \"title\": {\n \"title\": \"Item Title\",\n + \ \"description\": \"A human-readable title describing the + item.\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Item Licenses\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Organization + name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": + \"Organization roles\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n + \ ]\n }\n },\n + \ \"url\": {\n \"title\": \"Homepage\",\n + \ \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n + \ },\n \"created\": {\n \"title\": + \"Metadata created at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": + \"Metadata updated at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"type\": {\n + \ \"title\": \"Asset type\",\n \"type\": \"string\"\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '6074' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:04 GMT + ETag: + - '"4e24763d74f0d463b0cb6c63fc099e0b59447c7a049b93ffda4c6eb9eb54ae95"' + Expires: + - Wed, 27 Sep 2023 21:26:04 GMT + Source-Age: + - '9' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - a5e0af17d3357e9bbe6d2a4128f39781c5d58c8e + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 2630:09BA:1F7C:2D49:65149AB0 + X-Served-By: + - cache-lga21931-LGA + X-Timer: + - S1695849665.728331,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/extensions/label/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n + \ \"id\": \"stac-label-item-schema.json#\",\n \"title\": \"STAC Label + Data Item Extension Spec\",\n \"type\": \"object\",\n \"properties\": + {\n \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"label:properties\",\n \"label:classes\",\n \"label:description\"\n + \ ],\n \"properties\": {\n \"label:properties\": {\n + \ \"title\": \"Property\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"label:classes\": + {\n \"title\": \"Classes\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"object\",\n \"required\": + [\n \"name\",\n \"classes\"\n ],\n + \ \"properties\": {\n \"name\": {\n \"title\": + \"Name\",\n \"type\": \"string\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n + \ },\n \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\"\n },\n \"label:type\": + {\n \"title\": \"Type\",\n \"type\": \"string\",\n \"enum\": + [\n \"raster\",\n \"vector\"\n ]\n },\n + \ \"label:tasks\": {\n \"title\": \"Task\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n + \ }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n + \ \"type\": \"string\",\n \"enum\": [\n \"automated\",\n + \ \"manual\"\n ]\n }\n },\n + \ \"label:overviews\": {\n \"title\": \"Overview\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"property_key\": {\n \"title\": + \"Property Key\",\n \"type\": \"string\"\n },\n + \ \"counts\": {\n \"title\": \"Counts\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"name\": + {\n \"title\": \"Class Name\",\n \"type\": + \"string\"\n },\n \"count\": {\n + \ \"title\": \"Count\",\n \"type\": + \"integer\"\n }\n }\n }\n + \ },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ }\n }\n }\n }\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '3404' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:06 GMT + ETag: + - '"46c09f290da4303780880924f1569b2cb0b979a2d363a4446e2b8b7cc494844b"' + Expires: + - Wed, 27 Sep 2023 21:26:06 GMT + Source-Age: + - '8' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - ab92a0366a2d16f9654048f4411f2489f6c8a164 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 9C40:3F12:7305B:8B919:65149AAF + X-Served-By: + - cache-lga21923-LGA + X-Timer: + - S1695849666.027743,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example18].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example18].yaml new file mode 100644 index 000000000..64d798955 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example18].yaml @@ -0,0 +1,229 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"checksum\",\n + \ \"scientific\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"version\": {\n \"title\": + \"Collection Version\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Homepage\",\n \"type\": \"string\",\n + \ \"format\": \"url\"\n }\n }\n }\n + \ },\n \"extent\": {\n \"title\": \"Extents\",\n \"type\": + \"object\",\n \"required\": [\n \"spatial\",\n \"temporal\"\n + \ ],\n \"properties\": {\n \"spatial\": {\n \"title\": + \"Spatial extent object\",\n \"type\": \"object\",\n \"required\": + [\n \"bbox\"\n ],\n \"properties\": + {\n \"bbox\": {\n \"title\": \"Spatial extents\",\n + \ \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"title\": \"Spatial extent\",\n + \ \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"properties\": {\n \"title\": \"Common properties\",\n \"type\": + \"object\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '4394' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:06 GMT + ETag: + - '"031974beaaaf6f0b5c6877dc97088d9e2aff3bc8962df33ff291dddded353f09"' + Expires: + - Wed, 27 Sep 2023 21:26:06 GMT + Source-Age: + - '10' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 70d32b4315845e5408b174c412f854fa867549b4 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - D9DE:5675:4608:5765:65149AAF + X-Served-By: + - cache-lga21969-LGA + X-Timer: + - S1695849666.143685,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n },\n \"summaries\": {\n + \ \"$ref\": \"#/definitions/summaries\"\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": {\n \"min\": + {\n \"title\": \"Minimum value\",\n \"type\": + [\"number\", \"string\"]\n },\n \"max\": {\n \"title\": + \"Maximum value\",\n \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": \"Set of + values\",\n \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"description\": \"Any data type could + occur.\"\n }\n }\n ]\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2638' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:06 GMT + ETag: + - '"3b514933a3747f038125935624a13df108e30fe1cb8f9660a7f54ac6d4765ce9"' + Expires: + - Wed, 27 Sep 2023 21:26:06 GMT + Source-Age: + - '11' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 027a819cd620c9a5a25179d980e046c441b8e323 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 146A:2756:778FB:90182:65149AAF + X-Served-By: + - cache-lga21938-LGA + X-Timer: + - S1695849666.249548,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example19].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example19].yaml new file mode 100644 index 000000000..040413164 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example19].yaml @@ -0,0 +1,260 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"core\": {\n + \ \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"stac_version\",\n \"id\",\n \"links\",\n + \ \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"cube\",\n \"datetime-range\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"sar\",\n \"scientific\"\n ]\n + \ }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n + \ },\n \"additionalProperties\": false\n },\n + \ \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"title\": \"Date and + Time\",\n \"description\": \"The searchable date/time of + the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n + \ \"title\": {\n \"title\": \"Item Title\",\n + \ \"description\": \"A human-readable title describing the + item.\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Item Licenses\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Organization + name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": + \"Organization roles\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n + \ ]\n }\n },\n + \ \"url\": {\n \"title\": \"Homepage\",\n + \ \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n + \ },\n \"created\": {\n \"title\": + \"Metadata created at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": + \"Metadata updated at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"type\": {\n + \ \"title\": \"Asset type\",\n \"type\": \"string\"\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '6074' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:06 GMT + ETag: + - '"4e24763d74f0d463b0cb6c63fc099e0b59447c7a049b93ffda4c6eb9eb54ae95"' + Expires: + - Wed, 27 Sep 2023 21:26:06 GMT + Source-Age: + - '10' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 416210ef6b6fb55697c82456e0df5ac12cf6705c + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 2630:09BA:1F7C:2D49:65149AB0 + X-Served-By: + - cache-lga21926-LGA + X-Timer: + - S1695849666.370528,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/extensions/label/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n + \ \"id\": \"stac-label-item-schema.json#\",\n \"title\": \"STAC Label + Data Item Extension Spec\",\n \"type\": \"object\",\n \"properties\": + {\n \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"label:properties\",\n \"label:classes\",\n \"label:description\"\n + \ ],\n \"properties\": {\n \"label:properties\": {\n + \ \"title\": \"Property\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"label:classes\": + {\n \"title\": \"Classes\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"object\",\n \"required\": + [\n \"name\",\n \"classes\"\n ],\n + \ \"properties\": {\n \"name\": {\n \"title\": + \"Name\",\n \"type\": \"string\"\n },\n \"classes\": + {\n \"title\": \"Classes\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n + \ },\n \"label:description\": {\n \"title\": \"Description\",\n + \ \"type\": \"string\"\n },\n \"label:type\": + {\n \"title\": \"Type\",\n \"type\": \"string\",\n \"enum\": + [\n \"raster\",\n \"vector\"\n ]\n },\n + \ \"label:tasks\": {\n \"title\": \"Task\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n + \ }\n },\n \"label:methods\": {\n \"title\": + \"Method\",\n \"type\": \"array\",\n \"items\": {\n + \ \"type\": \"string\",\n \"enum\": [\n \"automated\",\n + \ \"manual\"\n ]\n }\n },\n + \ \"label:overviews\": {\n \"title\": \"Overview\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"property_key\": {\n \"title\": + \"Property Key\",\n \"type\": \"string\"\n },\n + \ \"counts\": {\n \"title\": \"Counts\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"name\": + {\n \"title\": \"Class Name\",\n \"type\": + \"string\"\n },\n \"count\": {\n + \ \"title\": \"Count\",\n \"type\": + \"integer\"\n }\n }\n }\n + \ },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": \"Stat + Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": \"Value\",\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n }\n }\n }\n + \ }\n }\n }\n }\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '3404' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:06 GMT + ETag: + - '"46c09f290da4303780880924f1569b2cb0b979a2d363a4446e2b8b7cc494844b"' + Expires: + - Wed, 27 Sep 2023 21:26:06 GMT + Source-Age: + - '8' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 57f1b1ce2789da903b311885df96bd0c3561ee20 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 9C40:3F12:7305B:8B919:65149AAF + X-Served-By: + - cache-lga21923-LGA + X-Timer: + - S1695849666.468877,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example1].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example1].yaml new file mode 100644 index 000000000..444ff4808 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example1].yaml @@ -0,0 +1,105 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n },\n \"summaries\": {\n + \ \"$ref\": \"#/definitions/summaries\"\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": {\n \"min\": + {\n \"title\": \"Minimum value\",\n \"type\": + [\"number\", \"string\"]\n },\n \"max\": {\n \"title\": + \"Maximum value\",\n \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": \"Set of + values\",\n \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"description\": \"Any data type could + occur.\"\n }\n }\n ]\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2638' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:20:55 GMT + ETag: + - '"3b514933a3747f038125935624a13df108e30fe1cb8f9660a7f54ac6d4765ce9"' + Expires: + - Wed, 27 Sep 2023 21:25:55 GMT + Source-Age: + - '0' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - c91a13256886c06ee92ab666c2502fc529be5509 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 146A:2756:778FB:90182:65149AAF + X-Served-By: + - cache-lga21929-LGA + X-Timer: + - S1695849656.713436,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example20].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example20].yaml new file mode 100644 index 000000000..05abacb6e --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example20].yaml @@ -0,0 +1,149 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"core\": {\n + \ \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"stac_version\",\n \"id\",\n \"links\",\n + \ \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"cube\",\n \"datetime-range\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"sar\",\n \"scientific\"\n ]\n + \ }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n + \ },\n \"additionalProperties\": false\n },\n + \ \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"title\": \"Date and + Time\",\n \"description\": \"The searchable date/time of + the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n + \ \"title\": {\n \"title\": \"Item Title\",\n + \ \"description\": \"A human-readable title describing the + item.\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Item Licenses\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Organization + name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": + \"Organization roles\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n + \ ]\n }\n },\n + \ \"url\": {\n \"title\": \"Homepage\",\n + \ \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n + \ },\n \"created\": {\n \"title\": + \"Metadata created at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": + \"Metadata updated at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"type\": {\n + \ \"title\": \"Asset type\",\n \"type\": \"string\"\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '6074' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:06 GMT + ETag: + - '"4e24763d74f0d463b0cb6c63fc099e0b59447c7a049b93ffda4c6eb9eb54ae95"' + Expires: + - Wed, 27 Sep 2023 21:26:06 GMT + Source-Age: + - '10' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - a6fda7f7ab30e5c4b425baf46178ca20c706890e + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 2630:09BA:1F7C:2D49:65149AB0 + X-Served-By: + - cache-lga21968-LGA + X-Timer: + - S1695849667.599809,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example21].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example21].yaml new file mode 100644 index 000000000..25b2514e1 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example21].yaml @@ -0,0 +1,149 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"core\": {\n + \ \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"stac_version\",\n \"id\",\n \"links\",\n + \ \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"cube\",\n \"datetime-range\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"sar\",\n \"scientific\"\n ]\n + \ }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n + \ },\n \"additionalProperties\": false\n },\n + \ \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"title\": \"Date and + Time\",\n \"description\": \"The searchable date/time of + the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n + \ \"title\": {\n \"title\": \"Item Title\",\n + \ \"description\": \"A human-readable title describing the + item.\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Item Licenses\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Organization + name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": + \"Organization roles\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n + \ ]\n }\n },\n + \ \"url\": {\n \"title\": \"Homepage\",\n + \ \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n + \ },\n \"created\": {\n \"title\": + \"Metadata created at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": + \"Metadata updated at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"type\": {\n + \ \"title\": \"Asset type\",\n \"type\": \"string\"\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '6074' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:06 GMT + ETag: + - '"4e24763d74f0d463b0cb6c63fc099e0b59447c7a049b93ffda4c6eb9eb54ae95"' + Expires: + - Wed, 27 Sep 2023 21:26:06 GMT + Source-Age: + - '10' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '3' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 57e65411362001873b54af8c6fa776a76a1cea2f + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 2630:09BA:1F7C:2D49:65149AB0 + X-Served-By: + - cache-lga21926-LGA + X-Timer: + - S1695849667.735773,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example22].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example22].yaml index 9beb08275..9cef0ffa3 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example22].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example22].yaml @@ -1,4 +1,151 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"core\": {\n + \ \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"stac_version\",\n \"id\",\n \"links\",\n + \ \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"cube\",\n \"datetime-range\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"sar\",\n \"scientific\"\n ]\n + \ }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n + \ },\n \"additionalProperties\": false\n },\n + \ \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"title\": \"Date and + Time\",\n \"description\": \"The searchable date/time of + the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n + \ \"title\": {\n \"title\": \"Item Title\",\n + \ \"description\": \"A human-readable title describing the + item.\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Item Licenses\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Organization + name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": + \"Organization roles\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n + \ ]\n }\n },\n + \ \"url\": {\n \"title\": \"Homepage\",\n + \ \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n + \ },\n \"created\": {\n \"title\": + \"Metadata created at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": + \"Metadata updated at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"type\": {\n + \ \"title\": \"Asset type\",\n \"type\": \"string\"\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '6074' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:06 GMT + ETag: + - '"4e24763d74f0d463b0cb6c63fc099e0b59447c7a049b93ffda4c6eb9eb54ae95"' + Expires: + - Wed, 27 Sep 2023 21:26:06 GMT + Source-Age: + - '11' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - f715681278fd1ba89bf38ec01adec2554b1b787e + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 2630:09BA:1F7C:2D49:65149AB0 + X-Served-By: + - cache-lga21977-LGA + X-Timer: + - S1695849667.852766,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: body: null headers: @@ -109,11 +256,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:32 GMT + - Wed, 27 Sep 2023 21:21:07 GMT ETag: - '"bd0d97e01404052bb35eda302935aea6ab05818f78d1970e785c7083dedc3bad"' Expires: - - Fri, 22 Sep 2023 19:19:32 GMT + - Wed, 27 Sep 2023 21:26:07 GMT Source-Age: - '0' Strict-Transport-Security: @@ -123,21 +270,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - d3affd025fce45e51b81a973aaf6a781f5ff1375 + - 0c815a13e359fd0e1c1c6350baeb81ed3f9127d9 X-Frame-Options: - deny X-GitHub-Request-Id: - - D466:3459:4522E1:542B66:650DE796 + - A926:6AE7:36FC:46CF:65149AB4 X-Served-By: - - cache-den8262-DEN + - cache-lga21974-LGA X-Timer: - - S1695410072.237427,VS0,VE150 + - S1695849667.958879,VS0,VE77 X-XSS-Protection: - 1; mode=block status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example23].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example23].yaml new file mode 100644 index 000000000..f2e6dea00 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example23].yaml @@ -0,0 +1,379 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"core\": {\n + \ \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"stac_version\",\n \"id\",\n \"links\",\n + \ \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"cube\",\n \"datetime-range\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"sar\",\n \"scientific\"\n ]\n + \ }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n + \ },\n \"additionalProperties\": false\n },\n + \ \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"title\": \"Date and + Time\",\n \"description\": \"The searchable date/time of + the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n + \ \"title\": {\n \"title\": \"Item Title\",\n + \ \"description\": \"A human-readable title describing the + item.\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Item Licenses\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Organization + name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": + \"Organization roles\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n + \ ]\n }\n },\n + \ \"url\": {\n \"title\": \"Homepage\",\n + \ \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n + \ },\n \"created\": {\n \"title\": + \"Metadata created at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": + \"Metadata updated at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"type\": {\n + \ \"title\": \"Asset type\",\n \"type\": \"string\"\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '6074' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:07 GMT + ETag: + - '"4e24763d74f0d463b0cb6c63fc099e0b59447c7a049b93ffda4c6eb9eb54ae95"' + Expires: + - Wed, 27 Sep 2023 21:26:07 GMT + Source-Age: + - '11' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 7b8a991e8e65e432da1bf20aaf0647b591b92f3f + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 2630:09BA:1F7C:2D49:65149AB0 + X-Served-By: + - cache-lga21929-LGA + X-Timer: + - S1695849667.175102,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/extensions/checksum/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Checksum Extension Specification\",\n \"description\": + \"STAC Checksum Extension to a STAC Item\",\n \"allOf\": [\n {\n \"$ref\": + \"../../../item-spec/json-schema/item.json#/definitions/core\"\n },\n {\n + \ \"$ref\": \"#/definitions/checksum\"\n }\n ],\n \"definitions\": + {\n \"checksum\": {\n \"type\": \"object\",\n \"properties\": + {\n \"links\": {\n \"title\": \"Links\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/checksums\"\n + \ }\n },\n \"assets\": {\n \"title\": \"Assets\",\n + \ \"type\": \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/checksums\"\n }\n }\n + \ }\n }\n },\n \"checksums\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"checksum:md5\": {\n \"type\": + \"string\",\n \"pattern\": \"^[A-Fa-f0-9]{32}$\",\n \"title\": + \"MD5 checksum\"\n },\n \"checksum:sha1\": {\n \"type\": + \"string\",\n \"pattern\": \"^[A-Fa-f0-9]{40}$\",\n \"title\": + \"SHA1 checksum\"\n },\n \"checksum:sha2\": {\n \"type\": + \"string\",\n \"pattern\": \"^[A-Fa-f0-9]+$\",\n \"title\": + \"SHA2 checksum\"\n },\n \"checksum:sha3\": {\n \"type\": + \"string\",\n \"pattern\": \"^[A-Fa-f0-9]+$\",\n \"title\": + \"SHA3 checksum\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1469' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:07 GMT + ETag: + - '"ceed674cee48a43076989957b8a4f96d8acba3f52df1d52a3745e28225923aac"' + Expires: + - Wed, 27 Sep 2023 21:26:07 GMT + Source-Age: + - '10' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 34cd7ef5e2a0882dd819cb12a6bb0b0c693bf42c + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 5C96:822A:29A4:3A7F:65149AAF + X-Served-By: + - cache-lga21983-LGA + X-Timer: + - S1695849667.292940,VS0,VE49 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/extensions/sar/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"SAR Extension\",\n \"description\": \"STAC + SAR Extension to a STAC Item\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json#/definitions/core\"\n + \ },\n {\n \"$ref\": \"#/definitions/sar\"\n }\n ],\n \"definitions\": + {\n \"sar\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\"\n + \ ],\n \"properties\": {\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [\n \"sar:platform\",\n \"sar:instrument\",\n + \ \"sar:instrument_mode\",\n \"sar:frequency_band\",\n + \ \"sar:polarization\",\n \"sar:pass_direction\",\n \"sar:type\"\n + \ ],\n \"properties\": {\n \"sar:platform\": {\n + \ \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"sar:constellation\": {\n \"title\": + \"Constellation\",\n \"type\": \"string\"\n },\n \"sar:instrument\": + {\n \"title\": \"Instrument\",\n \"type\": \"string\"\n + \ },\n \"sar:instrument_mode\": {\n \"title\": + \"Instrument Mode\",\n \"type\": \"string\",\n \"example\": + \"WV\"\n },\n \"sar:frequency_band\": {\n \"title\": + \"Frequency Band\",\n \"type\": \"string\",\n \"enum\": + [\n \"P\",\n \"L\",\n \"S\",\n + \ \"C\",\n \"X\",\n \"Ku\",\n + \ \"K\",\n \"Ka\"\n ]\n },\n + \ \"sar:center_wavelength\": {\n \"title\": \"Center + Wavelength (cm)\",\n \"type\": \"number\"\n },\n \"sar:center_frequency\": + {\n \"title\": \"Center Wavelength (GHz)\",\n \"type\": + \"number\"\n },\n \"sar:polarization\": {\n \"title\": + \"Polarization\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"maxItems\": 4,\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"HH\",\n \"VV\",\n + \ \"HV\",\n \"VH\"\n ]\n }\n + \ },\n \"sar:bands\": {\n \"title\": \"Bands\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of + the band\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description + of the band\",\n \"type\": \"string\"\n },\n + \ \"data_type\": {\n \"title\": \"Data + type of the band\",\n \"type\": \"string\",\n \"examples\": + [\n \"amplitude\",\n \"intensity\",\n + \ \"phase\",\n \"angle\",\n \"sigma0\",\n + \ \"gamma0\"\n ]\n },\n + \ \"unit\": {\n \"title\": \"Unit of the + band\",\n \"type\": \"string\"\n },\n + \ \"polarization\": {\n \"title\": \"Polarization + of the band\",\n \"type\": [\n \"string\",\n + \ \"null\"\n ],\n \"enum\": + [\n \"HH\",\n \"VV\",\n \"HV\",\n + \ \"VH\",\n null\n ]\n + \ }\n }\n }\n },\n + \ \"sar:pass_direction\": {\n \"title\": \"Pass direction\",\n + \ \"type\": [\n \"string\",\n \"null\"\n + \ ],\n \"enum\": [\n \"ascending\",\n + \ \"descending\",\n null\n ]\n },\n + \ \"sar:type\": {\n \"title\": \"Product type\",\n + \ \"type\": \"string\",\n \"examples\": [\n \"RAW\",\n + \ \"GRD\",\n \"OCN\",\n \"SLC\"\n + \ ]\n },\n \"sar:resolution_range\": {\n + \ \"title\": \"Resolution range (m)\",\n \"type\": + \"number\",\n \"minimum\": 0\n },\n \"sar:resolution_azimuth\": + {\n \"title\": \"Resolution azimuth (m)\",\n \"type\": + \"number\",\n \"minimum\": 0\n },\n \"sar:pixel_spacing_range\": + {\n \"title\": \"Pixel spacing range (m)\",\n \"type\": + \"number\",\n \"minimum\": 0\n },\n \"sar:pixel_spacing_azimuth\": + {\n \"title\": \"Pixel spacing azimuth (m)\",\n \"type\": + \"number\",\n \"minimum\": 0\n },\n \"sar:looks_range\": + {\n \"title\": \"Looks range\",\n \"type\": \"integer\",\n + \ \"minimum\": 0\n },\n \"sar:looks_azimuth\": + {\n \"title\": \"Looks azimuth\",\n \"type\": \"integer\",\n + \ \"minimum\": 0\n },\n \"sar:looks_equivalent_number\": + {\n \"title\": \"Equivalent number of looks (ENL)\",\n \"type\": + \"number\",\n \"minimum\": 0\n },\n \"sar:observation_direction\": + {\n \"title\": \"Antenna pointing direction\",\n \"type\": + \"string\",\n \"enum\": [\n \"left\",\n \"right\"\n + \ ]\n },\n \"sar:absolute_orbit\": {\n \"title\": + \"Absolute orbit numbers\",\n \"type\": \"integer\",\n \"minimum\": + 0\n },\n \"sar:relative_orbit\": {\n \"type\": + \"integer\",\n \"minimum\": 1\n },\n \"sar:incidence_angle\": + {\n \"title\": \"Center incidence angle\",\n \"type\": + \"number\",\n \"minimum\": 0,\n \"maximum\": 90\n + \ }\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '6111' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:07 GMT + ETag: + - '"bd0d97e01404052bb35eda302935aea6ab05818f78d1970e785c7083dedc3bad"' + Expires: + - Wed, 27 Sep 2023 21:26:07 GMT + Source-Age: + - '0' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 55d7dbc84f39a915514ca56a74aee2da84e18b3c + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A926:6AE7:36FC:46CF:65149AB4 + X-Served-By: + - cache-lga21932-LGA + X-Timer: + - S1695849667.454969,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example24].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example24].yaml index f233e0247..554b85db3 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example24].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example24].yaml @@ -1,4 +1,231 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"checksum\",\n + \ \"scientific\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"version\": {\n \"title\": + \"Collection Version\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Homepage\",\n \"type\": \"string\",\n + \ \"format\": \"url\"\n }\n }\n }\n + \ },\n \"extent\": {\n \"title\": \"Extents\",\n \"type\": + \"object\",\n \"required\": [\n \"spatial\",\n \"temporal\"\n + \ ],\n \"properties\": {\n \"spatial\": {\n \"title\": + \"Spatial extent object\",\n \"type\": \"object\",\n \"required\": + [\n \"bbox\"\n ],\n \"properties\": + {\n \"bbox\": {\n \"title\": \"Spatial extents\",\n + \ \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"title\": \"Spatial extent\",\n + \ \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"properties\": {\n \"title\": \"Common properties\",\n \"type\": + \"object\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '4394' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:07 GMT + ETag: + - '"031974beaaaf6f0b5c6877dc97088d9e2aff3bc8962df33ff291dddded353f09"' + Expires: + - Wed, 27 Sep 2023 21:26:07 GMT + Source-Age: + - '12' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - d0186eeeb238fb4146e6373d3cefbea36f2c0829 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - D9DE:5675:4608:5765:65149AAF + X-Served-By: + - cache-lga21933-LGA + X-Timer: + - S1695849668.571292,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n },\n \"summaries\": {\n + \ \"$ref\": \"#/definitions/summaries\"\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": {\n \"min\": + {\n \"title\": \"Minimum value\",\n \"type\": + [\"number\", \"string\"]\n },\n \"max\": {\n \"title\": + \"Maximum value\",\n \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": \"Set of + values\",\n \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"description\": \"Any data type could + occur.\"\n }\n }\n ]\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2638' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:07 GMT + ETag: + - '"3b514933a3747f038125935624a13df108e30fe1cb8f9660a7f54ac6d4765ce9"' + Expires: + - Wed, 27 Sep 2023 21:26:07 GMT + Source-Age: + - '12' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 1daeb0ef9eb6bfd8e8d25c91894de89c6f842329 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 146A:2756:778FB:90182:65149AAF + X-Served-By: + - cache-lga21979-LGA + X-Timer: + - S1695849668.691390,VS0,VE6 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: body: null headers: @@ -53,11 +280,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:32 GMT + - Wed, 27 Sep 2023 21:21:07 GMT ETag: - '"13ff4323200a45e6acb12e649221282624758beb0a8f5b3a190160c2aa9d358a"' Expires: - - Fri, 22 Sep 2023 19:19:32 GMT + - Wed, 27 Sep 2023 21:26:07 GMT Source-Age: - '0' Strict-Transport-Security: @@ -67,21 +294,168 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - e9abe2d070d8bbe036b6e8d19ef21bc3a80e9734 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 6F72:822A:2A85:3BAB:65149AB7 + X-Served-By: + - cache-lga21976-LGA + X-Timer: + - S1695849668.807825,VS0,VE77 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"core\": {\n + \ \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"stac_version\",\n \"id\",\n \"links\",\n + \ \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"cube\",\n \"datetime-range\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"sar\",\n \"scientific\"\n ]\n + \ }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n + \ },\n \"additionalProperties\": false\n },\n + \ \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"title\": \"Date and + Time\",\n \"description\": \"The searchable date/time of + the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n + \ \"title\": {\n \"title\": \"Item Title\",\n + \ \"description\": \"A human-readable title describing the + item.\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Item Licenses\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Organization + name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": + \"Organization roles\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n + \ ]\n }\n },\n + \ \"url\": {\n \"title\": \"Homepage\",\n + \ \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n + \ },\n \"created\": {\n \"title\": + \"Metadata created at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": + \"Metadata updated at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"type\": {\n + \ \"title\": \"Asset type\",\n \"type\": \"string\"\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '6074' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:07 GMT + ETag: + - '"4e24763d74f0d463b0cb6c63fc099e0b59447c7a049b93ffda4c6eb9eb54ae95"' + Expires: + - Wed, 27 Sep 2023 21:26:07 GMT + Source-Age: + - '12' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 58322522d9568f6f7266bf7cb8f47d87ca5cd44c + - 9beea9a0cfbbe51a225f5950321840ed4ba62e83 X-Frame-Options: - deny X-GitHub-Request-Id: - - F63C:1128:35E4A6:41606A:650DE798 + - 2630:09BA:1F7C:2D49:65149AB0 X-Served-By: - - cache-den8250-DEN + - cache-lga21964-LGA X-Timer: - - S1695410073.503097,VS0,VE326 + - S1695849668.984524,VS0,VE2 X-XSS-Protection: - 1; mode=block status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example25].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example25].yaml new file mode 100644 index 000000000..ca3211eda --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example25].yaml @@ -0,0 +1,550 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"core\": {\n + \ \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"stac_version\",\n \"id\",\n \"links\",\n + \ \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"cube\",\n \"datetime-range\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"sar\",\n \"scientific\"\n ]\n + \ }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n + \ },\n \"additionalProperties\": false\n },\n + \ \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"title\": \"Date and + Time\",\n \"description\": \"The searchable date/time of + the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n + \ \"title\": {\n \"title\": \"Item Title\",\n + \ \"description\": \"A human-readable title describing the + item.\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Item Licenses\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Organization + name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": + \"Organization roles\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n + \ ]\n }\n },\n + \ \"url\": {\n \"title\": \"Homepage\",\n + \ \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n + \ },\n \"created\": {\n \"title\": + \"Metadata created at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": + \"Metadata updated at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"type\": {\n + \ \"title\": \"Asset type\",\n \"type\": \"string\"\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '6074' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:08 GMT + ETag: + - '"4e24763d74f0d463b0cb6c63fc099e0b59447c7a049b93ffda4c6eb9eb54ae95"' + Expires: + - Wed, 27 Sep 2023 21:26:08 GMT + Source-Age: + - '12' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - d6534b7b0b1ffb739851caf1a6d9960d1f05d1b5 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 2630:09BA:1F7C:2D49:65149AB0 + X-Served-By: + - cache-lga21924-LGA + X-Timer: + - S1695849668.104163,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/extensions/scientific/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Scientific Extension\",\n \"description\": + \"STAC Scientific Extension to STAC Items or STAC Collections.\",\n \"oneOf\": + [\n {\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"properties\"\n ],\n \"properties\": {\n + \ \"properties\": {\n \"$ref\": \"#/definitions/scientific\"\n + \ }\n }\n }\n ]\n },\n {\n \"allOf\": + [\n {\n \"$ref\": \"../../../collection-spec/json-schema/collection.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/scientific\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"scientific\": + {\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^(10[.][0-9]{4,}(?:[.][0-9]+)*/(?:(?![%\\\"#? ])\\\\S)+)$\"\n }, + \n \"sci:citation\": {\n \"type\": \"string\", \n \"title\": + \"Proposed Data Citation\"\n },\n \"sci:publications\": {\n + \ \"type\": \"array\",\n \"title\": \"Publications\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^(10[.][0-9]{4,}(?:[.][0-9]+)*/(?:(?![%\\\"#? + ])\\\\S)+)$\"\n }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1692' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:08 GMT + ETag: + - '"13ff4323200a45e6acb12e649221282624758beb0a8f5b3a190160c2aa9d358a"' + Expires: + - Wed, 27 Sep 2023 21:26:08 GMT + Source-Age: + - '0' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 129cb6fda365e9b97d79ce81725bab49070dce9f + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 6F72:822A:2A85:3BAB:65149AB7 + X-Served-By: + - cache-lga21942-LGA + X-Timer: + - S1695849668.225501,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"checksum\",\n + \ \"scientific\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"version\": {\n \"title\": + \"Collection Version\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Homepage\",\n \"type\": \"string\",\n + \ \"format\": \"url\"\n }\n }\n }\n + \ },\n \"extent\": {\n \"title\": \"Extents\",\n \"type\": + \"object\",\n \"required\": [\n \"spatial\",\n \"temporal\"\n + \ ],\n \"properties\": {\n \"spatial\": {\n \"title\": + \"Spatial extent object\",\n \"type\": \"object\",\n \"required\": + [\n \"bbox\"\n ],\n \"properties\": + {\n \"bbox\": {\n \"title\": \"Spatial extents\",\n + \ \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"title\": \"Spatial extent\",\n + \ \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"properties\": {\n \"title\": \"Common properties\",\n \"type\": + \"object\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '4394' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:08 GMT + ETag: + - '"031974beaaaf6f0b5c6877dc97088d9e2aff3bc8962df33ff291dddded353f09"' + Expires: + - Wed, 27 Sep 2023 21:26:08 GMT + Source-Age: + - '12' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 9e0a74f76f3d30e42a7d0c6c81639709b7e79b9f + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - D9DE:5675:4608:5765:65149AAF + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849668.325111,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n },\n \"summaries\": {\n + \ \"$ref\": \"#/definitions/summaries\"\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": {\n \"min\": + {\n \"title\": \"Minimum value\",\n \"type\": + [\"number\", \"string\"]\n },\n \"max\": {\n \"title\": + \"Maximum value\",\n \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": \"Set of + values\",\n \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"description\": \"Any data type could + occur.\"\n }\n }\n ]\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2638' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:08 GMT + ETag: + - '"3b514933a3747f038125935624a13df108e30fe1cb8f9660a7f54ac6d4765ce9"' + Expires: + - Wed, 27 Sep 2023 21:26:08 GMT + Source-Age: + - '13' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 0f9839028deb214ca2b881bbb8b3ede5886a5d09 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 146A:2756:778FB:90182:65149AAF + X-Served-By: + - cache-lga21921-LGA + X-Timer: + - S1695849668.423786,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/extensions/checksum/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Checksum Extension Specification\",\n \"description\": + \"STAC Checksum Extension to a STAC Item\",\n \"allOf\": [\n {\n \"$ref\": + \"../../../item-spec/json-schema/item.json#/definitions/core\"\n },\n {\n + \ \"$ref\": \"#/definitions/checksum\"\n }\n ],\n \"definitions\": + {\n \"checksum\": {\n \"type\": \"object\",\n \"properties\": + {\n \"links\": {\n \"title\": \"Links\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/checksums\"\n + \ }\n },\n \"assets\": {\n \"title\": \"Assets\",\n + \ \"type\": \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/checksums\"\n }\n }\n + \ }\n }\n },\n \"checksums\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"checksum:md5\": {\n \"type\": + \"string\",\n \"pattern\": \"^[A-Fa-f0-9]{32}$\",\n \"title\": + \"MD5 checksum\"\n },\n \"checksum:sha1\": {\n \"type\": + \"string\",\n \"pattern\": \"^[A-Fa-f0-9]{40}$\",\n \"title\": + \"SHA1 checksum\"\n },\n \"checksum:sha2\": {\n \"type\": + \"string\",\n \"pattern\": \"^[A-Fa-f0-9]+$\",\n \"title\": + \"SHA2 checksum\"\n },\n \"checksum:sha3\": {\n \"type\": + \"string\",\n \"pattern\": \"^[A-Fa-f0-9]+$\",\n \"title\": + \"SHA3 checksum\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1469' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:08 GMT + ETag: + - '"ceed674cee48a43076989957b8a4f96d8acba3f52df1d52a3745e28225923aac"' + Expires: + - Wed, 27 Sep 2023 21:26:08 GMT + Source-Age: + - '11' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 4bb90c6e3c1dcc6fd06a6bf3265dd0f70757a543 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 5C96:822A:29A4:3A7F:65149AAF + X-Served-By: + - cache-lga21972-LGA + X-Timer: + - S1695849669.533867,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example26].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example26].yaml new file mode 100644 index 000000000..d6f16fe25 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example26].yaml @@ -0,0 +1,257 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"core\": {\n + \ \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"stac_version\",\n \"id\",\n \"links\",\n + \ \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"cube\",\n \"datetime-range\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"sar\",\n \"scientific\"\n ]\n + \ }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n + \ },\n \"additionalProperties\": false\n },\n + \ \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"title\": \"Date and + Time\",\n \"description\": \"The searchable date/time of + the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n + \ \"title\": {\n \"title\": \"Item Title\",\n + \ \"description\": \"A human-readable title describing the + item.\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Item Licenses\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Organization + name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": + \"Organization roles\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n + \ ]\n }\n },\n + \ \"url\": {\n \"title\": \"Homepage\",\n + \ \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n + \ },\n \"created\": {\n \"title\": + \"Metadata created at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": + \"Metadata updated at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"type\": {\n + \ \"title\": \"Asset type\",\n \"type\": \"string\"\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '6074' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:08 GMT + ETag: + - '"4e24763d74f0d463b0cb6c63fc099e0b59447c7a049b93ffda4c6eb9eb54ae95"' + Expires: + - Wed, 27 Sep 2023 21:26:08 GMT + Source-Age: + - '12' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 5cd03e7a9addc385b6bf0dad5f71251821875207 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 2630:09BA:1F7C:2D49:65149AB0 + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849669.663328,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/extensions/eo/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"EO Extension\",\n \"description\": \"STAC + EO Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json#/definitions/core\"\n + \ },\n {\n \"$ref\": \"#/definitions/eo\"\n }\n ],\n \"definitions\": + {\n \"eo\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\"\n + \ ],\n \"properties\": {\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [\n \"eo:gsd\",\n \"eo:platform\",\n + \ \"eo:instrument\",\n \"eo:bands\"\n ],\n \"properties\": + {\n \"eo:gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n },\n \"eo:platform\": + {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"eo:constellation\": {\n \"title\": + \"Constellation\",\n \"type\": \"string\"\n },\n \"eo:instrument\": + {\n \"title\": \"Instrument\",\n \"type\": \"string\"\n + \ },\n \"eo:bands\": {\n \"title\": \"Bands\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of + the band\",\n \"type\": \"string\"\n },\n + \ \"common_name\": {\n \"title\": \"Common + Name of the band\",\n \"type\": \"string\"\n },\n + \ \"gsd\": {\n \"title\": \"Ground Sample + Distance\",\n \"type\": \"number\"\n },\n + \ \"accuracy\": {\n \"title\": \"Accuracy\",\n + \ \"type\": \"number\"\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": + \"number\"\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\"\n }\n }\n }\n },\n + \ \"eo:epsg\": {\n \"title\": \"EPSG code\",\n \"type\": + [\n \"integer\",\n \"null\"\n ]\n + \ },\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n + \ \"eo:azimuth\": {\n \"title\": \"Azimuth\",\n \"type\": + \"number\",\n \"minimum\": 0,\n \"maximum\": 360\n + \ },\n \"eo:sun_azimuth\": {\n \"title\": + \"Sun Azimuth\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 360\n },\n \"eo:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n }\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '3245' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:08 GMT + ETag: + - '"c8576d5ea3fcee4039dcddbdcf9e59fed3f3086419a33aa96f18f4617203b76d"' + Expires: + - Wed, 27 Sep 2023 21:26:08 GMT + Source-Age: + - '12' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 12cc661024f467cf7d2ecd8dd180b9ec868e4b3a + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 6F72:822A:2999:3A71:65149AAF + X-Served-By: + - cache-lga21969-LGA + X-Timer: + - S1695849669.786652,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example27].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example27].yaml new file mode 100644 index 000000000..388e6c041 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example27].yaml @@ -0,0 +1,257 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"core\": {\n + \ \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"stac_version\",\n \"id\",\n \"links\",\n + \ \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"cube\",\n \"datetime-range\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"sar\",\n \"scientific\"\n ]\n + \ }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n + \ },\n \"additionalProperties\": false\n },\n + \ \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"title\": \"Date and + Time\",\n \"description\": \"The searchable date/time of + the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n + \ \"title\": {\n \"title\": \"Item Title\",\n + \ \"description\": \"A human-readable title describing the + item.\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Item Licenses\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Organization + name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": + \"Organization roles\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n + \ ]\n }\n },\n + \ \"url\": {\n \"title\": \"Homepage\",\n + \ \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n + \ },\n \"created\": {\n \"title\": + \"Metadata created at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": + \"Metadata updated at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"type\": {\n + \ \"title\": \"Asset type\",\n \"type\": \"string\"\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '6074' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:08 GMT + ETag: + - '"4e24763d74f0d463b0cb6c63fc099e0b59447c7a049b93ffda4c6eb9eb54ae95"' + Expires: + - Wed, 27 Sep 2023 21:26:08 GMT + Source-Age: + - '13' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - c726ebcb03098b15352132d3e1f975ba4d532bda + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 2630:09BA:1F7C:2D49:65149AB0 + X-Served-By: + - cache-lga21982-LGA + X-Timer: + - S1695849669.930345,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/extensions/eo/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"EO Extension\",\n \"description\": \"STAC + EO Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json#/definitions/core\"\n + \ },\n {\n \"$ref\": \"#/definitions/eo\"\n }\n ],\n \"definitions\": + {\n \"eo\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\"\n + \ ],\n \"properties\": {\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [\n \"eo:gsd\",\n \"eo:platform\",\n + \ \"eo:instrument\",\n \"eo:bands\"\n ],\n \"properties\": + {\n \"eo:gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n },\n \"eo:platform\": + {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"eo:constellation\": {\n \"title\": + \"Constellation\",\n \"type\": \"string\"\n },\n \"eo:instrument\": + {\n \"title\": \"Instrument\",\n \"type\": \"string\"\n + \ },\n \"eo:bands\": {\n \"title\": \"Bands\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of + the band\",\n \"type\": \"string\"\n },\n + \ \"common_name\": {\n \"title\": \"Common + Name of the band\",\n \"type\": \"string\"\n },\n + \ \"gsd\": {\n \"title\": \"Ground Sample + Distance\",\n \"type\": \"number\"\n },\n + \ \"accuracy\": {\n \"title\": \"Accuracy\",\n + \ \"type\": \"number\"\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": + \"number\"\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\"\n }\n }\n }\n },\n + \ \"eo:epsg\": {\n \"title\": \"EPSG code\",\n \"type\": + [\n \"integer\",\n \"null\"\n ]\n + \ },\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n + \ \"eo:azimuth\": {\n \"title\": \"Azimuth\",\n \"type\": + \"number\",\n \"minimum\": 0,\n \"maximum\": 360\n + \ },\n \"eo:sun_azimuth\": {\n \"title\": + \"Sun Azimuth\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 360\n },\n \"eo:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n }\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '3245' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:09 GMT + ETag: + - '"c8576d5ea3fcee4039dcddbdcf9e59fed3f3086419a33aa96f18f4617203b76d"' + Expires: + - Wed, 27 Sep 2023 21:26:09 GMT + Source-Age: + - '13' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 4b55bf3be32ba6852063293e2c79c5db44ad88e0 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 6F72:822A:2999:3A71:65149AAF + X-Served-By: + - cache-lga21937-LGA + X-Timer: + - S1695849669.043681,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example28].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example28].yaml new file mode 100644 index 000000000..601feb4bd --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example28].yaml @@ -0,0 +1,257 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"core\": {\n + \ \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"stac_version\",\n \"id\",\n \"links\",\n + \ \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"cube\",\n \"datetime-range\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"sar\",\n \"scientific\"\n ]\n + \ }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n + \ },\n \"additionalProperties\": false\n },\n + \ \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"title\": \"Date and + Time\",\n \"description\": \"The searchable date/time of + the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n + \ \"title\": {\n \"title\": \"Item Title\",\n + \ \"description\": \"A human-readable title describing the + item.\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Item Licenses\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Organization + name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": + \"Organization roles\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n + \ ]\n }\n },\n + \ \"url\": {\n \"title\": \"Homepage\",\n + \ \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n + \ },\n \"created\": {\n \"title\": + \"Metadata created at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": + \"Metadata updated at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"type\": {\n + \ \"title\": \"Asset type\",\n \"type\": \"string\"\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '6074' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:09 GMT + ETag: + - '"4e24763d74f0d463b0cb6c63fc099e0b59447c7a049b93ffda4c6eb9eb54ae95"' + Expires: + - Wed, 27 Sep 2023 21:26:09 GMT + Source-Age: + - '13' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - cce0a9f24a08ac191594427e4ba90aea5536dca0 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 2630:09BA:1F7C:2D49:65149AB0 + X-Served-By: + - cache-lga21982-LGA + X-Timer: + - S1695849669.158769,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/extensions/eo/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"EO Extension\",\n \"description\": \"STAC + EO Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json#/definitions/core\"\n + \ },\n {\n \"$ref\": \"#/definitions/eo\"\n }\n ],\n \"definitions\": + {\n \"eo\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\"\n + \ ],\n \"properties\": {\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [\n \"eo:gsd\",\n \"eo:platform\",\n + \ \"eo:instrument\",\n \"eo:bands\"\n ],\n \"properties\": + {\n \"eo:gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n },\n \"eo:platform\": + {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"eo:constellation\": {\n \"title\": + \"Constellation\",\n \"type\": \"string\"\n },\n \"eo:instrument\": + {\n \"title\": \"Instrument\",\n \"type\": \"string\"\n + \ },\n \"eo:bands\": {\n \"title\": \"Bands\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of + the band\",\n \"type\": \"string\"\n },\n + \ \"common_name\": {\n \"title\": \"Common + Name of the band\",\n \"type\": \"string\"\n },\n + \ \"gsd\": {\n \"title\": \"Ground Sample + Distance\",\n \"type\": \"number\"\n },\n + \ \"accuracy\": {\n \"title\": \"Accuracy\",\n + \ \"type\": \"number\"\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": + \"number\"\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\"\n }\n }\n }\n },\n + \ \"eo:epsg\": {\n \"title\": \"EPSG code\",\n \"type\": + [\n \"integer\",\n \"null\"\n ]\n + \ },\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n + \ \"eo:azimuth\": {\n \"title\": \"Azimuth\",\n \"type\": + \"number\",\n \"minimum\": 0,\n \"maximum\": 360\n + \ },\n \"eo:sun_azimuth\": {\n \"title\": + \"Sun Azimuth\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 360\n },\n \"eo:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n }\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '3245' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:09 GMT + ETag: + - '"c8576d5ea3fcee4039dcddbdcf9e59fed3f3086419a33aa96f18f4617203b76d"' + Expires: + - Wed, 27 Sep 2023 21:26:09 GMT + Source-Age: + - '13' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - cc80d64b76cce3b0585370835c280534a3241c39 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 6F72:822A:2999:3A71:65149AAF + X-Served-By: + - cache-lga21928-LGA + X-Timer: + - S1695849669.257835,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example29].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example29].yaml new file mode 100644 index 000000000..085af3b26 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example29].yaml @@ -0,0 +1,257 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"core\": {\n + \ \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"stac_version\",\n \"id\",\n \"links\",\n + \ \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"cube\",\n \"datetime-range\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"sar\",\n \"scientific\"\n ]\n + \ }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n + \ },\n \"additionalProperties\": false\n },\n + \ \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"title\": \"Date and + Time\",\n \"description\": \"The searchable date/time of + the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n + \ \"title\": {\n \"title\": \"Item Title\",\n + \ \"description\": \"A human-readable title describing the + item.\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Item Licenses\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Organization + name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": + \"Organization roles\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n + \ ]\n }\n },\n + \ \"url\": {\n \"title\": \"Homepage\",\n + \ \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n + \ },\n \"created\": {\n \"title\": + \"Metadata created at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": + \"Metadata updated at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"type\": {\n + \ \"title\": \"Asset type\",\n \"type\": \"string\"\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '6074' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:09 GMT + ETag: + - '"4e24763d74f0d463b0cb6c63fc099e0b59447c7a049b93ffda4c6eb9eb54ae95"' + Expires: + - Wed, 27 Sep 2023 21:26:09 GMT + Source-Age: + - '13' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - b85ef28b987f1f5d0367ee63bbd8c7c72f0f48af + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 2630:09BA:1F7C:2D49:65149AB0 + X-Served-By: + - cache-lga21979-LGA + X-Timer: + - S1695849669.396657,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/extensions/eo/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"EO Extension\",\n \"description\": \"STAC + EO Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json#/definitions/core\"\n + \ },\n {\n \"$ref\": \"#/definitions/eo\"\n }\n ],\n \"definitions\": + {\n \"eo\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\"\n + \ ],\n \"properties\": {\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [\n \"eo:gsd\",\n \"eo:platform\",\n + \ \"eo:instrument\",\n \"eo:bands\"\n ],\n \"properties\": + {\n \"eo:gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n },\n \"eo:platform\": + {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"eo:constellation\": {\n \"title\": + \"Constellation\",\n \"type\": \"string\"\n },\n \"eo:instrument\": + {\n \"title\": \"Instrument\",\n \"type\": \"string\"\n + \ },\n \"eo:bands\": {\n \"title\": \"Bands\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of + the band\",\n \"type\": \"string\"\n },\n + \ \"common_name\": {\n \"title\": \"Common + Name of the band\",\n \"type\": \"string\"\n },\n + \ \"gsd\": {\n \"title\": \"Ground Sample + Distance\",\n \"type\": \"number\"\n },\n + \ \"accuracy\": {\n \"title\": \"Accuracy\",\n + \ \"type\": \"number\"\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": + \"number\"\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\"\n }\n }\n }\n },\n + \ \"eo:epsg\": {\n \"title\": \"EPSG code\",\n \"type\": + [\n \"integer\",\n \"null\"\n ]\n + \ },\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n + \ \"eo:azimuth\": {\n \"title\": \"Azimuth\",\n \"type\": + \"number\",\n \"minimum\": 0,\n \"maximum\": 360\n + \ },\n \"eo:sun_azimuth\": {\n \"title\": + \"Sun Azimuth\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 360\n },\n \"eo:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n }\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '3245' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:09 GMT + ETag: + - '"c8576d5ea3fcee4039dcddbdcf9e59fed3f3086419a33aa96f18f4617203b76d"' + Expires: + - Wed, 27 Sep 2023 21:26:09 GMT + Source-Age: + - '13' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 2fcaf7bfc39491723018809a3227fab38738503d + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 6F72:822A:2999:3A71:65149AAF + X-Served-By: + - cache-lga21964-LGA + X-Timer: + - S1695849670.509498,VS0,VE7 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example2].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example2].yaml index 74ca56121..905d6ca77 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example2].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example2].yaml @@ -89,11 +89,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:24 GMT + - Wed, 27 Sep 2023 21:20:55 GMT ETag: - '"031974beaaaf6f0b5c6877dc97088d9e2aff3bc8962df33ff291dddded353f09"' Expires: - - Fri, 22 Sep 2023 19:19:24 GMT + - Wed, 27 Sep 2023 21:25:55 GMT Source-Age: - '0' Strict-Transport-Security: @@ -103,21 +103,124 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - f52fd67cefa5a1c29ecd7fabed83ee2f5f5f71b1 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - D9DE:5675:4608:5765:65149AAF + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849656.839280,VS0,VE92 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n },\n \"summaries\": {\n + \ \"$ref\": \"#/definitions/summaries\"\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": {\n \"min\": + {\n \"title\": \"Minimum value\",\n \"type\": + [\"number\", \"string\"]\n },\n \"max\": {\n \"title\": + \"Maximum value\",\n \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": \"Set of + values\",\n \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"description\": \"Any data type could + occur.\"\n }\n }\n ]\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2638' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:20:56 GMT + ETag: + - '"3b514933a3747f038125935624a13df108e30fe1cb8f9660a7f54ac6d4765ce9"' + Expires: + - Wed, 27 Sep 2023 21:25:56 GMT + Source-Age: - '0' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 6b9d8db1230f196f778aa9d05b1575f159061bdb + - eaa001ca74652e590bb14c1273d38eb3a8426bc6 X-Frame-Options: - deny X-GitHub-Request-Id: - - 8CFA:69B9:34FF9C:3FDB01:650DE78D + - 146A:2756:778FB:90182:65149AAF X-Served-By: - - cache-den8282-DEN + - cache-lga21920-LGA X-Timer: - - S1695410065.662307,VS0,VE141 + - S1695849656.038970,VS0,VE1 X-XSS-Protection: - 1; mode=block status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example30].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example30].yaml new file mode 100644 index 000000000..ab6925505 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example30].yaml @@ -0,0 +1,149 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"core\": {\n + \ \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"stac_version\",\n \"id\",\n \"links\",\n + \ \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"cube\",\n \"datetime-range\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"sar\",\n \"scientific\"\n ]\n + \ }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n + \ },\n \"additionalProperties\": false\n },\n + \ \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"title\": \"Date and + Time\",\n \"description\": \"The searchable date/time of + the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n + \ \"title\": {\n \"title\": \"Item Title\",\n + \ \"description\": \"A human-readable title describing the + item.\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Item Licenses\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Organization + name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": + \"Organization roles\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n + \ ]\n }\n },\n + \ \"url\": {\n \"title\": \"Homepage\",\n + \ \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n + \ },\n \"created\": {\n \"title\": + \"Metadata created at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": + \"Metadata updated at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"type\": {\n + \ \"title\": \"Asset type\",\n \"type\": \"string\"\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '6074' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:09 GMT + ETag: + - '"4e24763d74f0d463b0cb6c63fc099e0b59447c7a049b93ffda4c6eb9eb54ae95"' + Expires: + - Wed, 27 Sep 2023 21:26:09 GMT + Source-Age: + - '13' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 2debdc718e3003048d88c7914802d354d7652111 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 2630:09BA:1F7C:2D49:65149AB0 + X-Served-By: + - cache-lga21976-LGA + X-Timer: + - S1695849670.628863,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example31].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example31].yaml new file mode 100644 index 000000000..c1e73da7b --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example31].yaml @@ -0,0 +1,257 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"core\": {\n + \ \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"stac_version\",\n \"id\",\n \"links\",\n + \ \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"cube\",\n \"datetime-range\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"sar\",\n \"scientific\"\n ]\n + \ }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n + \ },\n \"additionalProperties\": false\n },\n + \ \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"title\": \"Date and + Time\",\n \"description\": \"The searchable date/time of + the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n + \ \"title\": {\n \"title\": \"Item Title\",\n + \ \"description\": \"A human-readable title describing the + item.\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Item Licenses\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Organization + name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": + \"Organization roles\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n + \ ]\n }\n },\n + \ \"url\": {\n \"title\": \"Homepage\",\n + \ \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n + \ },\n \"created\": {\n \"title\": + \"Metadata created at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": + \"Metadata updated at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"type\": {\n + \ \"title\": \"Asset type\",\n \"type\": \"string\"\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '6074' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:09 GMT + ETag: + - '"4e24763d74f0d463b0cb6c63fc099e0b59447c7a049b93ffda4c6eb9eb54ae95"' + Expires: + - Wed, 27 Sep 2023 21:26:09 GMT + Source-Age: + - '13' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 980862c902630de76fff3f788610ce60bd39c6ec + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 2630:09BA:1F7C:2D49:65149AB0 + X-Served-By: + - cache-lga21979-LGA + X-Timer: + - S1695849670.740914,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/extensions/eo/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"EO Extension\",\n \"description\": \"STAC + EO Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json#/definitions/core\"\n + \ },\n {\n \"$ref\": \"#/definitions/eo\"\n }\n ],\n \"definitions\": + {\n \"eo\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\"\n + \ ],\n \"properties\": {\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [\n \"eo:gsd\",\n \"eo:platform\",\n + \ \"eo:instrument\",\n \"eo:bands\"\n ],\n \"properties\": + {\n \"eo:gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n },\n \"eo:platform\": + {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"eo:constellation\": {\n \"title\": + \"Constellation\",\n \"type\": \"string\"\n },\n \"eo:instrument\": + {\n \"title\": \"Instrument\",\n \"type\": \"string\"\n + \ },\n \"eo:bands\": {\n \"title\": \"Bands\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of + the band\",\n \"type\": \"string\"\n },\n + \ \"common_name\": {\n \"title\": \"Common + Name of the band\",\n \"type\": \"string\"\n },\n + \ \"gsd\": {\n \"title\": \"Ground Sample + Distance\",\n \"type\": \"number\"\n },\n + \ \"accuracy\": {\n \"title\": \"Accuracy\",\n + \ \"type\": \"number\"\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": + \"number\"\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\"\n }\n }\n }\n },\n + \ \"eo:epsg\": {\n \"title\": \"EPSG code\",\n \"type\": + [\n \"integer\",\n \"null\"\n ]\n + \ },\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n + \ \"eo:azimuth\": {\n \"title\": \"Azimuth\",\n \"type\": + \"number\",\n \"minimum\": 0,\n \"maximum\": 360\n + \ },\n \"eo:sun_azimuth\": {\n \"title\": + \"Sun Azimuth\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 360\n },\n \"eo:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n }\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '3245' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:09 GMT + ETag: + - '"c8576d5ea3fcee4039dcddbdcf9e59fed3f3086419a33aa96f18f4617203b76d"' + Expires: + - Wed, 27 Sep 2023 21:26:09 GMT + Source-Age: + - '13' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - fea74d2cbfd5d3298a47794bc893b098baff19ad + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 6F72:822A:2999:3A71:65149AAF + X-Served-By: + - cache-lga21933-LGA + X-Timer: + - S1695849670.841661,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example32].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example32].yaml index 3abac7c33..3bd48d2e6 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example32].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example32].yaml @@ -56,11 +56,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:33 GMT + - Wed, 27 Sep 2023 21:21:10 GMT ETag: - '"c76fd44b22619705d40fb03a5b1d875e2e786f9ac7a85244758d15cc7cc947a9"' Expires: - - Fri, 22 Sep 2023 19:19:33 GMT + - Wed, 27 Sep 2023 21:26:10 GMT Source-Age: - '0' Strict-Transport-Security: @@ -70,21 +70,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 75fff52bc0269909fed3dd75f82531abb101837e + - b89088f6dd9dc83d33022b599cdc1ce99beb898f X-Frame-Options: - deny X-GitHub-Request-Id: - - 27FE:25E4:461A58:5523FF:650DE796 + - A566:10B3:511A:6368:65149AB6 X-Served-By: - - cache-den8254-DEN + - cache-lga21921-LGA X-Timer: - - S1695410073.038404,VS0,VE147 + - S1695849670.967198,VS0,VE79 X-XSS-Protection: - 1; mode=block status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example33].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example33].yaml index 7efe30b9e..890c31317 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example33].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example33].yaml @@ -100,11 +100,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:33 GMT + - Wed, 27 Sep 2023 21:21:10 GMT ETag: - '"efa6309742b904ab7b06bab4c30c3ea2e1ce78163892365a7f4ee461716396b3"' Expires: - - Fri, 22 Sep 2023 19:19:33 GMT + - Wed, 27 Sep 2023 21:26:10 GMT Source-Age: - '0' Strict-Transport-Security: @@ -114,21 +114,112 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - ad63cbe19f8133ff09419e7074af718fdf421fed + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - BC5C:6DEB:5AD5:6D2C:65149AB5 + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849670.177273,VS0,VE113 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1766' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:10 GMT + ETag: + - '"c76fd44b22619705d40fb03a5b1d875e2e786f9ac7a85244758d15cc7cc947a9"' + Expires: + - Wed, 27 Sep 2023 21:26:10 GMT + Source-Age: - '0' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 780eef44026f92f224fde1c6472eb1063dd00216 + - 1425d790368c1cf6c3af6c1dfbe008ca906601b2 X-Frame-Options: - deny X-GitHub-Request-Id: - - 8E7A:17E3:40DD9D:4FE560:650DE798 + - A566:10B3:511A:6368:65149AB6 X-Served-By: - - cache-den8235-DEN + - cache-lga21942-LGA X-Timer: - - S1695410073.275928,VS0,VE151 + - S1695849670.416881,VS0,VE1 X-XSS-Protection: - 1; mode=block status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example34].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example34].yaml index f869b2532..9f007d2df 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example34].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example34].yaml @@ -100,11 +100,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:33 GMT + - Wed, 27 Sep 2023 21:21:10 GMT ETag: - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' Expires: - - Fri, 22 Sep 2023 19:19:33 GMT + - Wed, 27 Sep 2023 21:26:10 GMT Source-Age: - '0' Strict-Transport-Security: @@ -114,21 +114,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 234ce8449f861a373dee499ee87393a68c3d0eba + - 1d83ee432e3173206cf7c89409ab8ad40fa3dfef X-Frame-Options: - deny X-GitHub-Request-Id: - - FF34:7E56:3E07F6:4D1300:650DE797 + - 80C0:9989:4651:58BD:65149AB8 X-Served-By: - - cache-den8274-DEN + - cache-lga21924-LGA X-Timer: - - S1695410074.541574,VS0,VE132 + - S1695849671.556673,VS0,VE75 X-XSS-Protection: - 1; mode=block status: @@ -172,11 +172,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:33 GMT + - Wed, 27 Sep 2023 21:21:10 GMT ETag: - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' Expires: - - Fri, 22 Sep 2023 19:19:33 GMT + - Wed, 27 Sep 2023 21:26:10 GMT Source-Age: - '0' Strict-Transport-Security: @@ -186,21 +186,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - b17554e1ee7e6c325e7ffbc10ed187617d5c27e6 + - cfce713286418065599fae579002a0f71ea5205f X-Frame-Options: - deny X-GitHub-Request-Id: - - 7500:2000:442949:53314B:650DE799 + - 7904:9289:1DB2:2B65:65149AB8 X-Served-By: - - cache-den8276-DEN + - cache-lga21982-LGA X-Timer: - - S1695410074.782606,VS0,VE138 + - S1695849671.743418,VS0,VE66 X-XSS-Protection: - 1; mode=block status: @@ -249,11 +249,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:34 GMT + - Wed, 27 Sep 2023 21:21:11 GMT ETag: - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' Expires: - - Fri, 22 Sep 2023 19:19:34 GMT + - Wed, 27 Sep 2023 21:26:11 GMT Source-Age: - '0' Strict-Transport-Security: @@ -263,21 +263,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - c56918c31ee6968624406a58dd5fb9dd1adbc017 + - ab7382825c240a6d536011d6617467ed264f0a06 X-Frame-Options: - deny X-GitHub-Request-Id: - - D0C8:6DE2:4155B3:505F2B:650DE799 + - F4CA:822A:2AB6:3BEA:65149AB9 X-Served-By: - - cache-den8236-DEN + - cache-lga21969-LGA X-Timer: - - S1695410074.023284,VS0,VE151 + - S1695849671.920646,VS0,VE84 X-XSS-Protection: - 1; mode=block status: @@ -322,11 +322,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:34 GMT + - Wed, 27 Sep 2023 21:21:11 GMT ETag: - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' Expires: - - Fri, 22 Sep 2023 19:19:34 GMT + - Wed, 27 Sep 2023 21:26:11 GMT Source-Age: - '0' Strict-Transport-Security: @@ -336,21 +336,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 504554ffd4e2b5226e751e98721c109f4a5703b3 + - f6bd02ba5ac3d9159abc328ad00a203ae0e74de3 X-Frame-Options: - deny X-GitHub-Request-Id: - - 6488:43B8:478A63:569291:650DE799 + - 351C:3EC2:4601:584F:65149AB9 X-Served-By: - - cache-den8246-DEN + - cache-lga21927-LGA X-Timer: - - S1695410074.292190,VS0,VE127 + - S1695849671.098332,VS0,VE82 X-XSS-Protection: - 1; mode=block status: @@ -391,11 +391,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:34 GMT + - Wed, 27 Sep 2023 21:21:11 GMT ETag: - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' Expires: - - Fri, 22 Sep 2023 19:19:34 GMT + - Wed, 27 Sep 2023 21:26:11 GMT Source-Age: - '0' Strict-Transport-Security: @@ -405,21 +405,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 5860b48ee81420930131ebac6385a2f981d19bc3 + - 02325c5aa192fbbe500937a3fbd432acd777df05 X-Frame-Options: - deny X-GitHub-Request-Id: - - 4FE2:1717:4CA478:5BAC9C:650DE79A + - 0DF8:9989:4669:58DD:65149AB9 X-Served-By: - - cache-den8275-DEN + - cache-lga21973-LGA X-Timer: - - S1695410075.533008,VS0,VE144 + - S1695849671.280954,VS0,VE94 X-XSS-Protection: - 1; mode=block status: @@ -462,11 +462,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:34 GMT + - Wed, 27 Sep 2023 21:21:11 GMT ETag: - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' Expires: - - Fri, 22 Sep 2023 19:19:34 GMT + - Wed, 27 Sep 2023 21:26:11 GMT Source-Age: - '0' Strict-Transport-Security: @@ -476,21 +476,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 42a132f15b4b37d23025a74b76d3c44ee240ee0c + - a21b9718a2f4dceccaf284c193ca94ee9b2de40a X-Frame-Options: - deny X-GitHub-Request-Id: - - 54CA:2EE9:46864F:558F59:650DE79A + - DE6A:152E:1D56:2AF7:65149AB9 X-Served-By: - - cache-den8280-DEN + - cache-lga21979-LGA X-Timer: - - S1695410075.784376,VS0,VE135 + - S1695849671.478032,VS0,VE101 X-XSS-Protection: - 1; mode=block status: @@ -541,11 +541,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:35 GMT + - Wed, 27 Sep 2023 21:21:11 GMT ETag: - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' Expires: - - Fri, 22 Sep 2023 19:19:35 GMT + - Wed, 27 Sep 2023 21:26:11 GMT Source-Age: - '0' Strict-Transport-Security: @@ -555,21 +555,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 0f67a1c91202b729ab39d84668122f847c04a9fa + - 537a547c8c8e76f0f654eff3cae063e338a65b90 X-Frame-Options: - deny X-GitHub-Request-Id: - - 45CA:146E:458BAF:5493FE:650DE79A + - CC28:19A7:5ED4:7137:65149AB9 X-Served-By: - - cache-den8269-DEN + - cache-lga21927-LGA X-Timer: - - S1695410075.039004,VS0,VE144 + - S1695849672.691873,VS0,VE68 X-XSS-Protection: - 1; mode=block status: @@ -636,11 +636,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:35 GMT + - Wed, 27 Sep 2023 21:21:11 GMT ETag: - '"4ce0628a6b4d2c8e80ff67d116b60196c8f9d0a017a63b3557ebd6b46f42dfef"' Expires: - - Fri, 22 Sep 2023 19:19:35 GMT + - Wed, 27 Sep 2023 21:26:11 GMT Source-Age: - '0' Strict-Transport-Security: @@ -650,21 +650,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 658e2c794305489bda93934157bf6e0d73909b3b + - 96ef298d7bc12e6b4a7f8c508f4b758b5e9c0b89 X-Frame-Options: - deny X-GitHub-Request-Id: - - 7494:09F0:41B321:50BDBE:650DE79A + - A28C:5675:47DE:59B0:65149AB9 X-Served-By: - - cache-den8278-DEN + - cache-lga21982-LGA X-Timer: - - S1695410075.277997,VS0,VE142 + - S1695849672.859559,VS0,VE88 X-XSS-Protection: - 1; mode=block status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example35].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example35].yaml new file mode 100644 index 000000000..45c179972 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example35].yaml @@ -0,0 +1,228 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"commons\",\n + \ \"checksum\",\n \"datacube\",\n \"scientific\",\n + \ \"version\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"license\": {\n \"title\": + \"Collection License Name\",\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n + \ }\n },\n \"extent\": {\n \"title\": \"Extents\",\n + \ \"type\": \"object\",\n \"required\": [\n \"spatial\",\n + \ \"temporal\"\n ],\n \"properties\": {\n \"spatial\": + {\n \"title\": \"Spatial extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"bbox\"\n ],\n + \ \"properties\": {\n \"bbox\": {\n \"title\": + \"Spatial extents\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"title\": \"Spatial + extent\",\n \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5265' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:12 GMT + ETag: + - '"efa6309742b904ab7b06bab4c30c3ea2e1ce78163892365a7f4ee461716396b3"' + Expires: + - Wed, 27 Sep 2023 21:26:12 GMT + Source-Age: + - '2' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - fbf68af48ff95e07ab13c1455b82baa158a6f498 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - BC5C:6DEB:5AD5:6D2C:65149AB5 + X-Served-By: + - cache-lga21936-LGA + X-Timer: + - S1695849672.072865,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1766' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:12 GMT + ETag: + - '"c76fd44b22619705d40fb03a5b1d875e2e786f9ac7a85244758d15cc7cc947a9"' + Expires: + - Wed, 27 Sep 2023 21:26:12 GMT + Source-Age: + - '2' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - aff15701bcd40848241d28e615b16d5be195ef74 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A566:10B3:511A:6368:65149AB6 + X-Served-By: + - cache-lga21950-LGA + X-Timer: + - S1695849672.189818,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example36].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example36].yaml index fbfe02820..b08cba16e 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example36].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example36].yaml @@ -1,4 +1,230 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"commons\",\n + \ \"checksum\",\n \"datacube\",\n \"scientific\",\n + \ \"version\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"license\": {\n \"title\": + \"Collection License Name\",\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n + \ }\n },\n \"extent\": {\n \"title\": \"Extents\",\n + \ \"type\": \"object\",\n \"required\": [\n \"spatial\",\n + \ \"temporal\"\n ],\n \"properties\": {\n \"spatial\": + {\n \"title\": \"Spatial extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"bbox\"\n ],\n + \ \"properties\": {\n \"bbox\": {\n \"title\": + \"Spatial extents\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"title\": \"Spatial + extent\",\n \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5265' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:12 GMT + ETag: + - '"efa6309742b904ab7b06bab4c30c3ea2e1ce78163892365a7f4ee461716396b3"' + Expires: + - Wed, 27 Sep 2023 21:26:12 GMT + Source-Age: + - '2' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - fb2091b6629fbf013ea4f9aedb369ac3a6659534 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - BC5C:6DEB:5AD5:6D2C:65149AB5 + X-Served-By: + - cache-lga21962-LGA + X-Timer: + - S1695849672.316349,VS0,VE3 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1766' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:12 GMT + ETag: + - '"c76fd44b22619705d40fb03a5b1d875e2e786f9ac7a85244758d15cc7cc947a9"' + Expires: + - Wed, 27 Sep 2023 21:26:12 GMT + Source-Age: + - '2' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - fc2ce12c2fc9a1b6d8d205cb076b2b6aa47738c2 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A566:10B3:511A:6368:65149AB6 + X-Served-By: + - cache-lga21929-LGA + X-Timer: + - S1695849672.436968,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: body: null headers: @@ -48,11 +274,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:35 GMT + - Wed, 27 Sep 2023 21:21:12 GMT ETag: - '"6ae857b8e1e2f74d6b996d5f7111e822099d2620956150db4b96325f59fccc52"' Expires: - - Fri, 22 Sep 2023 19:19:35 GMT + - Wed, 27 Sep 2023 21:26:12 GMT Source-Age: - '0' Strict-Transport-Security: @@ -62,21 +288,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 5592668511130cda9fd58ce0489dd9539a0eca1c + - bbb3ab4d22be2282b0d805658758832678dfd643 X-Frame-Options: - deny X-GitHub-Request-Id: - - 13C8:2E4B:473C7C:564450:650DE797 + - CDD2:3FAA:2F2B:3F3B:65149ABA X-Served-By: - - cache-den8243-DEN + - cache-lga21947-LGA X-Timer: - - S1695410076.540932,VS0,VE150 + - S1695849673.550071,VS0,VE82 X-XSS-Protection: - 1; mode=block status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example37].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example37].yaml index 555b6ca7e..f336f6b49 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example37].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example37].yaml @@ -1,4 +1,580 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:12 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:12 GMT + Source-Age: + - '2' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - bece66765242583bd5679cb6c98769332f38fd7f + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21971-LGA + X-Timer: + - S1695849673.742381,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:12 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:12 GMT + Source-Age: + - '2' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 80bda157096e0e2ecda9e89bf35bdbb294ffb399 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21959-LGA + X-Timer: + - S1695849673.843370,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:12 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:12 GMT + Source-Age: + - '2' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 93f4bb839786db1adf5fedbe44eb7fb598117fed + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21956-LGA + X-Timer: + - S1695849673.950418,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:13 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:13 GMT + Source-Age: + - '2' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - a9c29c5440f15e326e2eb195829afa264002ec58 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21938-LGA + X-Timer: + - S1695849673.077387,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:13 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:13 GMT + Source-Age: + - '2' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - fe26c33cfeb657c5a97c38d8590e250bf6bbb618 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21956-LGA + X-Timer: + - S1695849673.172198,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:13 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:13 GMT + Source-Age: + - '2' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - fc8a069ccb5d3f1da88365be4cee4c0bacba619f + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21943-LGA + X-Timer: + - S1695849673.267964,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:13 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:13 GMT + Source-Age: + - '2' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 16b4c164c30c83f50a57086a221b7d8ac4f32bf9 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21953-LGA + X-Timer: + - S1695849673.363612,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: body: null headers: @@ -45,11 +621,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:35 GMT + - Wed, 27 Sep 2023 21:21:13 GMT ETag: - '"9bde8b6875408a186b283e6e3dd3edb01bc2b938e55a0491b0b7f4e06f0faccb"' Expires: - - Fri, 22 Sep 2023 19:19:35 GMT + - Wed, 27 Sep 2023 21:26:13 GMT Source-Age: - '0' Strict-Transport-Security: @@ -59,21 +635,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 5c008114f723e189f04210ca159f6e715e1154c6 + - 55ca61bc8a95ae68e2ce15df454433015a176ba6 X-Frame-Options: - deny X-GitHub-Request-Id: - - 27FE:25E4:461ABC:552485:650DE799 + - 31C8:14EE:4B22:5D82:65149AB9 X-Served-By: - - cache-den8248-DEN + - cache-lga21935-LGA X-Timer: - - S1695410076.803100,VS0,VE144 + - S1695849673.457488,VS0,VE85 X-XSS-Protection: - 1; mode=block status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example38].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example38].yaml new file mode 100644 index 000000000..4e950d41a --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example38].yaml @@ -0,0 +1,228 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"commons\",\n + \ \"checksum\",\n \"datacube\",\n \"scientific\",\n + \ \"version\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"license\": {\n \"title\": + \"Collection License Name\",\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n + \ }\n },\n \"extent\": {\n \"title\": \"Extents\",\n + \ \"type\": \"object\",\n \"required\": [\n \"spatial\",\n + \ \"temporal\"\n ],\n \"properties\": {\n \"spatial\": + {\n \"title\": \"Spatial extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"bbox\"\n ],\n + \ \"properties\": {\n \"bbox\": {\n \"title\": + \"Spatial extents\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"title\": \"Spatial + extent\",\n \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5265' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:13 GMT + ETag: + - '"efa6309742b904ab7b06bab4c30c3ea2e1ce78163892365a7f4ee461716396b3"' + Expires: + - Wed, 27 Sep 2023 21:26:13 GMT + Source-Age: + - '3' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 6778fe0b0f13d61963b9f30859daea713aa897ce + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - BC5C:6DEB:5AD5:6D2C:65149AB5 + X-Served-By: + - cache-lga21953-LGA + X-Timer: + - S1695849674.654859,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1766' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:13 GMT + ETag: + - '"c76fd44b22619705d40fb03a5b1d875e2e786f9ac7a85244758d15cc7cc947a9"' + Expires: + - Wed, 27 Sep 2023 21:26:13 GMT + Source-Age: + - '4' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 65905a0820af71d3863c1dcb03d1d5737a1ba41d + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A566:10B3:511A:6368:65149AB6 + X-Served-By: + - cache-lga21923-LGA + X-Timer: + - S1695849674.750584,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example39].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example39].yaml index 58d7cbb56..5172315b7 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example39].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example39].yaml @@ -1,4 +1,675 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:13 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:13 GMT + Source-Age: + - '3' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 19516aa3eba56b28316c50e59072a4744f7d6392 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21944-LGA + X-Timer: + - S1695849674.887660,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:13 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:13 GMT + Source-Age: + - '3' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 9064828b9979bce8524d8712c03a0305f004bf55 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21962-LGA + X-Timer: + - S1695849674.998087,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:14 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:14 GMT + Source-Age: + - '3' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 151afe732bcb44cb05af869a0f0e46cb01075d20 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21947-LGA + X-Timer: + - S1695849674.106786,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:14 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:14 GMT + Source-Age: + - '3' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - e2b514de971f108c20bf7171f6acf8602e42fd78 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21929-LGA + X-Timer: + - S1695849674.203151,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:14 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:14 GMT + Source-Age: + - '3' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - a9ed9b6bf04637663a0d9727590d2fa38c8e1103 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21962-LGA + X-Timer: + - S1695849674.300400,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:14 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:14 GMT + Source-Age: + - '3' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 3c2a622f99dc186339341e30a67ee8af18f62ba3 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21950-LGA + X-Timer: + - S1695849674.395214,VS0,VE11 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:14 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:14 GMT + Source-Age: + - '3' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - c3842804267c57780b6d4bcdda8ec11fac9adc04 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21938-LGA + X-Timer: + - S1695849675.503216,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/eo/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"EO Extension\",\n \"description\": \"STAC + EO Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/eo\"\n }\n ],\n \"definitions\": + {\n \"eo\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"properties\": + {\n \"type\": \"object\",\n \"required\": [\n \"eo:gsd\",\n + \ \"eo:bands\"\n ],\n \"properties\": {\n \"eo:gsd\": + {\n \"title\": \"Ground Sample Distance\",\n \"type\": + \"number\"\n },\n \"eo:bands\": {\n \"title\": + \"Bands\",\n \"type\": \"array\",\n \"items\": {\n + \ \"properties\": {\n \"name\": {\n \"title\": + \"Name of the band\",\n \"type\": \"string\"\n },\n + \ \"common_name\": {\n \"title\": \"Common + Name of the band\",\n \"type\": \"string\"\n },\n + \ \"center_wavelength\": {\n \"title\": + \"Center Wavelength\",\n \"type\": \"number\"\n },\n + \ \"full_width_half_max\": {\n \"title\": + \"Full Width Half Max (FWHM)\",\n \"type\": \"number\"\n + \ }\n }\n }\n },\n + \ \"eo:cloud_cover\": {\n \"title\": \"Cloud Cover\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 100\n }\n }\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:bands\": {\n + \ \"title\": \"Band References\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n + \ \"type\": \"integer\",\n \"minimum\": 0\n + \ }\n }\n }\n }\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2166' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:14 GMT + ETag: + - '"4ce0628a6b4d2c8e80ff67d116b60196c8f9d0a017a63b3557ebd6b46f42dfef"' + Expires: + - Wed, 27 Sep 2023 21:26:14 GMT + Source-Age: + - '3' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - d215b2e95ec11b03a2e0ad684c22d75eb8842e02 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A28C:5675:47DE:59B0:65149AB9 + X-Served-By: + - cache-lga21956-LGA + X-Timer: + - S1695849675.597367,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: body: null headers: @@ -43,11 +714,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:36 GMT + - Wed, 27 Sep 2023 21:21:14 GMT ETag: - '"90408dbc0c6ce835205fcdbeeab881774f06517052d7c3dbcf6ba7c3ccced7eb"' Expires: - - Fri, 22 Sep 2023 19:19:36 GMT + - Wed, 27 Sep 2023 21:26:14 GMT Source-Age: - '0' Strict-Transport-Security: @@ -57,21 +728,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 579a6e097f48bfb2c789c9659d034fc896f12150 + - 8bcd55f65075973bc62381d4059be7ee54c44f83 X-Frame-Options: - deny X-GitHub-Request-Id: - - 2FBA:2000:4429AF:5331C2:650DE796 + - 3DEA:52F9:4998:5BFE:65149ABA X-Served-By: - - cache-den8220-DEN + - cache-lga21959-LGA X-Timer: - - S1695410076.085043,VS0,VE150 + - S1695849675.696209,VS0,VE77 X-XSS-Protection: - 1; mode=block status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example3].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example3].yaml index dd7a1ac09..9df18f6ce 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example3].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example3].yaml @@ -112,11 +112,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:25 GMT + - Wed, 27 Sep 2023 21:20:56 GMT ETag: - '"4e24763d74f0d463b0cb6c63fc099e0b59447c7a049b93ffda4c6eb9eb54ae95"' Expires: - - Fri, 22 Sep 2023 19:19:25 GMT + - Wed, 27 Sep 2023 21:25:56 GMT Source-Age: - '0' Strict-Transport-Security: @@ -126,21 +126,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 3c049047e7a5b15561c2754b7bae735aec96268b + - 2b719f82463db286eb12ec44eccae32b70cebb3f X-Frame-Options: - deny X-GitHub-Request-Id: - - B430:41DB:368154:415D0C:650DE78F + - 2630:09BA:1F7C:2D49:65149AB0 X-Served-By: - - cache-den8268-DEN + - cache-lga21971-LGA X-Timer: - - S1695410065.900118,VS0,VE135 + - S1695849656.154987,VS0,VE74 X-XSS-Protection: - 1; mode=block status: @@ -220,11 +220,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:25 GMT + - Wed, 27 Sep 2023 21:20:56 GMT ETag: - '"c8576d5ea3fcee4039dcddbdcf9e59fed3f3086419a33aa96f18f4617203b76d"' Expires: - - Fri, 22 Sep 2023 19:19:25 GMT + - Wed, 27 Sep 2023 21:25:56 GMT Source-Age: - '0' Strict-Transport-Security: @@ -234,21 +234,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - ea44113f70e61527d0f9880ca146c3d73b2bcdd3 + - 1a72c01c11c584a7ba57ee94df9f14947a626b42 X-Frame-Options: - deny X-GitHub-Request-Id: - - 1CC6:4B3B:312501:3C005D:650DE790 + - 6F72:822A:2999:3A71:65149AAF X-Served-By: - - cache-den8228-DEN + - cache-lga21942-LGA X-Timer: - - S1695410065.134715,VS0,VE142 + - S1695849656.345344,VS0,VE71 X-XSS-Protection: - 1; mode=block status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example40].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example40].yaml new file mode 100644 index 000000000..3a86e9160 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example40].yaml @@ -0,0 +1,228 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"commons\",\n + \ \"checksum\",\n \"datacube\",\n \"scientific\",\n + \ \"version\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"license\": {\n \"title\": + \"Collection License Name\",\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n + \ }\n },\n \"extent\": {\n \"title\": \"Extents\",\n + \ \"type\": \"object\",\n \"required\": [\n \"spatial\",\n + \ \"temporal\"\n ],\n \"properties\": {\n \"spatial\": + {\n \"title\": \"Spatial extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"bbox\"\n ],\n + \ \"properties\": {\n \"bbox\": {\n \"title\": + \"Spatial extents\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"title\": \"Spatial + extent\",\n \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5265' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:14 GMT + ETag: + - '"efa6309742b904ab7b06bab4c30c3ea2e1ce78163892365a7f4ee461716396b3"' + Expires: + - Wed, 27 Sep 2023 21:26:14 GMT + Source-Age: + - '5' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 1d951d14ebc699309b9006b3bb41757994cb897e + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - BC5C:6DEB:5AD5:6D2C:65149AB5 + X-Served-By: + - cache-lga21971-LGA + X-Timer: + - S1695849675.902965,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1766' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:15 GMT + ETag: + - '"c76fd44b22619705d40fb03a5b1d875e2e786f9ac7a85244758d15cc7cc947a9"' + Expires: + - Wed, 27 Sep 2023 21:26:15 GMT + Source-Age: + - '5' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - b215433b0bceb7967617cbee1801764b5daf81e3 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A566:10B3:511A:6368:65149AB6 + X-Served-By: + - cache-lga21934-LGA + X-Timer: + - S1695849675.016143,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example41].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example41].yaml new file mode 100644 index 000000000..6efa8ed54 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example41].yaml @@ -0,0 +1,578 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:15 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:15 GMT + Source-Age: + - '5' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 083200d4e8ed82b4a4e9372c80b0b6f4ebe17504 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21953-LGA + X-Timer: + - S1695849675.144987,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:15 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:15 GMT + Source-Age: + - '4' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 090ec056b2d17aed8c5a5aedf4f5baf404a45d1d + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21943-LGA + X-Timer: + - S1695849675.283934,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:15 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:15 GMT + Source-Age: + - '4' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 288355ee8e3a5a2971b7d20447254adb67b4aae9 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21956-LGA + X-Timer: + - S1695849675.398448,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:15 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:15 GMT + Source-Age: + - '4' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 2a229707a5a0b1dfada0e289284d60b080730f6a + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21963-LGA + X-Timer: + - S1695849675.496387,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:15 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:15 GMT + Source-Age: + - '4' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 5496dbb27003d1631d39018a310ac36c861bdbb4 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21944-LGA + X-Timer: + - S1695849676.605381,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:15 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:15 GMT + Source-Age: + - '4' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 00a3e445f15d0fd72d2c3b8e7d704a00df384c81 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21965-LGA + X-Timer: + - S1695849676.699039,VS0,VE3 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:15 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:15 GMT + Source-Age: + - '4' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - be86502759f5060ff398f7a6ddabc32636ef0584 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21953-LGA + X-Timer: + - S1695849676.798464,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example42].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example42].yaml index 10f522bba..63a7c71fb 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example42].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example42].yaml @@ -1,4 +1,675 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:15 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:15 GMT + Source-Age: + - '5' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 45dcfba46b50cdea3f1d30574144d78239299fa9 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21948-LGA + X-Timer: + - S1695849676.940557,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:16 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:16 GMT + Source-Age: + - '5' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - e207b732b829515cc35540ae3ed123b312ef438f + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21980-LGA + X-Timer: + - S1695849676.069673,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:16 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:16 GMT + Source-Age: + - '5' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 5bfd8751fe0a62a304cff88b0c9774678e3c6c49 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21933-LGA + X-Timer: + - S1695849676.178617,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:16 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:16 GMT + Source-Age: + - '5' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 9ecdbc713dd9fe31751be0821d66323427d67009 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21945-LGA + X-Timer: + - S1695849676.285366,VS0,VE10 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:16 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:16 GMT + Source-Age: + - '5' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 16c749cef6c9cd68faa2670b0978de0451489728 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849676.405518,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:16 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:16 GMT + Source-Age: + - '5' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 72611dff0316dc5ea37b3ce4fe447d35805299c5 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21955-LGA + X-Timer: + - S1695849677.519907,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:16 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:16 GMT + Source-Age: + - '5' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 3b9cad5749becd44573bc8dda78ad47879b7d513 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21952-LGA + X-Timer: + - S1695849677.622474,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/eo/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"EO Extension\",\n \"description\": \"STAC + EO Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/eo\"\n }\n ],\n \"definitions\": + {\n \"eo\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"properties\": + {\n \"type\": \"object\",\n \"required\": [\n \"eo:gsd\",\n + \ \"eo:bands\"\n ],\n \"properties\": {\n \"eo:gsd\": + {\n \"title\": \"Ground Sample Distance\",\n \"type\": + \"number\"\n },\n \"eo:bands\": {\n \"title\": + \"Bands\",\n \"type\": \"array\",\n \"items\": {\n + \ \"properties\": {\n \"name\": {\n \"title\": + \"Name of the band\",\n \"type\": \"string\"\n },\n + \ \"common_name\": {\n \"title\": \"Common + Name of the band\",\n \"type\": \"string\"\n },\n + \ \"center_wavelength\": {\n \"title\": + \"Center Wavelength\",\n \"type\": \"number\"\n },\n + \ \"full_width_half_max\": {\n \"title\": + \"Full Width Half Max (FWHM)\",\n \"type\": \"number\"\n + \ }\n }\n }\n },\n + \ \"eo:cloud_cover\": {\n \"title\": \"Cloud Cover\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 100\n }\n }\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:bands\": {\n + \ \"title\": \"Band References\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n + \ \"type\": \"integer\",\n \"minimum\": 0\n + \ }\n }\n }\n }\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2166' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:16 GMT + ETag: + - '"4ce0628a6b4d2c8e80ff67d116b60196c8f9d0a017a63b3557ebd6b46f42dfef"' + Expires: + - Wed, 27 Sep 2023 21:26:16 GMT + Source-Age: + - '5' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - c44630acee156036843cd9008bb2a88f64227785 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A28C:5675:47DE:59B0:65149AB9 + X-Served-By: + - cache-lga21961-LGA + X-Timer: + - S1695849677.728280,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: body: null headers: @@ -51,11 +722,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:36 GMT + - Wed, 27 Sep 2023 21:21:16 GMT ETag: - '"e3e45b623ffe7f49713a2595b631681ba13de3813a1f297508e46360b2becd71"' Expires: - - Fri, 22 Sep 2023 19:19:36 GMT + - Wed, 27 Sep 2023 21:26:16 GMT Source-Age: - '0' Strict-Transport-Security: @@ -65,21 +736,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 8ce14c912f904aeb642c5e9d293621b0b8a5fa8a + - e5c77ccf7168af9cb89b85a1816bee0d37d6d8a6 X-Frame-Options: - deny X-GitHub-Request-Id: - - DF24:0589:43D50A:52E09E:650DE79C + - 95A2:123E:4EAB:6115:65149AB9 X-Served-By: - - cache-den8237-DEN + - cache-lga21961-LGA X-Timer: - - S1695410076.374103,VS0,VE140 + - S1695849677.842461,VS0,VE98 X-XSS-Protection: - 1; mode=block status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example43].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example43].yaml new file mode 100644 index 000000000..cb504830f --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example43].yaml @@ -0,0 +1,93 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1766' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:17 GMT + ETag: + - '"c76fd44b22619705d40fb03a5b1d875e2e786f9ac7a85244758d15cc7cc947a9"' + Expires: + - Wed, 27 Sep 2023 21:26:17 GMT + Source-Age: + - '7' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 0cca33082f9b032ae64bdbbedb779965f015d5ed + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A566:10B3:511A:6368:65149AB6 + X-Served-By: + - cache-lga21942-LGA + X-Timer: + - S1695849677.082576,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example44].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example44].yaml new file mode 100644 index 000000000..9faade5de --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example44].yaml @@ -0,0 +1,578 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:17 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:17 GMT + Source-Age: + - '7' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 03f53c384bdba380dd905e7c6f3cb04792703276 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21952-LGA + X-Timer: + - S1695849677.197044,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:17 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:17 GMT + Source-Age: + - '7' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - cb954948a649cd78840f15258ce1fa85dd6ce9ad + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21939-LGA + X-Timer: + - S1695849677.334257,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:17 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:17 GMT + Source-Age: + - '6' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 54fac1f7a46a605dc2cb0cfd64ee6cc62aebbdbe + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21948-LGA + X-Timer: + - S1695849677.444858,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:17 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:17 GMT + Source-Age: + - '6' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 0d6f8fdff704d149070dead00b0a70df15e92af8 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21967-LGA + X-Timer: + - S1695849678.556679,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:17 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:17 GMT + Source-Age: + - '6' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - ee77043cd1278ce1a5acc134da932b5d105eb540 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21945-LGA + X-Timer: + - S1695849678.670845,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:17 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:17 GMT + Source-Age: + - '6' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 0b0cf42c9f3878de6d4f09919a05cc66b23d2889 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21958-LGA + X-Timer: + - S1695849678.768140,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:17 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:17 GMT + Source-Age: + - '6' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 173ba1133f2d0266be2a972a43c7deaee5fc632f + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21945-LGA + X-Timer: + - S1695849678.878315,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example45].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example45].yaml new file mode 100644 index 000000000..b11f3e0ea --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example45].yaml @@ -0,0 +1,578 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:18 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:18 GMT + Source-Age: + - '7' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - fd8d6df3d6121358edb6a6fa4eec05e517031880 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21933-LGA + X-Timer: + - S1695849678.008776,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:18 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:18 GMT + Source-Age: + - '7' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 17ea79f91875b94330150e2236abb255092d6395 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21967-LGA + X-Timer: + - S1695849678.123896,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:18 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:18 GMT + Source-Age: + - '7' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 528b0e42bee68154ed55adac88a63626d7bc1104 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21948-LGA + X-Timer: + - S1695849678.230777,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:18 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:18 GMT + Source-Age: + - '7' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 6601df96d1e8b282a6a267bdbe2bc65f635e9754 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849678.345841,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:18 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:18 GMT + Source-Age: + - '7' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - e3bd802201e153af0c1d98efceb46bf9cee989b2 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21952-LGA + X-Timer: + - S1695849678.455519,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:18 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:18 GMT + Source-Age: + - '7' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 85670226a05a2fb853f618282d7de2920e9a6a8d + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849679.569474,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:18 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:18 GMT + Source-Age: + - '7' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 60d7f31cbf13e4960d90bcc51750d59c612c6374 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21939-LGA + X-Timer: + - S1695849679.665411,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example46].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example46].yaml new file mode 100644 index 000000000..6f20f6c84 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example46].yaml @@ -0,0 +1,578 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:18 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:18 GMT + Source-Age: + - '8' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 9020c9abd92804e81aec2a70a4a28d3a4d10dcfd + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21951-LGA + X-Timer: + - S1695849679.780209,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:18 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:18 GMT + Source-Age: + - '8' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 7e4fa64fbe8a688d1ef6d90fedf9e7f88915c3f9 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21942-LGA + X-Timer: + - S1695849679.923834,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:19 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:19 GMT + Source-Age: + - '8' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 69afae7c710352f3686d0b35854f4d8b5221d35a + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21960-LGA + X-Timer: + - S1695849679.041888,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:19 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:19 GMT + Source-Age: + - '8' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 69ea62c9934df5941557ca293234a643d539cd06 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21958-LGA + X-Timer: + - S1695849679.161585,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:19 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:19 GMT + Source-Age: + - '8' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 759907d518f33c73b6721798cfb3a767d29e856c + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21945-LGA + X-Timer: + - S1695849679.273444,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:19 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:19 GMT + Source-Age: + - '8' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - b4a40c02f359a23538b70ce80936301e8b07d757 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21967-LGA + X-Timer: + - S1695849679.383897,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:19 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:19 GMT + Source-Age: + - '8' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '6' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 4e390dd4c43efedbd4ec1744d04ceec682ba4884 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21949-LGA + X-Timer: + - S1695849679.481074,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example47].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example47].yaml new file mode 100644 index 000000000..d58fc5232 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example47].yaml @@ -0,0 +1,228 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"commons\",\n + \ \"checksum\",\n \"datacube\",\n \"scientific\",\n + \ \"version\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"license\": {\n \"title\": + \"Collection License Name\",\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n + \ }\n },\n \"extent\": {\n \"title\": \"Extents\",\n + \ \"type\": \"object\",\n \"required\": [\n \"spatial\",\n + \ \"temporal\"\n ],\n \"properties\": {\n \"spatial\": + {\n \"title\": \"Spatial extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"bbox\"\n ],\n + \ \"properties\": {\n \"bbox\": {\n \"title\": + \"Spatial extents\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"title\": \"Spatial + extent\",\n \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5265' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:19 GMT + ETag: + - '"efa6309742b904ab7b06bab4c30c3ea2e1ce78163892365a7f4ee461716396b3"' + Expires: + - Wed, 27 Sep 2023 21:26:19 GMT + Source-Age: + - '9' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 67319b58f86f0e89e5c8cf9bd939b9be4be5174c + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - BC5C:6DEB:5AD5:6D2C:65149AB5 + X-Served-By: + - cache-lga21951-LGA + X-Timer: + - S1695849680.596332,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1766' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:19 GMT + ETag: + - '"c76fd44b22619705d40fb03a5b1d875e2e786f9ac7a85244758d15cc7cc947a9"' + Expires: + - Wed, 27 Sep 2023 21:26:19 GMT + Source-Age: + - '10' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 5a164f55ed303648ec1944e91e773587eabc6245 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A566:10B3:511A:6368:65149AB6 + X-Served-By: + - cache-lga21965-LGA + X-Timer: + - S1695849680.710516,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example48].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example48].yaml new file mode 100644 index 000000000..257b9b32f --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example48].yaml @@ -0,0 +1,228 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"commons\",\n + \ \"checksum\",\n \"datacube\",\n \"scientific\",\n + \ \"version\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"license\": {\n \"title\": + \"Collection License Name\",\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n + \ }\n },\n \"extent\": {\n \"title\": \"Extents\",\n + \ \"type\": \"object\",\n \"required\": [\n \"spatial\",\n + \ \"temporal\"\n ],\n \"properties\": {\n \"spatial\": + {\n \"title\": \"Spatial extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"bbox\"\n ],\n + \ \"properties\": {\n \"bbox\": {\n \"title\": + \"Spatial extents\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"title\": \"Spatial + extent\",\n \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5265' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:19 GMT + ETag: + - '"efa6309742b904ab7b06bab4c30c3ea2e1ce78163892365a7f4ee461716396b3"' + Expires: + - Wed, 27 Sep 2023 21:26:19 GMT + Source-Age: + - '10' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - e6c821ae39289c7688da83e13a6420c665d6ae8b + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - BC5C:6DEB:5AD5:6D2C:65149AB5 + X-Served-By: + - cache-lga21942-LGA + X-Timer: + - S1695849680.833110,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1766' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:19 GMT + ETag: + - '"c76fd44b22619705d40fb03a5b1d875e2e786f9ac7a85244758d15cc7cc947a9"' + Expires: + - Wed, 27 Sep 2023 21:26:19 GMT + Source-Age: + - '10' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 96a6b9b7832c38b5ab66c115e2938cd50e2c8d85 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A566:10B3:511A:6368:65149AB6 + X-Served-By: + - cache-lga21962-LGA + X-Timer: + - S1695849680.947090,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example49].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example49].yaml new file mode 100644 index 000000000..e614b7265 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example49].yaml @@ -0,0 +1,578 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:20 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:20 GMT + Source-Age: + - '9' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - f256997a798d8709a6ab79b8991d4752204a2a8c + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21958-LGA + X-Timer: + - S1695849680.098018,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:20 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:20 GMT + Source-Age: + - '9' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 4c9793b915648dd0a25cd8b6f449ffb71bd4de33 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21944-LGA + X-Timer: + - S1695849680.209585,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:20 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:20 GMT + Source-Age: + - '9' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 5e76000ae896d7bbf99a9ebac6b5ca4ab6fea3a6 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21955-LGA + X-Timer: + - S1695849680.314344,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:20 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:20 GMT + Source-Age: + - '9' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - f1e281ce8c9166bbdb24fefb42522315d0a938f8 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21935-LGA + X-Timer: + - S1695849680.430722,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:20 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:20 GMT + Source-Age: + - '9' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 25d70f175eb21cfa590a5c08b8fd54694ee158de + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21971-LGA + X-Timer: + - S1695849681.546210,VS0,VE19 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:20 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:20 GMT + Source-Age: + - '9' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 7d94aff163085973cf412c567f0bc67a92945b40 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21957-LGA + X-Timer: + - S1695849681.683818,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:20 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:20 GMT + Source-Age: + - '9' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 7793b71a983a14b1a49fb2f478e5d2262fda9139 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21956-LGA + X-Timer: + - S1695849681.804516,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example4].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example4].yaml new file mode 100644 index 000000000..c9f8f70c9 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example4].yaml @@ -0,0 +1,229 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"checksum\",\n + \ \"scientific\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"version\": {\n \"title\": + \"Collection Version\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Homepage\",\n \"type\": \"string\",\n + \ \"format\": \"url\"\n }\n }\n }\n + \ },\n \"extent\": {\n \"title\": \"Extents\",\n \"type\": + \"object\",\n \"required\": [\n \"spatial\",\n \"temporal\"\n + \ ],\n \"properties\": {\n \"spatial\": {\n \"title\": + \"Spatial extent object\",\n \"type\": \"object\",\n \"required\": + [\n \"bbox\"\n ],\n \"properties\": + {\n \"bbox\": {\n \"title\": \"Spatial extents\",\n + \ \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"title\": \"Spatial extent\",\n + \ \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"properties\": {\n \"title\": \"Common properties\",\n \"type\": + \"object\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '4394' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:20:56 GMT + ETag: + - '"031974beaaaf6f0b5c6877dc97088d9e2aff3bc8962df33ff291dddded353f09"' + Expires: + - Wed, 27 Sep 2023 21:25:56 GMT + Source-Age: + - '1' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 8c28e70b39d561e9f78d12885d56820c1aadb69e + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - D9DE:5675:4608:5765:65149AAF + X-Served-By: + - cache-lga21920-LGA + X-Timer: + - S1695849657.551796,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n },\n \"summaries\": {\n + \ \"$ref\": \"#/definitions/summaries\"\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": {\n \"min\": + {\n \"title\": \"Minimum value\",\n \"type\": + [\"number\", \"string\"]\n },\n \"max\": {\n \"title\": + \"Maximum value\",\n \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": \"Set of + values\",\n \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"description\": \"Any data type could + occur.\"\n }\n }\n ]\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2638' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:20:56 GMT + ETag: + - '"3b514933a3747f038125935624a13df108e30fe1cb8f9660a7f54ac6d4765ce9"' + Expires: + - Wed, 27 Sep 2023 21:25:56 GMT + Source-Age: + - '1' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - b552412d2c0ef503d93973eae074ba243f00c2b1 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 146A:2756:778FB:90182:65149AAF + X-Served-By: + - cache-lga21937-LGA + X-Timer: + - S1695849657.675226,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example50].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example50].yaml new file mode 100644 index 000000000..67f69ac56 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example50].yaml @@ -0,0 +1,228 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"commons\",\n + \ \"checksum\",\n \"datacube\",\n \"scientific\",\n + \ \"version\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"license\": {\n \"title\": + \"Collection License Name\",\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n + \ }\n },\n \"extent\": {\n \"title\": \"Extents\",\n + \ \"type\": \"object\",\n \"required\": [\n \"spatial\",\n + \ \"temporal\"\n ],\n \"properties\": {\n \"spatial\": + {\n \"title\": \"Spatial extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"bbox\"\n ],\n + \ \"properties\": {\n \"bbox\": {\n \"title\": + \"Spatial extents\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"title\": \"Spatial + extent\",\n \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5265' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:20 GMT + ETag: + - '"efa6309742b904ab7b06bab4c30c3ea2e1ce78163892365a7f4ee461716396b3"' + Expires: + - Wed, 27 Sep 2023 21:26:20 GMT + Source-Age: + - '11' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - cb853698ec8c0ece166b571c8f4905706f6a0469 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - BC5C:6DEB:5AD5:6D2C:65149AB5 + X-Served-By: + - cache-lga21936-LGA + X-Timer: + - S1695849681.931592,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1766' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:21 GMT + ETag: + - '"c76fd44b22619705d40fb03a5b1d875e2e786f9ac7a85244758d15cc7cc947a9"' + Expires: + - Wed, 27 Sep 2023 21:26:21 GMT + Source-Age: + - '11' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 313b7c9b46359b1eb61003697c76a5840aa8695b + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A566:10B3:511A:6368:65149AB6 + X-Served-By: + - cache-lga21950-LGA + X-Timer: + - S1695849681.042349,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example51].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example51].yaml index a2fb5f7ed..37ca32e83 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example51].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example51].yaml @@ -1,4 +1,580 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:21 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:21 GMT + Source-Age: + - '11' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - c08883e29a53dcd97e8461e077d7fbb6bf7093e2 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21964-LGA + X-Timer: + - S1695849681.167317,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:21 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:21 GMT + Source-Age: + - '10' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 57f208e49b399f9c1f7e27251426fdefecaf0d3b + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21929-LGA + X-Timer: + - S1695849681.283471,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:21 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:21 GMT + Source-Age: + - '10' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 3bd4c8b843d740a22a6f2e27f331ebd066e0b57e + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21949-LGA + X-Timer: + - S1695849681.386562,VS0,VE3 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:21 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:21 GMT + Source-Age: + - '10' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 21f9c407d828717c7f683a931badaca98b5d52c5 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21962-LGA + X-Timer: + - S1695849682.530911,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:21 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:21 GMT + Source-Age: + - '10' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '7' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 274e28a4eda05b0a8ba03b17ecb7a66b5fdda39a + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21942-LGA + X-Timer: + - S1695849682.628867,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:21 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:21 GMT + Source-Age: + - '10' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - c19845b5c8fc0d8cefff3b349e9e4fbbdb417d3a + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21965-LGA + X-Timer: + - S1695849682.734924,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:21 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:21 GMT + Source-Age: + - '10' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 52949614b258e5c754ada09f9a8fe8cd3befc23d + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21951-LGA + X-Timer: + - S1695849682.844284,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: body: null headers: @@ -76,11 +652,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:36 GMT + - Wed, 27 Sep 2023 21:21:22 GMT ETag: - '"46c09f290da4303780880924f1569b2cb0b979a2d363a4446e2b8b7cc494844b"' Expires: - - Fri, 22 Sep 2023 19:19:36 GMT + - Wed, 27 Sep 2023 21:26:22 GMT Source-Age: - '0' Strict-Transport-Security: @@ -90,21 +666,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 799870c48c18dbb918f1f243c680b5f8e60e867d + - b9ac20178e77e2ebf54acc9f4094c4149b5a31c6 X-Frame-Options: - deny X-GitHub-Request-Id: - - DF24:0589:43D51B:52E0B1:650DE79C + - 44FE:318E:4CD7:5F48:65149ABA X-Served-By: - - cache-den8272-DEN + - cache-lga21935-LGA X-Timer: - - S1695410077.706630,VS0,VE164 + - S1695849682.953374,VS0,VE76 X-XSS-Protection: - 1; mode=block status: @@ -158,11 +734,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:37 GMT + - Wed, 27 Sep 2023 21:21:22 GMT ETag: - '"3ad87031bb638da9b48582cbf730c047e1075960364c8fc992381ddf5467f296"' Expires: - - Fri, 22 Sep 2023 19:19:37 GMT + - Wed, 27 Sep 2023 21:26:22 GMT Source-Age: - '0' Strict-Transport-Security: @@ -172,21 +748,247 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 7659ead3d2ab9c7d54898456490d67f0aaa63bab + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D8F:2B48:65149ABB + X-Served-By: + - cache-lga21955-LGA + X-Timer: + - S1695849682.135888,VS0,VE78 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"commons\",\n + \ \"checksum\",\n \"datacube\",\n \"scientific\",\n + \ \"version\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"license\": {\n \"title\": + \"Collection License Name\",\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n + \ }\n },\n \"extent\": {\n \"title\": \"Extents\",\n + \ \"type\": \"object\",\n \"required\": [\n \"spatial\",\n + \ \"temporal\"\n ],\n \"properties\": {\n \"spatial\": + {\n \"title\": \"Spatial extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"bbox\"\n ],\n + \ \"properties\": {\n \"bbox\": {\n \"title\": + \"Spatial extents\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"title\": \"Spatial + extent\",\n \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5265' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:22 GMT + ETag: + - '"efa6309742b904ab7b06bab4c30c3ea2e1ce78163892365a7f4ee461716396b3"' + Expires: + - Wed, 27 Sep 2023 21:26:22 GMT + Source-Age: + - '12' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 52d558c71908be4f9d3b0c301f29e8b07bec2a8e + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - BC5C:6DEB:5AD5:6D2C:65149AB5 + X-Served-By: + - cache-lga21944-LGA + X-Timer: + - S1695849682.351498,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1766' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:22 GMT + ETag: + - '"c76fd44b22619705d40fb03a5b1d875e2e786f9ac7a85244758d15cc7cc947a9"' + Expires: + - Wed, 27 Sep 2023 21:26:22 GMT + Source-Age: + - '12' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - f9230235233ed40940daf68c29b7e4a551d35475 + - 2500317532d2e0a52596286cd852f9384cf873d9 X-Frame-Options: - deny X-GitHub-Request-Id: - - FDCC:96E5:4815F5:571FB7:650DE79D + - A566:10B3:511A:6368:65149AB6 X-Served-By: - - cache-den8243-DEN + - cache-lga21958-LGA X-Timer: - - S1695410077.980749,VS0,VE303 + - S1695849682.445388,VS0,VE1 X-XSS-Protection: - 1; mode=block status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example52].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example52].yaml new file mode 100644 index 000000000..891cf8448 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example52].yaml @@ -0,0 +1,578 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:22 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:22 GMT + Source-Age: + - '12' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 3fff5ec2471ba58e91368f570a0063e2cb7b7f42 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21936-LGA + X-Timer: + - S1695849683.570368,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:22 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:22 GMT + Source-Age: + - '12' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - ae1db5645eb7f5ee5b6e3f8042b31c662ece29d5 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21955-LGA + X-Timer: + - S1695849683.685472,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:22 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:22 GMT + Source-Age: + - '12' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 25c9ce1bf2dbfb69d19dd29cf8951f75bbb17829 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21957-LGA + X-Timer: + - S1695849683.798398,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:22 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:22 GMT + Source-Age: + - '12' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 7cc869f239e314e59d716f1ca7b125e1efaca4e1 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21970-LGA + X-Timer: + - S1695849683.912298,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:23 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:23 GMT + Source-Age: + - '12' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - ee810c7027b4151153591f98ceeeb114e988e231 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21949-LGA + X-Timer: + - S1695849683.022808,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:23 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:23 GMT + Source-Age: + - '12' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '9' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 2afeece17c6d337ef2972707cdfba3acc99cd576 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21930-LGA + X-Timer: + - S1695849683.124969,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:23 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:23 GMT + Source-Age: + - '11' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - cd1297a7867524b05e34df6f5a47939fe7a9b9a0 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21964-LGA + X-Timer: + - S1695849683.237245,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example53].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example53].yaml new file mode 100644 index 000000000..45d662135 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example53].yaml @@ -0,0 +1,578 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:23 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:23 GMT + Source-Age: + - '13' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 3aeb5c618a67f406b6750fdd5db70e24876ffb42 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21951-LGA + X-Timer: + - S1695849683.346606,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:23 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:23 GMT + Source-Age: + - '13' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - f0dc2a946a333ef9a310a2bb73d6b3cc35fca464 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21949-LGA + X-Timer: + - S1695849683.455365,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:23 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:23 GMT + Source-Age: + - '13' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 40098307c14951d6027ad76d3693e3536aebc4e4 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21969-LGA + X-Timer: + - S1695849684.565279,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:23 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:23 GMT + Source-Age: + - '12' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 88663baca3be7ff8533639e0c2e014b7476909c6 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21946-LGA + X-Timer: + - S1695849684.664250,VS0,VE6 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:23 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:23 GMT + Source-Age: + - '12' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - e58c58f26312af40037b8fb061adcd911aee38d4 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21960-LGA + X-Timer: + - S1695849684.771344,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:23 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:23 GMT + Source-Age: + - '12' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 2c4bfbf7bd372490711546a022549ce8d6e42cca + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21960-LGA + X-Timer: + - S1695849684.868934,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:23 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:23 GMT + Source-Age: + - '12' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 2737a5a7a7bf7f5d159f83bc1a1d82e8e8600bc9 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21934-LGA + X-Timer: + - S1695849684.975610,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example54].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example54].yaml new file mode 100644 index 000000000..3ae4e9eea --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example54].yaml @@ -0,0 +1,578 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:24 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:24 GMT + Source-Age: + - '13' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '3' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 16cfc723c9961cc49875776167bb390611cfe359 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21951-LGA + X-Timer: + - S1695849684.108161,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:24 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:24 GMT + Source-Age: + - '13' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - f3878528801e12307daef8b971459b32a9c69d68 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21937-LGA + X-Timer: + - S1695849684.221388,VS0,VE3 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:24 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:24 GMT + Source-Age: + - '13' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 0305604d2a6194df40705aa1820d3434da98fd5e + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849684.342562,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:24 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:24 GMT + Source-Age: + - '13' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 064f9e06ed7a01004aec4fb7daa85086c1fc2387 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21956-LGA + X-Timer: + - S1695849684.455807,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:24 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:24 GMT + Source-Age: + - '13' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - eccc1d5a43348eb6c7d5184581985f2b11ff43f6 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21954-LGA + X-Timer: + - S1695849685.579111,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:24 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:24 GMT + Source-Age: + - '13' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 0d6f6c5a370bba6951ac073907563ffcc571ff20 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21941-LGA + X-Timer: + - S1695849685.694814,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:24 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:24 GMT + Source-Age: + - '13' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 395c928f9112d3feb387c7fba8ca353c478d7baa + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21946-LGA + X-Timer: + - S1695849685.791326,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example55].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example55].yaml index 961304b4d..61278395d 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example55].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example55].yaml @@ -1,4 +1,658 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:24 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:24 GMT + Source-Age: + - '14' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 137eb6fe2162d932590b7bbfa699a2b51b23a6b2 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21965-LGA + X-Timer: + - S1695849685.914323,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:25 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:25 GMT + Source-Age: + - '14' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - b384a7db66bb08b5e813a5bf7cad0fed9799d5bd + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21931-LGA + X-Timer: + - S1695849685.031312,VS0,VE4 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:25 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:25 GMT + Source-Age: + - '14' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 4c2702ee984d82e4d1290135da011f1673b5dd70 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21944-LGA + X-Timer: + - S1695849685.162008,VS0,VE4 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:25 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:25 GMT + Source-Age: + - '14' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 48fa0bd98ee6ae190acd30bb5eeb8e4c8a304e29 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21960-LGA + X-Timer: + - S1695849685.265892,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:25 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:25 GMT + Source-Age: + - '14' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 28234d4bb05ece7904b923f05a5a5804db9f3677 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21946-LGA + X-Timer: + - S1695849685.369194,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:25 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:25 GMT + Source-Age: + - '14' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 721f5b52b4ccaca49eed830cbea2bbd120736d25 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21969-LGA + X-Timer: + - S1695849685.492419,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:25 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:25 GMT + Source-Age: + - '14' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '12' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 0bf34d0db7201c0531f864a5709b8457c2cabe62 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21949-LGA + X-Timer: + - S1695849686.597089,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/sat/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Sat Extension\",\n \"description\": \"STAC + Sat Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/sat\"\n },\n {\n \"$ref\": + \"../../../item-spec/json-schema/instrument.json\"\n }\n ],\n \"definitions\": + {\n \"sat\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\"\n + \ ],\n \"properties\": {\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [],\n \"properties\": {\n \"sat:relative_orbit\": + {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n + \ \"sat:orbit_state\": {\n \"title\": \"Orbit State\",\n + \ \"type\": \"string\",\n \"enum\": [\n \"ascending\",\n + \ \"descending\",\n \"geostationary\"\n ]\n + \ }\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1008' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:25 GMT + ETag: + - '"90408dbc0c6ce835205fcdbeeab881774f06517052d7c3dbcf6ba7c3ccced7eb"' + Expires: + - Wed, 27 Sep 2023 21:26:25 GMT + Source-Age: + - '11' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - c37dcb421d861fa4421fff07fd88aa1574510dab + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 3DEA:52F9:4998:5BFE:65149ABA + X-Served-By: + - cache-lga21937-LGA + X-Timer: + - S1695849686.694279,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: body: null headers: @@ -82,11 +736,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:37 GMT + - Wed, 27 Sep 2023 21:21:25 GMT ETag: - '"8546ced8239a833de59c3c153dab1ad77f34c598818da6695196e7449d680592"' Expires: - - Fri, 22 Sep 2023 19:19:37 GMT + - Wed, 27 Sep 2023 21:26:25 GMT Source-Age: - '0' Strict-Transport-Security: @@ -96,21 +750,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 986be073d51777dcfbcfb2ccfbda42bcdebfe969 + - bdc583cf8e18f46d2598d0168d50104cde921393 X-Frame-Options: - deny X-GitHub-Request-Id: - - 495A:6DE2:415626:505FC9:650DE79D + - 44FE:318E:4CEC:5F62:65149ABB X-Served-By: - - cache-den8221-DEN + - cache-lga21951-LGA X-Timer: - - S1695410078.505362,VS0,VE141 + - S1695849686.797165,VS0,VE95 X-XSS-Protection: - 1; mode=block status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example56].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example56].yaml new file mode 100644 index 000000000..c040475aa --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example56].yaml @@ -0,0 +1,853 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:26 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:26 GMT + Source-Age: + - '15' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - cc4bbb7deed07e102966f7153705442210f41569 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21941-LGA + X-Timer: + - S1695849686.024883,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:26 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:26 GMT + Source-Age: + - '15' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 31a5a81071dd0c7b66bbf1c9500f885782ee4081 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21960-LGA + X-Timer: + - S1695849686.144444,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:26 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:26 GMT + Source-Age: + - '15' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 1709dfcf5ee82f558f0ed4e6d3a31736ae4e6019 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21941-LGA + X-Timer: + - S1695849686.260884,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:26 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:26 GMT + Source-Age: + - '15' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - a42fd5d955e620d55517ddc3e9397179a373554d + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21954-LGA + X-Timer: + - S1695849686.375001,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:26 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:26 GMT + Source-Age: + - '15' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 0ba7c0f99c2a38d97b6b0fb151bfb304166f0803 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21955-LGA + X-Timer: + - S1695849686.483860,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:26 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:26 GMT + Source-Age: + - '15' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 87a700ef237c33dd650751d4258ababde832d983 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849687.623889,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:26 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:26 GMT + Source-Age: + - '15' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - c5b8eb7f01358eefffc8b7a7a6f67560b33fe6a6 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21944-LGA + X-Timer: + - S1695849687.718973,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/checksum/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Checksum Extension Specification\",\n \"description\": + \"STAC Checksum Extension to a STAC Item\",\n \"allOf\": [\n {\n \"$ref\": + \"../../../item-spec/json-schema/item.json#/definitions/core\"\n },\n {\n + \ \"$ref\": \"#/definitions/checksum\"\n }\n ],\n \"definitions\": + {\n \"checksum\": {\n \"type\": \"object\",\n \"properties\": + {\n \"links\": {\n \"title\": \"Links\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/checksums\"\n + \ }\n },\n \"assets\": {\n \"title\": \"Assets\",\n + \ \"type\": \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/checksums\"\n }\n }\n + \ }\n }\n },\n \"checksums\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"checksum:multihash\": {\n \"type\": + \"string\",\n \"pattern\": \"^[a-f0-9]+$\",\n \"title\": + \"Multihash\"\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1044' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:26 GMT + ETag: + - '"9bde8b6875408a186b283e6e3dd3edb01bc2b938e55a0491b0b7f4e06f0faccb"' + Expires: + - Wed, 27 Sep 2023 21:26:26 GMT + Source-Age: + - '13' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 70da8bfecdf3811deda661c4e906a9b4c3749101 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 31C8:14EE:4B22:5D82:65149AB9 + X-Served-By: + - cache-lga21931-LGA + X-Timer: + - S1695849687.833912,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/sar/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"SAR Extension\",\n \"description\": \"STAC + SAR Extension to a STAC Item\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/sar\"\n }\n ],\n \"definitions\": + {\n \"sar\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"properties\": + {\n \"type\": \"object\",\n \"required\": [\n \"sar:instrument_mode\",\n + \ \"sar:frequency_band\",\n \"sar:polarizations\",\n + \ \"sar:product_type\"\n ],\n \"properties\": + {\n \"sar:instrument_mode\": {\n \"title\": \"Instrument + Mode\",\n \"type\": \"string\",\n \"example\": \"WV\"\n + \ },\n \"sar:frequency_band\": {\n \"title\": + \"Frequency Band\",\n \"type\": \"string\",\n \"enum\": + [\n \"P\",\n \"L\",\n \"S\",\n + \ \"C\",\n \"X\",\n \"Ku\",\n + \ \"K\",\n \"Ka\"\n ]\n },\n + \ \"sar:center_frequency\": {\n \"title\": \"Center + Frequency (GHz)\",\n \"type\": \"number\"\n },\n \"sar:polarizations\": + {\n \"title\": \"Polarizations\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"maxItems\": 4,\n \"uniqueItems\": + true,\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"HH\",\n \"VV\",\n + \ \"HV\",\n \"VH\"\n ]\n }\n + \ },\n \"sar:product_type\": {\n \"title\": + \"Product type\",\n \"type\": \"string\",\n \"examples\": + [\n \"SSC\",\n \"MGD\",\n \"SGC\"\n + \ ]\n },\n \"sar:resolution_range\": {\n + \ \"title\": \"Resolution range (m)\",\n \"type\": + \"number\",\n \"minimum\": 0\n },\n \"sar:resolution_azimuth\": + {\n \"title\": \"Resolution azimuth (m)\",\n \"type\": + \"number\",\n \"minimum\": 0\n },\n \"sar:pixel_spacing_range\": + {\n \"title\": \"Pixel spacing range (m)\",\n \"type\": + \"number\",\n \"minimum\": 0\n },\n \"sar:pixel_spacing_azimuth\": + {\n \"title\": \"Pixel spacing azimuth (m)\",\n \"type\": + \"number\",\n \"minimum\": 0\n },\n \"sar:looks_range\": + {\n \"title\": \"Looks range\",\n \"type\": \"integer\",\n + \ \"minimum\": 0\n },\n \"sar:looks_azimuth\": + {\n \"title\": \"Looks azimuth\",\n \"type\": \"integer\",\n + \ \"minimum\": 0\n },\n \"sar:looks_equivalent_number\": + {\n \"title\": \"Equivalent number of looks (ENL)\",\n \"type\": + \"number\",\n \"minimum\": 0\n },\n \"sar:observation_direction\": + {\n \"title\": \"Antenna pointing direction\",\n \"type\": + \"string\",\n \"enum\": [\n \"left\",\n \"right\"\n + \ ]\n }\n }\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"sar:polarizations\": + {\n \"title\": \"Polarizations\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n + \ \"type\": \"string\",\n \"enum\": [\n \"HH\",\n + \ \"VV\",\n \"HV\",\n \"VH\"\n + \ ]\n }\n }\n }\n }\n + \ }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '3946' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:26 GMT + ETag: + - '"8546ced8239a833de59c3c153dab1ad77f34c598818da6695196e7449d680592"' + Expires: + - Wed, 27 Sep 2023 21:26:26 GMT + Source-Age: + - '1' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 62f0280c01e800ba2df7cae53d8c8497e6ce3140 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 44FE:318E:4CEC:5F62:65149ABB + X-Served-By: + - cache-lga21945-LGA + X-Timer: + - S1695849687.947004,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/sat/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Sat Extension\",\n \"description\": \"STAC + Sat Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/sat\"\n },\n {\n \"$ref\": + \"../../../item-spec/json-schema/instrument.json\"\n }\n ],\n \"definitions\": + {\n \"sat\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\"\n + \ ],\n \"properties\": {\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [],\n \"properties\": {\n \"sat:relative_orbit\": + {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n + \ \"sat:orbit_state\": {\n \"title\": \"Orbit State\",\n + \ \"type\": \"string\",\n \"enum\": [\n \"ascending\",\n + \ \"descending\",\n \"geostationary\"\n ]\n + \ }\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1008' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:27 GMT + ETag: + - '"90408dbc0c6ce835205fcdbeeab881774f06517052d7c3dbcf6ba7c3ccced7eb"' + Expires: + - Wed, 27 Sep 2023 21:26:27 GMT + Source-Age: + - '12' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - ea940df23670fbc7212b38a96f38af05b6e4b267 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 3DEA:52F9:4998:5BFE:65149ABA + X-Served-By: + - cache-lga21946-LGA + X-Timer: + - S1695849687.067646,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example57].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example57].yaml new file mode 100644 index 000000000..b0ae1c21a --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example57].yaml @@ -0,0 +1,742 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:27 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:27 GMT + Source-Age: + - '17' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - d3a9d52ae9d71ce93c3651b6aa6c44dc7ae147fc + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21980-LGA + X-Timer: + - S1695849687.195011,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:27 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:27 GMT + Source-Age: + - '16' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - be90133e3a02dae4551c32a6bf2ad0c1e82ccac2 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21962-LGA + X-Timer: + - S1695849687.303348,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:27 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:27 GMT + Source-Age: + - '16' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 74ec29f6b438d2cf3cb162201f5689b8c7fc3201 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21931-LGA + X-Timer: + - S1695849687.417143,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:27 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:27 GMT + Source-Age: + - '16' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 7b295d4c6acf839b47bae404587397fbe1cf4c67 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21983-LGA + X-Timer: + - S1695849688.515554,VS0,VE3 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:27 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:27 GMT + Source-Age: + - '16' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - fed124f6d3d859f328830a2320a7b6f55901166e + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21969-LGA + X-Timer: + - S1695849688.633830,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:27 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:27 GMT + Source-Age: + - '16' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 023aa1109b282a595fc14e680686daf8d2e139c8 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21923-LGA + X-Timer: + - S1695849688.756584,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:27 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:27 GMT + Source-Age: + - '16' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - c8b0a57c3c773b51918d9d051b0cb161402b4d31 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21925-LGA + X-Timer: + - S1695849688.851859,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/sat/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Sat Extension\",\n \"description\": \"STAC + Sat Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/sat\"\n },\n {\n \"$ref\": + \"../../../item-spec/json-schema/instrument.json\"\n }\n ],\n \"definitions\": + {\n \"sat\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\"\n + \ ],\n \"properties\": {\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [],\n \"properties\": {\n \"sat:relative_orbit\": + {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n + \ \"sat:orbit_state\": {\n \"title\": \"Orbit State\",\n + \ \"type\": \"string\",\n \"enum\": [\n \"ascending\",\n + \ \"descending\",\n \"geostationary\"\n ]\n + \ }\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1008' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:27 GMT + ETag: + - '"90408dbc0c6ce835205fcdbeeab881774f06517052d7c3dbcf6ba7c3ccced7eb"' + Expires: + - Wed, 27 Sep 2023 21:26:27 GMT + Source-Age: + - '13' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '3' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 66c9a30b07143fedc493c43d73aa3028bae13cc8 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 3DEA:52F9:4998:5BFE:65149ABA + X-Served-By: + - cache-lga21938-LGA + X-Timer: + - S1695849688.948603,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/view/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"View Geometry Extension\",\n \"description\": + \"STAC View Geometry Extension to a STAC Item.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"../../../item-spec/json-schema/item.json\"\n },\n {\n + \ \"$ref\": \"#/definitions/view\"\n }\n ],\n \"definitions\": {\n + \ \"view\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\"\n + \ ],\n \"properties\": {\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [],\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n + \ \"view:incidence_angle\": {\n \"title\": \"Center + incidence angle\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n + \ \"view:sun_azimuth\": {\n \"title\": \"Sun Azimuth\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 360\n },\n \"view:sun_elevation\": {\n \"title\": + \"Sun Elevation\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n }\n }\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1484' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:28 GMT + ETag: + - '"e3e45b623ffe7f49713a2595b631681ba13de3813a1f297508e46360b2becd71"' + Expires: + - Wed, 27 Sep 2023 21:26:28 GMT + Source-Age: + - '11' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 1bd92853cb5aed38f06970cf48e9d7feb6b7b4af + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 95A2:123E:4EAB:6115:65149AB9 + X-Served-By: + - cache-lga21968-LGA + X-Timer: + - S1695849688.057980,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example58].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example58].yaml index 099cddf6f..27e26483b 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example58].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example58].yaml @@ -1,4 +1,230 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"commons\",\n + \ \"checksum\",\n \"datacube\",\n \"scientific\",\n + \ \"version\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"license\": {\n \"title\": + \"Collection License Name\",\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n + \ }\n },\n \"extent\": {\n \"title\": \"Extents\",\n + \ \"type\": \"object\",\n \"required\": [\n \"spatial\",\n + \ \"temporal\"\n ],\n \"properties\": {\n \"spatial\": + {\n \"title\": \"Spatial extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"bbox\"\n ],\n + \ \"properties\": {\n \"bbox\": {\n \"title\": + \"Spatial extents\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"title\": \"Spatial + extent\",\n \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5265' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:28 GMT + ETag: + - '"efa6309742b904ab7b06bab4c30c3ea2e1ce78163892365a7f4ee461716396b3"' + Expires: + - Wed, 27 Sep 2023 21:26:28 GMT + Source-Age: + - '18' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 840573d38123902fdf8d99786577fc7d0f0d2be3 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - BC5C:6DEB:5AD5:6D2C:65149AB5 + X-Served-By: + - cache-lga21922-LGA + X-Timer: + - S1695849688.198867,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1766' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:28 GMT + ETag: + - '"c76fd44b22619705d40fb03a5b1d875e2e786f9ac7a85244758d15cc7cc947a9"' + Expires: + - Wed, 27 Sep 2023 21:26:28 GMT + Source-Age: + - '18' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 80caff11db8df53b72f79e6c5ea6081bb54531c3 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A566:10B3:511A:6368:65149AB6 + X-Served-By: + - cache-lga21977-LGA + X-Timer: + - S1695849688.317525,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: body: null headers: @@ -53,11 +279,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:37 GMT + - Wed, 27 Sep 2023 21:21:28 GMT ETag: - '"13ff4323200a45e6acb12e649221282624758beb0a8f5b3a190160c2aa9d358a"' Expires: - - Fri, 22 Sep 2023 19:19:37 GMT + - Wed, 27 Sep 2023 21:26:28 GMT Source-Age: - '0' Strict-Transport-Security: @@ -67,21 +293,156 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 54a5ea41b001c7e14e6e09571fa246569ed0356d + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 5EF0:5A3E:7524:879D:65149ABB + X-Served-By: + - cache-lga21925-LGA + X-Timer: + - S1695849688.432524,VS0,VE85 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:28 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:28 GMT + Source-Age: + - '18' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 1c2e9a223345f1a4f2658d1d2691bfe25f35932c + - b12a061d60c9266e3a6160cce6519cbe16fa157f X-Frame-Options: - deny X-GitHub-Request-Id: - - 8E7A:17E3:40DE79:4FE679:650DE79D + - 80C0:9989:4651:58BD:65149AB8 X-Served-By: - - cache-den8264-DEN + - cache-lga21929-LGA X-Timer: - - S1695410078.795704,VS0,VE124 + - S1695849689.629606,VS0,VE1 X-XSS-Protection: - 1; mode=block status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example59].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example59].yaml new file mode 100644 index 000000000..ff720048f --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example59].yaml @@ -0,0 +1,972 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:28 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:28 GMT + Source-Age: + - '18' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 7aa48811417c40f4f4bf31050ff9626610d7ef92 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849689.749495,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:28 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:28 GMT + Source-Age: + - '18' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 82565da970640574ce6c8ee7db2bdc36cbb4c20d + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21932-LGA + X-Timer: + - S1695849689.850484,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:28 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:28 GMT + Source-Age: + - '18' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 341c82ef4f1861de48474e62c6692003c857d56c + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21920-LGA + X-Timer: + - S1695849689.948903,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:29 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:29 GMT + Source-Age: + - '18' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 0872b5b5008aeee1ae6cb36814cd6756239f30bc + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21983-LGA + X-Timer: + - S1695849689.059872,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:29 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:29 GMT + Source-Age: + - '18' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 3ca59e1c50e404149c6987f865f2fa9e161f2fc1 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21932-LGA + X-Timer: + - S1695849689.178468,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:29 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:29 GMT + Source-Age: + - '18' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 9213923677d4d2ffbde4f5eb97d43356b2323588 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21962-LGA + X-Timer: + - S1695849689.291501,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:29 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:29 GMT + Source-Age: + - '18' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '15' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - d08b5cc06a963b4c63143bdd7e52f99506a05dc1 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21949-LGA + X-Timer: + - S1695849689.394585,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/scientific/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Scientific Extension\",\n \"description\": + \"STAC Scientific Extension to STAC Items or STAC Collections.\",\n \"oneOf\": + [\n {\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"properties\"\n ],\n \"properties\": {\n + \ \"properties\": {\n \"$ref\": \"#/definitions/scientific\"\n + \ }\n }\n }\n ]\n },\n {\n \"allOf\": + [\n {\n \"$ref\": \"../../../collection-spec/json-schema/collection.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/scientific\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"scientific\": + {\n \"type\": \"object\",\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^(10[.][0-9]{4,}(?:[.][0-9]+)*/(?:(?![%\\\"#? ])\\\\S)+)$\"\n }, + \n \"sci:citation\": {\n \"type\": \"string\", \n \"title\": + \"Proposed Data Citation\"\n },\n \"sci:publications\": {\n + \ \"type\": \"array\",\n \"title\": \"Publications\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^(10[.][0-9]{4,}(?:[.][0-9]+)*/(?:(?![%\\\"#? + ])\\\\S)+)$\"\n }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1692' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:29 GMT + ETag: + - '"13ff4323200a45e6acb12e649221282624758beb0a8f5b3a190160c2aa9d358a"' + Expires: + - Wed, 27 Sep 2023 21:26:29 GMT + Source-Age: + - '1' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 141362fbd1b55a3969e4c7c9aa95a37ca855bfd6 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 5EF0:5A3E:7524:879D:65149ABB + X-Served-By: + - cache-lga21938-LGA + X-Timer: + - S1695849690.509375,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"commons\",\n + \ \"checksum\",\n \"datacube\",\n \"scientific\",\n + \ \"version\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"license\": {\n \"title\": + \"Collection License Name\",\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n + \ }\n },\n \"extent\": {\n \"title\": \"Extents\",\n + \ \"type\": \"object\",\n \"required\": [\n \"spatial\",\n + \ \"temporal\"\n ],\n \"properties\": {\n \"spatial\": + {\n \"title\": \"Spatial extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"bbox\"\n ],\n + \ \"properties\": {\n \"bbox\": {\n \"title\": + \"Spatial extents\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"title\": \"Spatial + extent\",\n \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5265' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:29 GMT + ETag: + - '"efa6309742b904ab7b06bab4c30c3ea2e1ce78163892365a7f4ee461716396b3"' + Expires: + - Wed, 27 Sep 2023 21:26:29 GMT + Source-Age: + - '19' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 313b63df7c777d8b503435501faaa86a0552eef5 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - BC5C:6DEB:5AD5:6D2C:65149AB5 + X-Served-By: + - cache-lga21925-LGA + X-Timer: + - S1695849690.625420,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1766' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:29 GMT + ETag: + - '"c76fd44b22619705d40fb03a5b1d875e2e786f9ac7a85244758d15cc7cc947a9"' + Expires: + - Wed, 27 Sep 2023 21:26:29 GMT + Source-Age: + - '20' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - c735aa35436f06526e6143784fb5e83301e6cf20 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A566:10B3:511A:6368:65149AB6 + X-Served-By: + - cache-lga21923-LGA + X-Timer: + - S1695849690.726926,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/checksum/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Checksum Extension Specification\",\n \"description\": + \"STAC Checksum Extension to a STAC Item\",\n \"allOf\": [\n {\n \"$ref\": + \"../../../item-spec/json-schema/item.json#/definitions/core\"\n },\n {\n + \ \"$ref\": \"#/definitions/checksum\"\n }\n ],\n \"definitions\": + {\n \"checksum\": {\n \"type\": \"object\",\n \"properties\": + {\n \"links\": {\n \"title\": \"Links\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/checksums\"\n + \ }\n },\n \"assets\": {\n \"title\": \"Assets\",\n + \ \"type\": \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/checksums\"\n }\n }\n + \ }\n }\n },\n \"checksums\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"checksum:multihash\": {\n \"type\": + \"string\",\n \"pattern\": \"^[a-f0-9]+$\",\n \"title\": + \"Multihash\"\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1044' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:29 GMT + ETag: + - '"9bde8b6875408a186b283e6e3dd3edb01bc2b938e55a0491b0b7f4e06f0faccb"' + Expires: + - Wed, 27 Sep 2023 21:26:29 GMT + Source-Age: + - '16' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 05b660e84244b3d535c7a79a9e1523ecb42b74c5 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 31C8:14EE:4B22:5D82:65149AB9 + X-Served-By: + - cache-lga21968-LGA + X-Timer: + - S1695849690.830589,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example5].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example5].yaml index 9bc2769ac..df82e7244 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example5].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example5].yaml @@ -1,4 +1,231 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"checksum\",\n + \ \"scientific\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"version\": {\n \"title\": + \"Collection Version\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": \"array\",\n + \ \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Homepage\",\n \"type\": \"string\",\n + \ \"format\": \"url\"\n }\n }\n }\n + \ },\n \"extent\": {\n \"title\": \"Extents\",\n \"type\": + \"object\",\n \"required\": [\n \"spatial\",\n \"temporal\"\n + \ ],\n \"properties\": {\n \"spatial\": {\n \"title\": + \"Spatial extent object\",\n \"type\": \"object\",\n \"required\": + [\n \"bbox\"\n ],\n \"properties\": + {\n \"bbox\": {\n \"title\": \"Spatial extents\",\n + \ \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"title\": \"Spatial extent\",\n + \ \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"properties\": {\n \"title\": \"Common properties\",\n \"type\": + \"object\"\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '4394' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:20:56 GMT + ETag: + - '"031974beaaaf6f0b5c6877dc97088d9e2aff3bc8962df33ff291dddded353f09"' + Expires: + - Wed, 27 Sep 2023 21:25:56 GMT + Source-Age: + - '1' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 201eb7a7eeeeb65b5a28236a2f376c11efe7ee01 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - D9DE:5675:4608:5765:65149AAF + X-Served-By: + - cache-lga21922-LGA + X-Timer: + - S1695849657.828611,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n },\n \"summaries\": {\n + \ \"$ref\": \"#/definitions/summaries\"\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": {\n \"min\": + {\n \"title\": \"Minimum value\",\n \"type\": + [\"number\", \"string\"]\n },\n \"max\": {\n \"title\": + \"Maximum value\",\n \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": \"Set of + values\",\n \"type\": \"array\",\n \"minItems\": 1,\n + \ \"items\": {\n \"description\": \"Any data type could + occur.\"\n }\n }\n ]\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2638' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:20:56 GMT + ETag: + - '"3b514933a3747f038125935624a13df108e30fe1cb8f9660a7f54ac6d4765ce9"' + Expires: + - Wed, 27 Sep 2023 21:25:56 GMT + Source-Age: + - '1' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - b47249e2d7b1270e185989f71ba07c22add1710f + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 146A:2756:778FB:90182:65149AAF + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849657.929010,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: body: null headers: @@ -44,11 +271,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:25 GMT + - Wed, 27 Sep 2023 21:20:57 GMT ETag: - '"cffbb0036f526b016f24477e0ad674e75b6fefb89708ca796686de9d2e2a67ed"' Expires: - - Fri, 22 Sep 2023 19:19:25 GMT + - Wed, 27 Sep 2023 21:25:57 GMT Source-Age: - '0' Strict-Transport-Security: @@ -58,21 +285,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 40704b44f11f6106acf8d53816123097dbd3d0f9 + - d96b9b47aecbb2752d935b57e4aa1892c7716302 X-Frame-Options: - deny X-GitHub-Request-Id: - - 3FD2:5416:308CE6:3B68BE:650DE78B + - A022:6156:4B68:5D65:65149AB0 X-Served-By: - - cache-den8254-DEN + - cache-lga21925-LGA X-Timer: - - S1695410065.396658,VS0,VE128 + - S1695849657.047376,VS0,VE101 X-XSS-Protection: - 1; mode=block status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example60].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example60].yaml new file mode 100644 index 000000000..777c4fd8d --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example60].yaml @@ -0,0 +1,445 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"commons\",\n + \ \"checksum\",\n \"datacube\",\n \"scientific\",\n + \ \"version\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"license\": {\n \"title\": + \"Collection License Name\",\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n + \ }\n },\n \"extent\": {\n \"title\": \"Extents\",\n + \ \"type\": \"object\",\n \"required\": [\n \"spatial\",\n + \ \"temporal\"\n ],\n \"properties\": {\n \"spatial\": + {\n \"title\": \"Spatial extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"bbox\"\n ],\n + \ \"properties\": {\n \"bbox\": {\n \"title\": + \"Spatial extents\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"title\": \"Spatial + extent\",\n \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5265' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:29 GMT + ETag: + - '"efa6309742b904ab7b06bab4c30c3ea2e1ce78163892365a7f4ee461716396b3"' + Expires: + - Wed, 27 Sep 2023 21:26:29 GMT + Source-Age: + - '19' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 8195ff194790cd7b79a7eb284b35409a1731e5be + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - BC5C:6DEB:5AD5:6D2C:65149AB5 + X-Served-By: + - cache-lga21925-LGA + X-Timer: + - S1695849690.963558,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1766' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:30 GMT + ETag: + - '"c76fd44b22619705d40fb03a5b1d875e2e786f9ac7a85244758d15cc7cc947a9"' + Expires: + - Wed, 27 Sep 2023 21:26:30 GMT + Source-Age: + - '20' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 5bbef7a97c1d5ccdd16142dbedbbc021b5cafd2c + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A566:10B3:511A:6368:65149AB6 + X-Served-By: + - cache-lga21977-LGA + X-Timer: + - S1695849690.083976,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/version/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Versioning Indicators Extension\",\n \"description\": + \"STAC Versioning Indicators Extension for STAC Items or STAC Collections.\",\n + \ \"oneOf\": [\n {\n \"allOf\": [\n {\n \"$ref\": + \"../../../item-spec/json-schema/item.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"properties\"\n ],\n + \ \"properties\": {\n \"properties\": {\n \"$ref\": + \"#/definitions/version_extension\"\n }\n }\n }\n + \ ]\n },\n {\n \"allOf\": [\n {\n \"$ref\": + \"../../../collection-spec/json-schema/collection.json\"\n },\n {\n + \ \"$ref\": \"#/definitions/version_extension\"\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"version_extension\": {\n \"type\": + \"object\",\n \"required\": [\n \"version\"\n ],\n \"properties\": + {\n \"version\": {\n \"type\": \"string\",\n \"title\": + \"Version\"\n }, \n \"deprecated\": {\n \"type\": \"boolean\", + \n \"title\": \"Deprecated\",\n \"default\": false\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1181' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:30 GMT + ETag: + - '"3ad87031bb638da9b48582cbf730c047e1075960364c8fc992381ddf5467f296"' + Expires: + - Wed, 27 Sep 2023 21:26:30 GMT + Source-Age: + - '8' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - aa46199892e93e8ece50fd3eb511ca5f34bdc143 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D8F:2B48:65149ABB + X-Served-By: + - cache-lga21922-LGA + X-Timer: + - S1695849690.185152,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:30 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:30 GMT + Source-Age: + - '20' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 2cf8055aac067b5f55f3f917506e8a2fc404418b + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21968-LGA + X-Timer: + - S1695849690.299957,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example61].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example61].yaml new file mode 100644 index 000000000..e602becf1 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example61].yaml @@ -0,0 +1,886 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:30 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:30 GMT + Source-Age: + - '20' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 86e6b7baa14d45108b2c8926571ad8d9bcc258be + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21920-LGA + X-Timer: + - S1695849690.428276,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:30 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:30 GMT + Source-Age: + - '20' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 5f70169fa8ceaefe2189595ac4c7836ccd755864 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21932-LGA + X-Timer: + - S1695849691.545437,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:30 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:30 GMT + Source-Age: + - '19' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 0e31b6fa62e2998d33fef24276ac39c851421e20 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849691.641960,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:30 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:30 GMT + Source-Age: + - '20' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 3a67eec500dd938037088aaf20fb5ff54f0c0c22 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21929-LGA + X-Timer: + - S1695849691.745494,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:30 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:30 GMT + Source-Age: + - '20' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - b6713fbcbcfd6ecdf1b47f6f60b339a57c17a4a8 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21976-LGA + X-Timer: + - S1695849691.857367,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:30 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:30 GMT + Source-Age: + - '19' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 89eadcb99ed5b34edf796baf08dfeab28597376b + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21963-LGA + X-Timer: + - S1695849691.974452,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:31 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:31 GMT + Source-Age: + - '19' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 988c3c0c821eb46bfc47cb2209529d6d4e0a6d3e + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21933-LGA + X-Timer: + - S1695849691.082886,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/version/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Versioning Indicators Extension\",\n \"description\": + \"STAC Versioning Indicators Extension for STAC Items or STAC Collections.\",\n + \ \"oneOf\": [\n {\n \"allOf\": [\n {\n \"$ref\": + \"../../../item-spec/json-schema/item.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"properties\"\n ],\n + \ \"properties\": {\n \"properties\": {\n \"$ref\": + \"#/definitions/version_extension\"\n }\n }\n }\n + \ ]\n },\n {\n \"allOf\": [\n {\n \"$ref\": + \"../../../collection-spec/json-schema/collection.json\"\n },\n {\n + \ \"$ref\": \"#/definitions/version_extension\"\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"version_extension\": {\n \"type\": + \"object\",\n \"required\": [\n \"version\"\n ],\n \"properties\": + {\n \"version\": {\n \"type\": \"string\",\n \"title\": + \"Version\"\n }, \n \"deprecated\": {\n \"type\": \"boolean\", + \n \"title\": \"Deprecated\",\n \"default\": false\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1181' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:31 GMT + ETag: + - '"3ad87031bb638da9b48582cbf730c047e1075960364c8fc992381ddf5467f296"' + Expires: + - Wed, 27 Sep 2023 21:26:31 GMT + Source-Age: + - '9' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 797981c671d9ebab0b4e4633a0b438c5991f3952 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D8F:2B48:65149ABB + X-Served-By: + - cache-lga21978-LGA + X-Timer: + - S1695849691.182492,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"collection.json#\",\n \"title\": \"STAC Collection Specification\",\n \"description\": + \"This object represents Collections in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"asset\",\n \"commons\",\n + \ \"checksum\",\n \"datacube\",\n \"scientific\",\n + \ \"version\"\n ]\n }\n ]\n + \ }\n },\n \"keywords\": {\n \"title\": \"Keywords\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"license\": {\n \"title\": + \"Collection License Name\",\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\",\n \"enum\": [\n \"producer\",\n + \ \"licensor\",\n \"processor\",\n \"host\"\n + \ ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n + \ }\n },\n \"extent\": {\n \"title\": \"Extents\",\n + \ \"type\": \"object\",\n \"required\": [\n \"spatial\",\n + \ \"temporal\"\n ],\n \"properties\": {\n \"spatial\": + {\n \"title\": \"Spatial extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"bbox\"\n ],\n + \ \"properties\": {\n \"bbox\": {\n \"title\": + \"Spatial extents\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"title\": \"Spatial + extent\",\n \"type\": \"array\",\n \"minItems\": + 4,\n \"maxItems\": 6,\n \"items\": {\n + \ \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5265' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:31 GMT + ETag: + - '"efa6309742b904ab7b06bab4c30c3ea2e1ce78163892365a7f4ee461716396b3"' + Expires: + - Wed, 27 Sep 2023 21:26:31 GMT + Source-Age: + - '21' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 7c6735d3d8d49a1b1377752ab25fe70e73ecec60 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - BC5C:6DEB:5AD5:6D2C:65149AB5 + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849691.292346,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"catalog.json#\",\n \"title\": \"STAC Catalog Specification\",\n \"description\": + \"This object represents Catalogs in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/catalog\"\n }\n + \ ],\n \"definitions\": {\n \"catalog\": {\n \"title\": \"Catalog\",\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"description\",\n \"links\"\n ],\n \"properties\": + {\n \"stac_version\": {\n \"title\": \"STAC version\",\n \"type\": + \"string\",\n \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1766' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:31 GMT + ETag: + - '"c76fd44b22619705d40fb03a5b1d875e2e786f9ac7a85244758d15cc7cc947a9"' + Expires: + - Wed, 27 Sep 2023 21:26:31 GMT + Source-Age: + - '21' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 0bf871c81c76b079df073793be081ad6405eed3f + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A566:10B3:511A:6368:65149AB6 + X-Served-By: + - cache-lga21922-LGA + X-Timer: + - S1695849691.385945,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example62].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example62].yaml new file mode 100644 index 000000000..de4465128 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example62].yaml @@ -0,0 +1,742 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:31 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:31 GMT + Source-Age: + - '21' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 46802545a3eaebc59e97c074be39487f5d57f6d8 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21924-LGA + X-Timer: + - S1695849692.531166,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:31 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:31 GMT + Source-Age: + - '20' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - c616e702dfd69879dc56666194ac553cc839cdc9 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21943-LGA + X-Timer: + - S1695849692.653643,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:31 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:31 GMT + Source-Age: + - '21' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 748c94d332209c100063fe7d63e4bc9a6804cb20 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21970-LGA + X-Timer: + - S1695849692.763465,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:31 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:31 GMT + Source-Age: + - '21' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 9b83f5072cfbfa6cf293f868abc5fc3596e12860 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21982-LGA + X-Timer: + - S1695849692.864245,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:31 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:31 GMT + Source-Age: + - '21' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '3' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 9f486c81a68f1c05d15b58880b6eff11b9ce9db9 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849692.976580,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:32 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:32 GMT + Source-Age: + - '21' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 90565f9e5da9d52342ce09379e57882210691922 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849692.091429,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:32 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:32 GMT + Source-Age: + - '20' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 04d95b259b4e4aac7e84519627ab1b576d328834 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849692.191105,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/sat/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Sat Extension\",\n \"description\": \"STAC + Sat Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/sat\"\n },\n {\n \"$ref\": + \"../../../item-spec/json-schema/instrument.json\"\n }\n ],\n \"definitions\": + {\n \"sat\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\"\n + \ ],\n \"properties\": {\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [],\n \"properties\": {\n \"sat:relative_orbit\": + {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n + \ \"sat:orbit_state\": {\n \"title\": \"Orbit State\",\n + \ \"type\": \"string\",\n \"enum\": [\n \"ascending\",\n + \ \"descending\",\n \"geostationary\"\n ]\n + \ }\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1008' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:32 GMT + ETag: + - '"90408dbc0c6ce835205fcdbeeab881774f06517052d7c3dbcf6ba7c3ccced7eb"' + Expires: + - Wed, 27 Sep 2023 21:26:32 GMT + Source-Age: + - '18' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - a195389463e8df1bbaef633c3626751d84789ad5 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 3DEA:52F9:4998:5BFE:65149ABA + X-Served-By: + - cache-lga21979-LGA + X-Timer: + - S1695849692.289600,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/view/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"View Geometry Extension\",\n \"description\": + \"STAC View Geometry Extension to a STAC Item.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"../../../item-spec/json-schema/item.json\"\n },\n {\n + \ \"$ref\": \"#/definitions/view\"\n }\n ],\n \"definitions\": {\n + \ \"view\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\"\n + \ ],\n \"properties\": {\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [],\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n + \ \"view:incidence_angle\": {\n \"title\": \"Center + incidence angle\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n + \ \"view:sun_azimuth\": {\n \"title\": \"Sun Azimuth\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 360\n },\n \"view:sun_elevation\": {\n \"title\": + \"Sun Elevation\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n }\n }\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1484' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:32 GMT + ETag: + - '"e3e45b623ffe7f49713a2595b631681ba13de3813a1f297508e46360b2becd71"' + Expires: + - Wed, 27 Sep 2023 21:26:32 GMT + Source-Age: + - '15' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - b9020b4c3e931d72f85baf2f26a98d1869baa998 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 95A2:123E:4EAB:6115:65149AB9 + X-Served-By: + - cache-lga21936-LGA + X-Timer: + - S1695849692.394254,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example63].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example63].yaml new file mode 100644 index 000000000..c318ae985 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example63].yaml @@ -0,0 +1,578 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:32 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:32 GMT + Source-Age: + - '22' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - d45eb80dfb3586f575549587b2083f1213d88ae2 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21982-LGA + X-Timer: + - S1695849693.513896,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:32 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:32 GMT + Source-Age: + - '22' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 59ed524508867fd99f93fb4c2e118593644dfe35 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21979-LGA + X-Timer: + - S1695849693.610824,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:32 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:32 GMT + Source-Age: + - '22' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 1e7283c21897f44ee8e38f64df1f25831c2a1a92 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21933-LGA + X-Timer: + - S1695849693.702145,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:32 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:32 GMT + Source-Age: + - '21' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 99d5d7998e66d07c2418f2d97ecbfe11e1ffc0e3 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21963-LGA + X-Timer: + - S1695849693.801749,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:32 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:32 GMT + Source-Age: + - '22' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - a81b73f18399e5d677c3fb79ab8e3bdb485a5a86 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21976-LGA + X-Timer: + - S1695849693.901202,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:33 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:33 GMT + Source-Age: + - '21' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - e2ca034cfa5fafe11284a9a2a02560f77af90157 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21942-LGA + X-Timer: + - S1695849693.011440,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:33 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:33 GMT + Source-Age: + - '21' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 9bc5d19c0a8c0b83b32077c6a5411bf5d96da325 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21924-LGA + X-Timer: + - S1695849693.157136,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example64].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example64].yaml new file mode 100644 index 000000000..b9d9c60f0 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example64].yaml @@ -0,0 +1,759 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:33 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:33 GMT + Source-Age: + - '23' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 194445318d36c9d767cd8c5cfe2216ba153003a5 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21922-LGA + X-Timer: + - S1695849693.271917,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:33 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:33 GMT + Source-Age: + - '23' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - f4ed58299309b454f3d3e14bc525fe27648b5f3b + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849693.371824,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:33 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:33 GMT + Source-Age: + - '22' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 7f4f88c4c567ad1e674cdd497f22512403ac8503 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849693.484999,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:33 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:33 GMT + Source-Age: + - '22' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 2e9a2c66e0218ca925ba113927dd53274e824ead + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849694.588843,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:33 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:33 GMT + Source-Age: + - '22' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - add7570961557de7527fee3c2d37b294772da8c2 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21982-LGA + X-Timer: + - S1695849694.702424,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:33 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:33 GMT + Source-Age: + - '22' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 9c60a6e1fca9a0065e6e2638e753a010258d9e28 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21970-LGA + X-Timer: + - S1695849694.823585,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:33 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:33 GMT + Source-Age: + - '22' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 31cc6c6f8483774fabe49e3b60b1b598779d1913 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21982-LGA + X-Timer: + - S1695849694.935989,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/eo/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"EO Extension\",\n \"description\": \"STAC + EO Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/eo\"\n }\n ],\n \"definitions\": + {\n \"eo\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"properties\": + {\n \"type\": \"object\",\n \"required\": [\n \"eo:gsd\",\n + \ \"eo:bands\"\n ],\n \"properties\": {\n \"eo:gsd\": + {\n \"title\": \"Ground Sample Distance\",\n \"type\": + \"number\"\n },\n \"eo:bands\": {\n \"title\": + \"Bands\",\n \"type\": \"array\",\n \"items\": {\n + \ \"properties\": {\n \"name\": {\n \"title\": + \"Name of the band\",\n \"type\": \"string\"\n },\n + \ \"common_name\": {\n \"title\": \"Common + Name of the band\",\n \"type\": \"string\"\n },\n + \ \"center_wavelength\": {\n \"title\": + \"Center Wavelength\",\n \"type\": \"number\"\n },\n + \ \"full_width_half_max\": {\n \"title\": + \"Full Width Half Max (FWHM)\",\n \"type\": \"number\"\n + \ }\n }\n }\n },\n + \ \"eo:cloud_cover\": {\n \"title\": \"Cloud Cover\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 100\n }\n }\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:bands\": {\n + \ \"title\": \"Band References\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n + \ \"type\": \"integer\",\n \"minimum\": 0\n + \ }\n }\n }\n }\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2166' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:34 GMT + ETag: + - '"4ce0628a6b4d2c8e80ff67d116b60196c8f9d0a017a63b3557ebd6b46f42dfef"' + Expires: + - Wed, 27 Sep 2023 21:26:34 GMT + Source-Age: + - '22' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 96be6cb80be08ace801859036a8a811d5f5d41d6 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A28C:5675:47DE:59B0:65149AB9 + X-Served-By: + - cache-lga21936-LGA + X-Timer: + - S1695849694.050768,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/view/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"View Geometry Extension\",\n \"description\": + \"STAC View Geometry Extension to a STAC Item.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"../../../item-spec/json-schema/item.json\"\n },\n {\n + \ \"$ref\": \"#/definitions/view\"\n }\n ],\n \"definitions\": {\n + \ \"view\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\"\n + \ ],\n \"properties\": {\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [],\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n + \ \"view:incidence_angle\": {\n \"title\": \"Center + incidence angle\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n + \ \"view:sun_azimuth\": {\n \"title\": \"Sun Azimuth\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 360\n },\n \"view:sun_elevation\": {\n \"title\": + \"Sun Elevation\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n }\n }\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1484' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:34 GMT + ETag: + - '"e3e45b623ffe7f49713a2595b631681ba13de3813a1f297508e46360b2becd71"' + Expires: + - Wed, 27 Sep 2023 21:26:34 GMT + Source-Age: + - '17' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 0794a106c6bc40adfcbd15177cc1f95c5a2b19d9 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 95A2:123E:4EAB:6115:65149AB9 + X-Served-By: + - cache-lga21979-LGA + X-Timer: + - S1695849694.178418,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example65].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example65].yaml new file mode 100644 index 000000000..a151aa64e --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example65].yaml @@ -0,0 +1,759 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:34 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:34 GMT + Source-Age: + - '24' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - d5733ea4a48921ff3c90cb168ef424aac99d2ecf + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849694.319159,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:34 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:34 GMT + Source-Age: + - '23' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 2ee009ab0aef2cde626b0cee10772383c67b9519 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21931-LGA + X-Timer: + - S1695849694.448422,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:34 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:34 GMT + Source-Age: + - '23' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '3' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 1f7f89e2fb123c92bd872cac7cbc4d654d54ebf0 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849695.570782,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:34 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:34 GMT + Source-Age: + - '24' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 127cc1f53ffdc8aba1dbb145c06bf319c2206f33 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21934-LGA + X-Timer: + - S1695849695.706257,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:34 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:34 GMT + Source-Age: + - '23' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - c880bef50edbbbe7c1f3528af6ab84d6d5d8b191 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21921-LGA + X-Timer: + - S1695849695.819173,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:34 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:34 GMT + Source-Age: + - '23' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 19e4bb42049c3a08d08f4d1ba0a701af7c32ebc9 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21954-LGA + X-Timer: + - S1695849695.926716,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:35 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:35 GMT + Source-Age: + - '23' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 823ad7cee0a03340d0a73a32218ca9738625ea55 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21922-LGA + X-Timer: + - S1695849695.025192,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/eo/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"EO Extension\",\n \"description\": \"STAC + EO Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/eo\"\n }\n ],\n \"definitions\": + {\n \"eo\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"properties\": + {\n \"type\": \"object\",\n \"required\": [\n \"eo:gsd\",\n + \ \"eo:bands\"\n ],\n \"properties\": {\n \"eo:gsd\": + {\n \"title\": \"Ground Sample Distance\",\n \"type\": + \"number\"\n },\n \"eo:bands\": {\n \"title\": + \"Bands\",\n \"type\": \"array\",\n \"items\": {\n + \ \"properties\": {\n \"name\": {\n \"title\": + \"Name of the band\",\n \"type\": \"string\"\n },\n + \ \"common_name\": {\n \"title\": \"Common + Name of the band\",\n \"type\": \"string\"\n },\n + \ \"center_wavelength\": {\n \"title\": + \"Center Wavelength\",\n \"type\": \"number\"\n },\n + \ \"full_width_half_max\": {\n \"title\": + \"Full Width Half Max (FWHM)\",\n \"type\": \"number\"\n + \ }\n }\n }\n },\n + \ \"eo:cloud_cover\": {\n \"title\": \"Cloud Cover\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 100\n }\n }\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:bands\": {\n + \ \"title\": \"Band References\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n + \ \"type\": \"integer\",\n \"minimum\": 0\n + \ }\n }\n }\n }\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2166' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:35 GMT + ETag: + - '"4ce0628a6b4d2c8e80ff67d116b60196c8f9d0a017a63b3557ebd6b46f42dfef"' + Expires: + - Wed, 27 Sep 2023 21:26:35 GMT + Source-Age: + - '23' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 98e48402a56ea2e7c53407ac02cf91ee6c96b75f + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A28C:5675:47DE:59B0:65149AB9 + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849695.129937,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/view/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"View Geometry Extension\",\n \"description\": + \"STAC View Geometry Extension to a STAC Item.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"../../../item-spec/json-schema/item.json\"\n },\n {\n + \ \"$ref\": \"#/definitions/view\"\n }\n ],\n \"definitions\": {\n + \ \"view\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\"\n + \ ],\n \"properties\": {\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [],\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n + \ \"view:incidence_angle\": {\n \"title\": \"Center + incidence angle\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n + \ \"view:sun_azimuth\": {\n \"title\": \"Sun Azimuth\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 360\n },\n \"view:sun_elevation\": {\n \"title\": + \"Sun Elevation\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n }\n }\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1484' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:35 GMT + ETag: + - '"e3e45b623ffe7f49713a2595b631681ba13de3813a1f297508e46360b2becd71"' + Expires: + - Wed, 27 Sep 2023 21:26:35 GMT + Source-Age: + - '18' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 473d3e009caef20b786f7f77af18ab8fbe5b93b2 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 95A2:123E:4EAB:6115:65149AB9 + X-Served-By: + - cache-lga21924-LGA + X-Timer: + - S1695849695.251626,VS0,VE4 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example66].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example66].yaml new file mode 100644 index 000000000..d92947b13 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example66].yaml @@ -0,0 +1,759 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:35 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:35 GMT + Source-Age: + - '25' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - daa6ca845124cd9532cca592ed4f64001ce8a3da + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21969-LGA + X-Timer: + - S1695849695.385033,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:35 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:35 GMT + Source-Age: + - '25' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 743f27ddedf924779aaf4fff1123c750633f7598 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21925-LGA + X-Timer: + - S1695849696.515552,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:35 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:35 GMT + Source-Age: + - '25' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 27528baedb29eea0b3696aaab994708ad86e8e95 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21926-LGA + X-Timer: + - S1695849696.635105,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:35 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:35 GMT + Source-Age: + - '24' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - f7971fd0399ee9ff803bd5c760cd74ffe390c3a5 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21967-LGA + X-Timer: + - S1695849696.733433,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:35 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:35 GMT + Source-Age: + - '25' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 692fe5cc4b72ddc64d1842baa6635038ee65ade0 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21980-LGA + X-Timer: + - S1695849696.870109,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:35 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:35 GMT + Source-Age: + - '24' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - a86338090fba725076106e490911a48aa9ed2192 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21960-LGA + X-Timer: + - S1695849696.972520,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:36 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:36 GMT + Source-Age: + - '24' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 5e475e7466e7380561821455204e076c7de4f9e7 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21931-LGA + X-Timer: + - S1695849696.077175,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/eo/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"EO Extension\",\n \"description\": \"STAC + EO Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/eo\"\n }\n ],\n \"definitions\": + {\n \"eo\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"properties\": + {\n \"type\": \"object\",\n \"required\": [\n \"eo:gsd\",\n + \ \"eo:bands\"\n ],\n \"properties\": {\n \"eo:gsd\": + {\n \"title\": \"Ground Sample Distance\",\n \"type\": + \"number\"\n },\n \"eo:bands\": {\n \"title\": + \"Bands\",\n \"type\": \"array\",\n \"items\": {\n + \ \"properties\": {\n \"name\": {\n \"title\": + \"Name of the band\",\n \"type\": \"string\"\n },\n + \ \"common_name\": {\n \"title\": \"Common + Name of the band\",\n \"type\": \"string\"\n },\n + \ \"center_wavelength\": {\n \"title\": + \"Center Wavelength\",\n \"type\": \"number\"\n },\n + \ \"full_width_half_max\": {\n \"title\": + \"Full Width Half Max (FWHM)\",\n \"type\": \"number\"\n + \ }\n }\n }\n },\n + \ \"eo:cloud_cover\": {\n \"title\": \"Cloud Cover\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 100\n }\n }\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:bands\": {\n + \ \"title\": \"Band References\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n + \ \"type\": \"integer\",\n \"minimum\": 0\n + \ }\n }\n }\n }\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2166' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:36 GMT + ETag: + - '"4ce0628a6b4d2c8e80ff67d116b60196c8f9d0a017a63b3557ebd6b46f42dfef"' + Expires: + - Wed, 27 Sep 2023 21:26:36 GMT + Source-Age: + - '24' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - dd8c4cdfa34fa63cb17fe00c91b14a6d334acef7 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A28C:5675:47DE:59B0:65149AB9 + X-Served-By: + - cache-lga21949-LGA + X-Timer: + - S1695849696.181277,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/view/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"View Geometry Extension\",\n \"description\": + \"STAC View Geometry Extension to a STAC Item.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"../../../item-spec/json-schema/item.json\"\n },\n {\n + \ \"$ref\": \"#/definitions/view\"\n }\n ],\n \"definitions\": {\n + \ \"view\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\"\n + \ ],\n \"properties\": {\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [],\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n + \ \"view:incidence_angle\": {\n \"title\": \"Center + incidence angle\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n + \ \"view:sun_azimuth\": {\n \"title\": \"Sun Azimuth\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 360\n },\n \"view:sun_elevation\": {\n \"title\": + \"Sun Elevation\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n }\n }\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1484' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:36 GMT + ETag: + - '"e3e45b623ffe7f49713a2595b631681ba13de3813a1f297508e46360b2becd71"' + Expires: + - Wed, 27 Sep 2023 21:26:36 GMT + Source-Age: + - '19' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 205fab1bcf8e64fd523c7011f30b2f1c63ef0170 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 95A2:123E:4EAB:6115:65149AB9 + X-Served-By: + - cache-lga21921-LGA + X-Timer: + - S1695849696.294533,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example67].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example67].yaml new file mode 100644 index 000000000..1a6e756e6 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example67].yaml @@ -0,0 +1,759 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:36 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:36 GMT + Source-Age: + - '26' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - aa7d322199ef031b5733b66980d9e41ced611624 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21976-LGA + X-Timer: + - S1695849696.437294,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:36 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:36 GMT + Source-Age: + - '26' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - b3bc6325a7fba577b5da22a3aac3eb977add98f6 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849697.560390,VS0,VE3 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:36 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:36 GMT + Source-Age: + - '26' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - ced3649fefde09d741ad8648fe31ddb354dddc04 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21921-LGA + X-Timer: + - S1695849697.688356,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:36 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:36 GMT + Source-Age: + - '26' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - d564be782848c38fbda9365464f81a04fe7573f8 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21920-LGA + X-Timer: + - S1695849697.796075,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:36 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:36 GMT + Source-Age: + - '25' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - e8b6e517348197281a96b254646d079c1d7952fd + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21969-LGA + X-Timer: + - S1695849697.899034,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:37 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:37 GMT + Source-Age: + - '25' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 76cc3a85ac16ae29b5b6decd146921164f9c1215 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21926-LGA + X-Timer: + - S1695849697.006049,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:37 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:37 GMT + Source-Age: + - '25' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 2b65865419e5ba4479cb51741a56b0b551a138d9 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21925-LGA + X-Timer: + - S1695849697.139002,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/eo/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"EO Extension\",\n \"description\": \"STAC + EO Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/eo\"\n }\n ],\n \"definitions\": + {\n \"eo\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"properties\": + {\n \"type\": \"object\",\n \"required\": [\n \"eo:gsd\",\n + \ \"eo:bands\"\n ],\n \"properties\": {\n \"eo:gsd\": + {\n \"title\": \"Ground Sample Distance\",\n \"type\": + \"number\"\n },\n \"eo:bands\": {\n \"title\": + \"Bands\",\n \"type\": \"array\",\n \"items\": {\n + \ \"properties\": {\n \"name\": {\n \"title\": + \"Name of the band\",\n \"type\": \"string\"\n },\n + \ \"common_name\": {\n \"title\": \"Common + Name of the band\",\n \"type\": \"string\"\n },\n + \ \"center_wavelength\": {\n \"title\": + \"Center Wavelength\",\n \"type\": \"number\"\n },\n + \ \"full_width_half_max\": {\n \"title\": + \"Full Width Half Max (FWHM)\",\n \"type\": \"number\"\n + \ }\n }\n }\n },\n + \ \"eo:cloud_cover\": {\n \"title\": \"Cloud Cover\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 100\n }\n }\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:bands\": {\n + \ \"title\": \"Band References\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n + \ \"type\": \"integer\",\n \"minimum\": 0\n + \ }\n }\n }\n }\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2166' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:37 GMT + ETag: + - '"4ce0628a6b4d2c8e80ff67d116b60196c8f9d0a017a63b3557ebd6b46f42dfef"' + Expires: + - Wed, 27 Sep 2023 21:26:37 GMT + Source-Age: + - '25' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 7513fd156125b4847091d51674935cdaae7a1b1b + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A28C:5675:47DE:59B0:65149AB9 + X-Served-By: + - cache-lga21969-LGA + X-Timer: + - S1695849697.245971,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/view/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"View Geometry Extension\",\n \"description\": + \"STAC View Geometry Extension to a STAC Item.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"../../../item-spec/json-schema/item.json\"\n },\n {\n + \ \"$ref\": \"#/definitions/view\"\n }\n ],\n \"definitions\": {\n + \ \"view\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\"\n + \ ],\n \"properties\": {\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [],\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n + \ \"view:incidence_angle\": {\n \"title\": \"Center + incidence angle\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n + \ \"view:sun_azimuth\": {\n \"title\": \"Sun Azimuth\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 360\n },\n \"view:sun_elevation\": {\n \"title\": + \"Sun Elevation\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n }\n }\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1484' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:37 GMT + ETag: + - '"e3e45b623ffe7f49713a2595b631681ba13de3813a1f297508e46360b2becd71"' + Expires: + - Wed, 27 Sep 2023 21:26:37 GMT + Source-Age: + - '20' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 4fb9a1d06070c1839d3427ee36635d45a1ad797c + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 95A2:123E:4EAB:6115:65149AB9 + X-Served-By: + - cache-lga21920-LGA + X-Timer: + - S1695849697.344037,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example68].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example68].yaml new file mode 100644 index 000000000..ed81817ef --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example68].yaml @@ -0,0 +1,578 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:37 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:37 GMT + Source-Age: + - '27' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 43212d0078f8a15206eb39943774af981fbe6c0d + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21960-LGA + X-Timer: + - S1695849697.490420,VS0,VE2 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:37 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:37 GMT + Source-Age: + - '27' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 1eac3d504d5712b759c1159c396e26cb089dba0b + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21980-LGA + X-Timer: + - S1695849698.632463,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:37 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:37 GMT + Source-Age: + - '27' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - d75e386318bc22d9ae44c6aeda5bc5e23b77a6fc + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21926-LGA + X-Timer: + - S1695849698.723593,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:37 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:37 GMT + Source-Age: + - '27' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 3e65968df1845718597cd53937a8e1c5f5194267 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21977-LGA + X-Timer: + - S1695849698.831533,VS0,VE25 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:37 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:37 GMT + Source-Age: + - '27' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - ba3b1adbadb7198d8333421e2c4c3641d7eeff0d + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21935-LGA + X-Timer: + - S1695849698.957371,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:38 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:38 GMT + Source-Age: + - '27' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - f50a18540284cefc6561ad2483fdffe4bf27c3fd + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21980-LGA + X-Timer: + - S1695849698.092948,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:38 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:38 GMT + Source-Age: + - '26' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 1cbda0889b27133065593b0744beaf1cc806973e + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21971-LGA + X-Timer: + - S1695849698.188261,VS0,VE8 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example69].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example69].yaml new file mode 100644 index 000000000..a01843065 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example69].yaml @@ -0,0 +1,759 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"common_metadata\": + {\n \"allOf\": [\n {\n \"$ref\": \"basics.json\"\n },\n + \ {\n \"$ref\": \"datetimerange.json\"\n },\n {\n + \ \"$ref\": \"instrument.json\"\n },\n {\n \"$ref\": + \"licensing.json\"\n },\n {\n \"$ref\": \"metadata.json\"\n + \ },\n {\n \"$ref\": \"provider.json\"\n }\n + \ ]\n },\n \"core\": {\n \"allOf\": [\n {\n \"$ref\": + \"https://geojson.org/schema/Feature.json\"\n },\n {\n \"type\": + \"object\",\n \"required\": [\n \"stac_version\",\n \"id\",\n + \ \"links\",\n \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.9.0\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"commons\",\n \"datacube\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"projection\",\n \"sar\",\n \"sat\",\n + \ \"scientific\",\n \"version\",\n + \ \"view\"\n ]\n }\n + \ ]\n }\n },\n \"id\": {\n + \ \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"$ref\": + \"#/definitions/asset\"\n }\n },\n \"properties\": + {\n \"allOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"datetime\"\n + \ ],\n \"properties\": {\n \"datetime\": + {\n \"title\": \"Date and Time\",\n \"description\": + \"The searchable date/time of the assets, in UTC (Formatted in RFC 3339) \",\n + \ \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n + \ {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ }\n ]\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"description\": + {\n \"title\": \"Asset description\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Asset type\",\n \"type\": + \"string\"\n },\n \"roles\": {\n \"title\": \"Asset + roles\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '5137' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:38 GMT + ETag: + - '"eb4ef35f5071c45c7b53e7fe6ef92a682455a0de207fcbe27507488c4bfcc9ca"' + Expires: + - Wed, 27 Sep 2023 21:26:38 GMT + Source-Age: + - '28' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - b038e2625fecda54c77903e3ad08a6e571603ed1 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 80C0:9989:4651:58BD:65149AB8 + X-Served-By: + - cache-lga21920-LGA + X-Timer: + - S1695849698.313247,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"basics.json#\",\n \"title\": \"Basic Descriptive Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"title\": {\n \"title\": \"Item + Title\",\n \"description\": \"A human-readable title describing the Item.\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Item Description\",\n \"description\": \"Detailed multi-line description + to fully explain the Item.\",\n \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '475' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:38 GMT + ETag: + - '"2436fa8ce8356cb57ec6581098dc3ea04f5395558aaca6e4008e09eb43f0a9db"' + Expires: + - Wed, 27 Sep 2023 21:26:38 GMT + Source-Age: + - '28' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 99fcc4b4171057f0e18d7801d1b1dabdcdba82bf + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 7904:9289:1DB2:2B65:65149AB8 + X-Served-By: + - cache-lga21974-LGA + X-Timer: + - S1695849698.416095,VS0,VE8 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/datetimerange.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"Date and Time Range Fields\",\n \"type\": + \"object\",\n \"properties\": {\n \"start_datetime\": {\n \"title\": + \"Start Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n }\n },\n \"dependencies\": + {\n \"start_datetime\": {\n \"required\": [\n \"end_datetime\"\n + \ ]\n },\n \"end_datetime\": {\n \"required\": [\n \"start_datetime\"\n + \ ]\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '814' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:38 GMT + ETag: + - '"e1248a7fa9f6feeddb9c683a0fcfcab1b8ea66ae5db2d9a36f0602d44879a0f8"' + Expires: + - Wed, 27 Sep 2023 21:26:38 GMT + Source-Age: + - '28' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 97c1cddac65f597bb60daafb271380361df022c7 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - F4CA:822A:2AB6:3BEA:65149AB9 + X-Served-By: + - cache-lga21929-LGA + X-Timer: + - S1695849699.533769,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"instrument.json#\",\n \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"platform\": {\n \"title\": \"Platform\",\n + \ \"type\": \"string\"\n },\n \"instruments\": {\n \"title\": + \"Instruments\",\n \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"constellation\": {\n \"title\": \"Constellation\",\n + \ \"type\": \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n + \ \"type\": \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '525' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:38 GMT + ETag: + - '"84c39a084fe100d85a10cdeef11399cb06ceed2c623ee37cfbdb03f85d39477c"' + Expires: + - Wed, 27 Sep 2023 21:26:38 GMT + Source-Age: + - '27' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 28ab8bd3dc70f5707778136136db01a0c3095587 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 351C:3EC2:4601:584F:65149AB9 + X-Served-By: + - cache-lga21971-LGA + X-Timer: + - S1695849699.633471,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"licensing.json#\",\n \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": + \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '244' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:38 GMT + ETag: + - '"d2cd4998f5154410f2dc79b42af5baaf118454186cee8d12066a5f42d3e821fc"' + Expires: + - Wed, 27 Sep 2023 21:26:38 GMT + Source-Age: + - '27' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 4308f57eab20aa44ec20a9fc23dad5f6be8d21d4 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 0DF8:9989:4669:58DD:65149AB9 + X-Served-By: + - cache-lga21921-LGA + X-Timer: + - S1695849699.729765,VS0,VE0 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/metadata.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"metadata.json#\",\n \"title\": \"Metadata Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"created\": {\n \"title\": \"Metadata Creation\",\n + \ \"type\": \"string\",\n \"format\": \"date-time\"\n },\n \"updated\": + {\n \"title\": \"Metadata Last Update\",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '384' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:38 GMT + ETag: + - '"a99228769e5d0400f7b006fa153262053fb7a6ffdb3b8bbf51c4df37a82098f6"' + Expires: + - Wed, 27 Sep 2023 21:26:38 GMT + Source-Age: + - '27' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - b881ca1c0bb4d2a320689e44269138942a8c1b14 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - DE6A:152E:1D56:2AF7:65149AB9 + X-Served-By: + - cache-lga21922-LGA + X-Timer: + - S1695849699.853096,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"provider.json#\",\n \"title\": \"Provider Fields\",\n \"type\": \"object\",\n + \ \"properties\": {\n \"providers\": {\n \"title\": \"Providers\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": {\n + \ \"name\": {\n \"title\": \"Organization name\",\n \"type\": + \"string\"\n },\n \"description\": {\n \"title\": + \"Organization description\",\n \"type\": \"string\"\n },\n + \ \"roles\": {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '973' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:38 GMT + ETag: + - '"a92eac8e15643dce5b9165724ce350d2ee5edad5f8baca7140c79ce8ce0da8c6"' + Expires: + - Wed, 27 Sep 2023 21:26:38 GMT + Source-Age: + - '27' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 7642f834673ae10352153cd9f5d7b541cdd24e66 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - CC28:19A7:5ED4:7137:65149AB9 + X-Served-By: + - cache-lga21942-LGA + X-Timer: + - S1695849699.987206,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/eo/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"EO Extension\",\n \"description\": \"STAC + EO Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/eo\"\n }\n ],\n \"definitions\": + {\n \"eo\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\",\n + \ \"assets\"\n ],\n \"properties\": {\n \"properties\": + {\n \"type\": \"object\",\n \"required\": [\n \"eo:gsd\",\n + \ \"eo:bands\"\n ],\n \"properties\": {\n \"eo:gsd\": + {\n \"title\": \"Ground Sample Distance\",\n \"type\": + \"number\"\n },\n \"eo:bands\": {\n \"title\": + \"Bands\",\n \"type\": \"array\",\n \"items\": {\n + \ \"properties\": {\n \"name\": {\n \"title\": + \"Name of the band\",\n \"type\": \"string\"\n },\n + \ \"common_name\": {\n \"title\": \"Common + Name of the band\",\n \"type\": \"string\"\n },\n + \ \"center_wavelength\": {\n \"title\": + \"Center Wavelength\",\n \"type\": \"number\"\n },\n + \ \"full_width_half_max\": {\n \"title\": + \"Full Width Half Max (FWHM)\",\n \"type\": \"number\"\n + \ }\n }\n }\n },\n + \ \"eo:cloud_cover\": {\n \"title\": \"Cloud Cover\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 100\n }\n }\n },\n \"assets\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:bands\": {\n + \ \"title\": \"Band References\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n + \ \"type\": \"integer\",\n \"minimum\": 0\n + \ }\n }\n }\n }\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '2166' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:39 GMT + ETag: + - '"4ce0628a6b4d2c8e80ff67d116b60196c8f9d0a017a63b3557ebd6b46f42dfef"' + Expires: + - Wed, 27 Sep 2023 21:26:39 GMT + Source-Age: + - '27' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - c7a76db7bfb8f0647f4b92f682e4972a6b1265e2 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - A28C:5675:47DE:59B0:65149AB9 + X-Served-By: + - cache-lga21978-LGA + X-Timer: + - S1695849699.081491,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.9.0/extensions/view/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"View Geometry Extension\",\n \"description\": + \"STAC View Geometry Extension to a STAC Item.\",\n \"allOf\": [\n {\n + \ \"$ref\": \"../../../item-spec/json-schema/item.json\"\n },\n {\n + \ \"$ref\": \"#/definitions/view\"\n }\n ],\n \"definitions\": {\n + \ \"view\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\"\n + \ ],\n \"properties\": {\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [],\n \"properties\": {\n \"view:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n + \ \"view:incidence_angle\": {\n \"title\": \"Center + incidence angle\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n + \ \"view:sun_azimuth\": {\n \"title\": \"Sun Azimuth\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 360\n },\n \"view:sun_elevation\": {\n \"title\": + \"Sun Elevation\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n }\n }\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '1484' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:21:39 GMT + ETag: + - '"e3e45b623ffe7f49713a2595b631681ba13de3813a1f297508e46360b2becd71"' + Expires: + - Wed, 27 Sep 2023 21:26:39 GMT + Source-Age: + - '22' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 49d20cca9184796c0a63aecdcc7c234092abee2c + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 95A2:123E:4EAB:6115:65149AB9 + X-Served-By: + - cache-lga21964-LGA + X-Timer: + - S1695849699.185052,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example6].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example6].yaml index 310304ea1..489c330db 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example6].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example6].yaml @@ -1,4 +1,151 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"core\": {\n + \ \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"stac_version\",\n \"id\",\n \"links\",\n + \ \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"cube\",\n \"datetime-range\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"sar\",\n \"scientific\"\n ]\n + \ }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n + \ },\n \"additionalProperties\": false\n },\n + \ \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"title\": \"Date and + Time\",\n \"description\": \"The searchable date/time of + the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n + \ \"title\": {\n \"title\": \"Item Title\",\n + \ \"description\": \"A human-readable title describing the + item.\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Item Licenses\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Organization + name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": + \"Organization roles\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n + \ ]\n }\n },\n + \ \"url\": {\n \"title\": \"Homepage\",\n + \ \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n + \ },\n \"created\": {\n \"title\": + \"Metadata created at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": + \"Metadata updated at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"type\": {\n + \ \"title\": \"Asset type\",\n \"type\": \"string\"\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '6074' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:20:57 GMT + ETag: + - '"4e24763d74f0d463b0cb6c63fc099e0b59447c7a049b93ffda4c6eb9eb54ae95"' + Expires: + - Wed, 27 Sep 2023 21:25:57 GMT + Source-Age: + - '1' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 2d60102e7878dbcc8112891b77467cdb19aa0839 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 2630:09BA:1F7C:2D49:65149AB0 + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849657.273810,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK - request: body: null headers: @@ -51,11 +198,11 @@ interactions: Cross-Origin-Resource-Policy: - cross-origin Date: - - Fri, 22 Sep 2023 19:14:25 GMT + - Wed, 27 Sep 2023 21:20:57 GMT ETag: - '"ceed674cee48a43076989957b8a4f96d8acba3f52df1d52a3745e28225923aac"' Expires: - - Fri, 22 Sep 2023 19:19:25 GMT + - Wed, 27 Sep 2023 21:25:57 GMT Source-Age: - '0' Strict-Transport-Security: @@ -65,21 +212,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Content-Type-Options: - nosniff X-Fastly-Request-ID: - - 789be90528dc3eac4a359f106aee05e7c33a4528 + - 306e4ad8b16e3148b41746525a481cca85001dff X-Frame-Options: - deny X-GitHub-Request-Id: - - 20A4:5416:308CF4:3B68D2:650DE78D + - 5C96:822A:29A4:3A7F:65149AAF X-Served-By: - - cache-den8267-DEN + - cache-lga21973-LGA X-Timer: - - S1695410066.634579,VS0,VE150 + - S1695849657.381882,VS0,VE73 X-XSS-Protection: - 1; mode=block status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example70].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example70].yaml index 3e86d120c..686c80905 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example70].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example70].yaml @@ -49,7 +49,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '551' Cache-Control: - max-age=600 Connection: @@ -59,11 +59,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:38 GMT + - Wed, 27 Sep 2023 21:21:39 GMT ETag: - - '"647f85f4-84e"' + - '"65147dc1-84e"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -71,19 +71,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 9f6eac612a9bbfca1bf9fbeef41d30c25ce71cf1 + - 05852fd9391b31c09b7c551479792e9d6859a5af X-GitHub-Request-Id: - - 5A5E:129E:CFAEF3:11AFDB3:650DE79E + - B38E:8027:25BC98:33E9C0:6514878E X-Served-By: - - cache-den8258-DEN + - cache-lga21951-LGA X-Timer: - - S1695410078.239184,VS0,VE60 + - S1695849699.317797,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:24:38 GMT + - Wed, 27 Sep 2023 20:00:38 GMT x-proxy-cache: - MISS status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example71].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example71].yaml new file mode 100644 index 000000000..f573f5715 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example71].yaml @@ -0,0 +1,92 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '551' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:39 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - bef0d7fab53fcf873306df64fde471d192551aa6 + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21939-LGA + X-Timer: + - S1695849699.467525,VS0,VE2 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example72].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example72].yaml index 71341b551..18a71c717 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example72].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example72].yaml @@ -89,7 +89,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '551' Cache-Control: - max-age=600 Connection: @@ -99,11 +99,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:38 GMT + - Wed, 27 Sep 2023 21:21:39 GMT ETag: - - '"647f85f4-14e2"' + - '"65147dc1-14e2"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -111,21 +111,109 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 4ca9da301e60dc8df1844b60f209f5f131cda628 + - 0b5fdadaa19116d7d03cb28cfd9786c36cba3f1f X-GitHub-Request-Id: - - 5B30:1039:34786E:47F5EF:650DE79E + - DC8C:6FEB:26F7FB:34E32D:6514878E X-Served-By: - - cache-den8244-DEN + - cache-lga21923-LGA X-Timer: - - S1695410078.419417,VS0,VE128 + - S1695849700.598315,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:38 GMT - x-origin-cache: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '551' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:39 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - d5e4d89fa7d34a137dfe2c66d058c1a487ce0980 + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21952-LGA + X-Timer: + - S1695849700.727486,VS0,VE1 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT x-proxy-cache: - MISS status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example73].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example73].yaml new file mode 100644 index 000000000..6f4284555 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example73].yaml @@ -0,0 +1,222 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json#\",\n + \ \"title\": \"STAC Collection Specification\",\n \"description\": \"This + object represents Collections in a SpatioTemporal Asset Catalog.\",\n \"allOf\": + [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"keywords\": + {\n \"title\": \"Keywords\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n + \ \"providers\": {\n \"type\": \"array\",\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"title\": + \"Organization name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n },\n \"extent\": + {\n \"title\": \"Extents\",\n \"type\": \"object\",\n \"required\": + [\n \"spatial\",\n \"temporal\"\n ],\n \"properties\": + {\n \"spatial\": {\n \"title\": \"Spatial extent object\",\n + \ \"type\": \"object\",\n \"required\": [\n \"bbox\"\n + \ ],\n \"properties\": {\n \"bbox\": + {\n \"title\": \"Spatial extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Spatial extent\",\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\":4,\n + \ \"maxItems\":4\n },\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '551' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5346' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:39 GMT + ETag: + - '"65147dc1-14e2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - c275811d15475e19121899162259deebb2ccc6e1 + X-GitHub-Request-Id: + - DC8C:6FEB:26F7FB:34E32D:6514878E + X-Served-By: + - cache-lga21955-LGA + X-Timer: + - S1695849700.852974,VS0,VE2 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '551' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:39 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 46c64b5ec3a49841b70220be57736b63d29093de + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849700.959879,VS0,VE2 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example74].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example74].yaml index 737477090..77c7551cf 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example74].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example74].yaml @@ -1,4 +1,511 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '595' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:40 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 43d3ee46db5edc4aca79be6fa081e6fe83159d52 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21945-LGA + X-Timer: + - S1695849700.089161,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '595' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:40 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - b7b9ba97d4d7b8b88fee4f140520363c6d6f6b0e + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21933-LGA + X-Timer: + - S1695849700.198078,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '595' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:40 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 30e639c7fce56f855d3524fbc1f54423d97f437b + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21956-LGA + X-Timer: + - S1695849700.329660,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '595' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:40 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 86d7a852de5d08afbeaaabdf402a018f8faa11ee + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21944-LGA + X-Timer: + - S1695849700.444556,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '595' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:40 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 404e2ce6cbd725c60b40cb71b228dae9f4b9b0f9 + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21957-LGA + X-Timer: + - S1695849701.545196,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '595' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:40 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 90dcf9e3d70bbe1603f69ddd40f5891ba80b5a84 + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21938-LGA + X-Timer: + - S1695849701.652055,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK - request: body: null headers: @@ -50,7 +557,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '551' Cache-Control: - max-age=600 Connection: @@ -60,11 +567,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:38 GMT + - Wed, 27 Sep 2023 21:21:40 GMT ETag: - - '"647f85f4-939"' + - '"65147dc1-939"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -72,19 +579,239 @@ interactions: Via: - 1.1 varnish X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 536f807d1628f3f23d8e4cba2e2b1fdb9add81c2 + X-GitHub-Request-Id: + - 309A:103C:4EC3CA:746F62:65148550 + X-Served-By: + - cache-lga21972-LGA + X-Timer: + - S1695849701.761029,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:04 GMT + x-proxy-cache: - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '552' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:40 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 3bf50a0df16560164862aecb862ef8ccc529db19 + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21959-LGA + X-Timer: + - S1695849701.886396,VS0,VE4 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json#\",\n + \ \"title\": \"STAC Collection Specification\",\n \"description\": \"This + object represents Collections in a SpatioTemporal Asset Catalog.\",\n \"allOf\": + [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"keywords\": + {\n \"title\": \"Keywords\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n + \ \"providers\": {\n \"type\": \"array\",\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"title\": + \"Organization name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n },\n \"extent\": + {\n \"title\": \"Extents\",\n \"type\": \"object\",\n \"required\": + [\n \"spatial\",\n \"temporal\"\n ],\n \"properties\": + {\n \"spatial\": {\n \"title\": \"Spatial extent object\",\n + \ \"type\": \"object\",\n \"required\": [\n \"bbox\"\n + \ ],\n \"properties\": {\n \"bbox\": + {\n \"title\": \"Spatial extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Spatial extent\",\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\":4,\n + \ \"maxItems\":4\n },\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '552' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5346' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:41 GMT + ETag: + - '"65147dc1-14e2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 196d2fc5adf1ff19469661f60177f975b02b46c0 + - e35bd7cda40fc28d3044088c56de2d6f641d3adf X-GitHub-Request-Id: - - 8A72:311F:D22AC3:11D7D06:650DE79E + - DC8C:6FEB:26F7FB:34E32D:6514878E X-Served-By: - - cache-den8247-DEN + - cache-lga21928-LGA X-Timer: - - S1695410079.678936,VS0,VE62 + - S1695849701.009389,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:38 GMT + - Wed, 27 Sep 2023 20:00:38 GMT x-proxy-cache: - MISS status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example75].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example75].yaml index cf6bbde47..dea7baa2a 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example75].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example75].yaml @@ -1,4 +1,224 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json#\",\n + \ \"title\": \"STAC Collection Specification\",\n \"description\": \"This + object represents Collections in a SpatioTemporal Asset Catalog.\",\n \"allOf\": + [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"keywords\": + {\n \"title\": \"Keywords\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n + \ \"providers\": {\n \"type\": \"array\",\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"title\": + \"Organization name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n },\n \"extent\": + {\n \"title\": \"Extents\",\n \"type\": \"object\",\n \"required\": + [\n \"spatial\",\n \"temporal\"\n ],\n \"properties\": + {\n \"spatial\": {\n \"title\": \"Spatial extent object\",\n + \ \"type\": \"object\",\n \"required\": [\n \"bbox\"\n + \ ],\n \"properties\": {\n \"bbox\": + {\n \"title\": \"Spatial extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Spatial extent\",\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\":4,\n + \ \"maxItems\":4\n },\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '552' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5346' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:41 GMT + ETag: + - '"65147dc1-14e2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - a8cb2e54455322c9baf5b233367921ebee66db92 + X-GitHub-Request-Id: + - DC8C:6FEB:26F7FB:34E32D:6514878E + X-Served-By: + - cache-lga21947-LGA + X-Timer: + - S1695849701.145024,VS0,VE2 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '553' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:41 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 016da0e486080579b9ef92509973a1f6b947cce4 + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21949-LGA + X-Timer: + - S1695849701.264125,VS0,VE1 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK - request: body: null headers: @@ -30,7 +250,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '551' Cache-Control: - max-age=600 Connection: @@ -40,11 +260,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:38 GMT + - Wed, 27 Sep 2023 21:21:41 GMT ETag: - - '"647f85f4-3ab"' + - '"65147dc1-3ab"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -52,19 +272,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 5abca25f88f9fb04633ac69c568510be7a3fced7 + - 186f58192826ec2103a4f3e37bfea838ca25fb39 X-GitHub-Request-Id: - - 4B4A:7A71:BD44FF:1089B8A:650DE79E + - 201C:4972:1D6688:2BBE31:65149ABD X-Served-By: - - cache-den8236-DEN + - cache-lga21954-LGA X-Timer: - - S1695410079.860890,VS0,VE58 + - S1695849701.372241,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:24:38 GMT + - Wed, 27 Sep 2023 21:22:29 GMT x-origin-cache: - HIT x-proxy-cache: @@ -72,4 +292,134 @@ interactions: status: code: 200 message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '596' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:41 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - af3373a16d72e695993f7f7f6a8c3497b729acc4 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21979-LGA + X-Timer: + - S1695849701.493849,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example76].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example76].yaml index 51045b02d..004ac1e32 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example76].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example76].yaml @@ -1,4 +1,224 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json#\",\n + \ \"title\": \"STAC Collection Specification\",\n \"description\": \"This + object represents Collections in a SpatioTemporal Asset Catalog.\",\n \"allOf\": + [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"keywords\": + {\n \"title\": \"Keywords\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n + \ \"providers\": {\n \"type\": \"array\",\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"title\": + \"Organization name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n },\n \"extent\": + {\n \"title\": \"Extents\",\n \"type\": \"object\",\n \"required\": + [\n \"spatial\",\n \"temporal\"\n ],\n \"properties\": + {\n \"spatial\": {\n \"title\": \"Spatial extent object\",\n + \ \"type\": \"object\",\n \"required\": [\n \"bbox\"\n + \ ],\n \"properties\": {\n \"bbox\": + {\n \"title\": \"Spatial extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Spatial extent\",\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\":4,\n + \ \"maxItems\":4\n },\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '553' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5346' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:41 GMT + ETag: + - '"65147dc1-14e2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - a1e75b22b34ec7a7baf645f0d9939ec30082ce7b + X-GitHub-Request-Id: + - DC8C:6FEB:26F7FB:34E32D:6514878E + X-Served-By: + - cache-lga21961-LGA + X-Timer: + - S1695849702.655008,VS0,VE2 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '553' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:41 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 04457f37439c05153be295e1fbb505489fad0ac4 + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21930-LGA + X-Timer: + - S1695849702.799172,VS0,VE1 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK - request: body: null headers: @@ -118,7 +338,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '552' Cache-Control: - max-age=600 Connection: @@ -128,11 +348,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:39 GMT + - Wed, 27 Sep 2023 21:21:41 GMT ETag: - - '"647f85f4-1d66"' + - '"65147dc1-1d66"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -140,19 +360,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - f069a69668bf97dd5b910365d550d009bc9127af + - 7f242b9a1c3f19f699e6fd0fcf0e6fcc7715b0ae X-GitHub-Request-Id: - - 31DA:5B90:D027EE:11B75BB:650DE79E + - DF4C:7B4C:2A5E4E:3A5A00:65149ABD X-Served-By: - - cache-den8242-DEN + - cache-lga21979-LGA X-Timer: - - S1695410079.023605,VS0,VE54 + - S1695849702.912212,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:24:39 GMT + - Wed, 27 Sep 2023 21:22:30 GMT x-origin-cache: - HIT x-proxy-cache: @@ -160,4 +380,134 @@ interactions: status: code: 200 message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '597' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:42 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - c69799bb6212cdc47b600ef294243c6b3a2e266b + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21970-LGA + X-Timer: + - S1695849702.029841,VS0,VE7 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example77].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example77].yaml new file mode 100644 index 000000000..9b8269885 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example77].yaml @@ -0,0 +1,890 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '597' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:42 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 57b6f04ce4b53c5d468f55f91cf9456a3e7f1852 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21924-LGA + X-Timer: + - S1695849702.188094,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '597' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:42 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 5e2e8bba1e9d3b784e9670a505ad159aa3fb9dfc + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849702.314900,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '597' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:42 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 3f1b3b006701aec18d016c4aff578f081b47bacd + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21935-LGA + X-Timer: + - S1695849702.421944,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '597' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:42 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 47ac5a47130935d3d5882ccb74fcc655ff248df5 + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21965-LGA + X-Timer: + - S1695849703.540189,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '597' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:42 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - ef863e62f3f8d32bb433f90aa6be8420f40234e9 + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21977-LGA + X-Timer: + - S1695849703.667955,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '597' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:42 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - d7638dc72ea1885e650879ae304b512e4d20d6c6 + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21980-LGA + X-Timer: + - S1695849703.802283,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/datacube/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/datacube/json-schema/schema.json#\",\n + \ \"title\": \"Data Cube Extension\",\n \"description\": \"STAC Data Cube + Extension to STAC Items and STAC Collections\",\n \"oneOf\": [\n {\n \"allOf\": + [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"properties\"\n ],\n \"properties\": {\n + \ \"properties\": {\n \"$ref\": \"#/definitions/datacube\"\n + \ }\n }\n }\n ]\n },\n {\n \"allOf\": + [\n {\n \"$ref\": \"../../../collection-spec/json-schema/collection.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"$ref\": \"#/definitions/datacube\"\n }\n + \ ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": {\n \"type\": + \"object\",\n \"required\": [\n \"stac_extensions\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"enum\": [\n \"datacube\",\n + \ \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/datacube/json-schema/schema.json\"\n + \ ]\n }\n }\n }\n },\n \"datacube\": + {\n \"type\": \"object\",\n \"required\": [\n \"cube:dimensions\"\n + \ ],\n \"properties\": {\n \"cube:dimensions\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"anyOf\": + [\n {\n \"$ref\": \"#/definitions/objects/additional_dimension\"\n + \ },\n {\n \"$ref\": \"#/definitions/objects/horizontal_spatial_dimension\"\n + \ },\n {\n \"$ref\": \"#/definitions/objects/vertical_spatial_dimension\"\n + \ },\n {\n \"$ref\": \"#/definitions/objects/temporal_dimension\"\n + \ }\n ]\n }\n }\n }\n },\n + \ \"objects\": {\n \"additional_dimension\": {\n \"title\": + \"Additional Dimension Object\",\n \"type\": \"object\",\n \"anyOf\": + [\n {\n \"required\": [\n \"type\",\n \"extent\"\n + \ ]\n },\n {\n \"required\": [\n \"type\",\n + \ \"values\"\n ]\n }\n ],\n \"not\": + {\n \"required\": [\"axis\"]\n },\n \"properties\": + {\n \"type\": {\n \"allOf\": [\n {\n \"type\": + \"string\"\n },\n {\n \"not\": {\n + \ \"type\": \"string\",\n \"const\": \"spatial\"\n + \ }\n }\n ]\n },\n \"description\": + {\n \"$ref\": \"#/definitions/description\"\n },\n \"extent\": + {\n \"$ref\": \"#/definitions/extent_open\"\n },\n \"values\": + {\n \"$ref\": \"#/definitions/values\"\n },\n \"step\": + {\n \"$ref\": \"#/definitions/step\"\n },\n \"unit\": + {\n \"$ref\": \"#/definitions/unit\"\n },\n \"reference_system\": + {\n \"type\": \"string\"\n }\n }\n },\n \"horizontal_spatial_dimension\": + {\n \"title\": \"Horizontal Spatial Dimension Object\",\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"axis\",\n + \ \"extent\"\n ],\n \"properties\": {\n \"type\": + {\n \"$ref\": \"#/definitions/type_spatial\"\n },\n \"axis\": + {\n \"$ref\": \"#/definitions/axis_xy\"\n },\n \"description\": + {\n \"$ref\": \"#/definitions/description\"\n },\n \"extent\": + {\n \"$ref\": \"#/definitions/extent_closed\"\n },\n \"values\": + {\n \"$ref\": \"#/definitions/values_numeric\"\n },\n + \ \"step\": {\n \"$ref\": \"#/definitions/step\"\n },\n + \ \"reference_system\": {\n \"$ref\": \"#/definitions/reference_system_spatial\"\n + \ }\n }\n },\n \"vertical_spatial_dimension\": {\n + \ \"title\": \"Vertical Spatial Dimension Object\",\n \"type\": + \"object\",\n \"anyOf\": [\n {\n \"required\": + [\n \"type\",\n \"axis\",\n \"extent\"\n + \ ]\n },\n {\n \"required\": [\n \"type\",\n + \ \"axis\",\n \"values\"\n ]\n }\n + \ ],\n \"properties\": {\n \"type\": {\n \"$ref\": + \"#/definitions/type_spatial\"\n },\n \"axis\": {\n \"$ref\": + \"#/definitions/axis_z\"\n },\n \"description\": {\n \"$ref\": + \"#/definitions/description\"\n },\n \"extent\": {\n \"$ref\": + \"#/definitions/extent_open\"\n },\n \"values\": {\n \"$ref\": + \"#/definitions/values\"\n },\n \"step\": {\n \"$ref\": + \"#/definitions/step\"\n },\n \"unit\": {\n \"$ref\": + \"#/definitions/unit\"\n },\n \"reference_system\": {\n + \ \"$ref\": \"#/definitions/reference_system_spatial\"\n }\n + \ }\n },\n \"temporal_dimension\": {\n \"title\": \"Temporal + Dimension Object\",\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"extent\"\n ],\n \"not\": + {\n \"required\": [\"axis\"]\n },\n \"properties\": + {\n \"type\": {\n \"type\": \"string\",\n \"const\": + \"temporal\"\n },\n \"description\": {\n \"$ref\": + \"#/definitions/description\"\n },\n \"values\": {\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"extent\": {\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": 2,\n \"items\": + {\n \"type\": [\n \"string\",\n \"null\"\n + \ ]\n }\n },\n \"step\": {\n \"type\": + [\n \"string\",\n \"null\"\n ]\n }\n + \ }\n }\n },\n \"type_spatial\": {\n \"type\": \"string\",\n + \ \"const\": \"spatial\"\n },\n \"axis_xy\": {\n \"type\": + \"string\",\n \"enum\": [\n \"x\",\n \"y\"\n ]\n },\n + \ \"axis_z\": {\n \"type\": \"string\",\n \"const\": \"z\"\n },\n + \ \"extent_closed\": {\n \"type\": \"array\",\n \"minItems\": + 2,\n \"maxItems\": 2,\n \"items\": {\n \"type\": \"number\"\n + \ }\n },\n \"extent_open\": {\n \"type\": \"array\",\n \"minItems\": + 2,\n \"maxItems\": 2,\n \"items\": {\n \"type\": [\n \"number\",\n + \ \"null\"\n ]\n }\n },\n \"values_numeric\": {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"type\": + \"number\"\n }\n },\n \"values\": {\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"oneOf\": [\n {\n + \ \"type\": \"number\"\n },\n {\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"step\": {\n \"type\": + [\n \"number\",\n \"null\"\n ]\n },\n \"unit\": {\n + \ \"type\": \"string\"\n },\n \"reference_system_spatial\": {\n + \ \"type\": [\n \"string\",\n \"number\",\n \"object\"\n + \ ],\n \"default\": 4326\n },\n \"description\": {\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '553' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '7526' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:42 GMT + ETag: + - '"65147dc1-1d66"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - ecbab0c1e15cb8160b6109ae65072eddea5436a5 + X-GitHub-Request-Id: + - DF4C:7B4C:2A5E4E:3A5A00:65149ABD + X-Served-By: + - cache-lga21934-LGA + X-Timer: + - S1695849703.904932,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json#\",\n + \ \"title\": \"STAC Collection Specification\",\n \"description\": \"This + object represents Collections in a SpatioTemporal Asset Catalog.\",\n \"allOf\": + [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"keywords\": + {\n \"title\": \"Keywords\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n + \ \"providers\": {\n \"type\": \"array\",\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"title\": + \"Organization name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n },\n \"extent\": + {\n \"title\": \"Extents\",\n \"type\": \"object\",\n \"required\": + [\n \"spatial\",\n \"temporal\"\n ],\n \"properties\": + {\n \"spatial\": {\n \"title\": \"Spatial extent object\",\n + \ \"type\": \"object\",\n \"required\": [\n \"bbox\"\n + \ ],\n \"properties\": {\n \"bbox\": + {\n \"title\": \"Spatial extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Spatial extent\",\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\":4,\n + \ \"maxItems\":4\n },\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '554' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5346' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:43 GMT + ETag: + - '"65147dc1-14e2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - abfb20f22a74f533645ccf565625db9a7058a34d + X-GitHub-Request-Id: + - DC8C:6FEB:26F7FB:34E32D:6514878E + X-Served-By: + - cache-lga21920-LGA + X-Timer: + - S1695849703.019706,VS0,VE2 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '554' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:43 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 8e24edd348c25fa71539353a46ec0c7c5a4e0fc6 + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21972-LGA + X-Timer: + - S1695849703.115961,VS0,VE2 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example78].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example78].yaml index 7325a5d33..ab78d1a84 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example78].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example78].yaml @@ -1,4 +1,511 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '598' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:43 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 94b47dde6d659bf0be65eee023c43481bc38b5df + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21923-LGA + X-Timer: + - S1695849703.255794,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '598' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:43 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - d859f01131bd3f7118f1cf6924536828afa33e6e + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21974-LGA + X-Timer: + - S1695849703.374993,VS0,VE4 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '598' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:43 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 30bd72eab7f030871b927cb6fb097aeb77903b5c + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21976-LGA + X-Timer: + - S1695849703.490945,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '598' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:43 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 3821777df40ef8a2db5ebefb2158309c4c9e2f03 + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21979-LGA + X-Timer: + - S1695849704.604941,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '598' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:43 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - bc15eaf0046f60a76d80ea1d1ad92fc2fa06ca91 + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21933-LGA + X-Timer: + - S1695849704.722679,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '598' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:43 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 1fe6c754052eece6293d24cc06577d7d522ff68a + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21921-LGA + X-Timer: + - S1695849704.837353,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK - request: body: null headers: @@ -45,7 +552,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '554' Cache-Control: - max-age=600 Connection: @@ -55,11 +562,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:39 GMT + - Wed, 27 Sep 2023 21:21:43 GMT ETag: - - '"647f85f4-805"' + - '"65147dc1-805"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -67,19 +574,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 2c1fedcf2e2792ceecbbfa4a33e57407a6b796f6 + - b857d402afda80f7b37bd55733cc5203b33fa532 X-GitHub-Request-Id: - - 1BDC:7454:C7A920:112F90F:650DE79E + - C5E4:3891:21EDA0:302569:65149ABD X-Served-By: - - cache-den8228-DEN + - cache-lga21973-LGA X-Timer: - - S1695410079.245692,VS0,VE59 + - S1695849704.945835,VS0,VE5 expires: - - Fri, 22 Sep 2023 19:24:39 GMT + - Wed, 27 Sep 2023 21:22:30 GMT x-origin-cache: - HIT x-proxy-cache: @@ -134,7 +641,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '554' Cache-Control: - max-age=600 Connection: @@ -144,11 +651,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:39 GMT + - Wed, 27 Sep 2023 21:21:44 GMT ETag: - - '"647f85f4-829"' + - '"65147dc1-829"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -156,21 +663,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - b901caa39a51c00eea9b294c5f4144c05a5a681d + - 129cf0c5f38278d29fa96ba6935a1c8518c0b17a X-GitHub-Request-Id: - - 74E4:3314:C53864:1108886:650DE79E + - CCB2:76FD:21A196:30210A:65149ABC X-Served-By: - - cache-den8255-DEN + - cache-lga21942-LGA X-Timer: - - S1695410079.405558,VS0,VE59 + - S1695849704.063418,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:39 GMT - x-origin-cache: - - HIT + - Wed, 27 Sep 2023 21:22:30 GMT x-proxy-cache: - MISS status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example79].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example79].yaml index 405adf118..4bd655f88 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example79].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example79].yaml @@ -1,4 +1,224 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json#\",\n + \ \"title\": \"STAC Collection Specification\",\n \"description\": \"This + object represents Collections in a SpatioTemporal Asset Catalog.\",\n \"allOf\": + [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"keywords\": + {\n \"title\": \"Keywords\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n + \ \"providers\": {\n \"type\": \"array\",\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"title\": + \"Organization name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n },\n \"extent\": + {\n \"title\": \"Extents\",\n \"type\": \"object\",\n \"required\": + [\n \"spatial\",\n \"temporal\"\n ],\n \"properties\": + {\n \"spatial\": {\n \"title\": \"Spatial extent object\",\n + \ \"type\": \"object\",\n \"required\": [\n \"bbox\"\n + \ ],\n \"properties\": {\n \"bbox\": + {\n \"title\": \"Spatial extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Spatial extent\",\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\":4,\n + \ \"maxItems\":4\n },\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '555' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5346' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:44 GMT + ETag: + - '"65147dc1-14e2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 6cf4f4e1900416e3513cf906c097908786fb4592 + X-GitHub-Request-Id: + - DC8C:6FEB:26F7FB:34E32D:6514878E + X-Served-By: + - cache-lga21924-LGA + X-Timer: + - S1695849704.198193,VS0,VE5 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '556' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:44 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - b3091aa469685017f51ffb57a56fe565e64f9c9b + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21982-LGA + X-Timer: + - S1695849704.324300,VS0,VE2 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK - request: body: null headers: @@ -40,7 +260,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '554' Cache-Control: - max-age=600 Connection: @@ -50,11 +270,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:39 GMT + - Wed, 27 Sep 2023 21:21:44 GMT ETag: - - '"647f85f4-65f"' + - '"65147dc1-65f"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -62,19 +282,21 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - b3af59930b0faa9e790581d4535cbb30ddd0cfd6 + - 35f0b6b7decf90d703029c8a69236d5fcb44ef33 X-GitHub-Request-Id: - - 31DA:5B90:D02824:11B7600:650DE79F + - 97B4:5948:20C838:2F026A:65149ABD X-Served-By: - - cache-den8268-DEN + - cache-lga21969-LGA X-Timer: - - S1695410080.609603,VS0,VE60 + - S1695849704.442879,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:39 GMT + - Wed, 27 Sep 2023 21:22:30 GMT + x-origin-cache: + - HIT x-proxy-cache: - MISS status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example7].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example7].yaml new file mode 100644 index 000000000..6f84d4477 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example7].yaml @@ -0,0 +1,149 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"core\": {\n + \ \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"stac_version\",\n \"id\",\n \"links\",\n + \ \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"cube\",\n \"datetime-range\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"sar\",\n \"scientific\"\n ]\n + \ }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n + \ },\n \"additionalProperties\": false\n },\n + \ \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"title\": \"Date and + Time\",\n \"description\": \"The searchable date/time of + the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n + \ \"title\": {\n \"title\": \"Item Title\",\n + \ \"description\": \"A human-readable title describing the + item.\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Item Licenses\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Organization + name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": + \"Organization roles\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n + \ ]\n }\n },\n + \ \"url\": {\n \"title\": \"Homepage\",\n + \ \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n + \ },\n \"created\": {\n \"title\": + \"Metadata created at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": + \"Metadata updated at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"type\": {\n + \ \"title\": \"Asset type\",\n \"type\": \"string\"\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '6074' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:20:57 GMT + ETag: + - '"4e24763d74f0d463b0cb6c63fc099e0b59447c7a049b93ffda4c6eb9eb54ae95"' + Expires: + - Wed, 27 Sep 2023 21:25:57 GMT + Source-Age: + - '1' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 9cbe94a89153fa9c1ec335cf6e789d1524d5b728 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 2630:09BA:1F7C:2D49:65149AB0 + X-Served-By: + - cache-lga21935-LGA + X-Timer: + - S1695849658.578829,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example80].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example80].yaml new file mode 100644 index 000000000..ba9fd92c8 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example80].yaml @@ -0,0 +1,92 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '556' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:44 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 35451d2e41f34ef903a3951ffb31c70529a8ecad + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849705.585511,VS0,VE1 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example81].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example81].yaml index f9d71e68d..058eb16dc 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example81].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example81].yaml @@ -1,4 +1,511 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '600' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:44 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 2bc98d22cddfee6a70a498de1b2e7298a4abd68f + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21972-LGA + X-Timer: + - S1695849705.711532,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '600' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:44 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - b05039191f560a1023db7580f56bcdce86d23192 + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21979-LGA + X-Timer: + - S1695849705.816757,VS0,VE3 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '600' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:44 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 55048c198d4c0eeba0729af6cc2c24c80642d184 + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21928-LGA + X-Timer: + - S1695849705.922262,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '600' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:45 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 18ab1e1797d79c565fd08dac43e64e7d0e78573b + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21982-LGA + X-Timer: + - S1695849705.034947,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '600' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:45 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 4a9c9cec2d18b0c9da8921257e5a50e3c651be8f + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21937-LGA + X-Timer: + - S1695849705.138878,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '600' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:45 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 078b0f308e195a724afd403c2da327f8374534cb + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21931-LGA + X-Timer: + - S1695849705.271034,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK - request: body: null headers: @@ -77,7 +584,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '555' Cache-Control: - max-age=600 Connection: @@ -87,11 +594,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:39 GMT + - Wed, 27 Sep 2023 21:21:45 GMT ETag: - - '"647f85f4-1226"' + - '"65147dc1-1226"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -99,21 +606,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 1f1df53a05ebca0077b9aa179df491bd5d59cbe2 + - 9436f0f8d34cec6ef30d0c6c99419ab84640a4a2 X-GitHub-Request-Id: - - FF58:25F4:C1D0A9:10D20DA:650DE79F + - 3796:7B4C:2A5E76:3A5A36:65149ABE X-Served-By: - - cache-den8276-DEN + - cache-lga21983-LGA X-Timer: - - S1695410080.788179,VS0,VE63 + - S1695849705.381583,VS0,VE5 expires: - - Fri, 22 Sep 2023 19:24:39 GMT - x-origin-cache: - - HIT + - Wed, 27 Sep 2023 21:22:30 GMT x-proxy-cache: - MISS status: @@ -162,7 +667,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '555' Cache-Control: - max-age=600 Connection: @@ -172,11 +677,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:40 GMT + - Wed, 27 Sep 2023 21:21:45 GMT ETag: - - '"647f85f4-70b"' + - '"65147dc1-70b"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -184,21 +689,239 @@ interactions: Via: - 1.1 varnish X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 02a08ce665abe29a7dd390643619822b4b9ea386 + X-GitHub-Request-Id: + - 4FDA:5029:252A36:33B473:65149ABE + X-Served-By: + - cache-lga21980-LGA + X-Timer: + - S1695849706.503918,VS0,VE4 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-proxy-cache: - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json#\",\n + \ \"title\": \"STAC Collection Specification\",\n \"description\": \"This + object represents Collections in a SpatioTemporal Asset Catalog.\",\n \"allOf\": + [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"keywords\": + {\n \"title\": \"Keywords\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n + \ \"providers\": {\n \"type\": \"array\",\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"title\": + \"Organization name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n },\n \"extent\": + {\n \"title\": \"Extents\",\n \"type\": \"object\",\n \"required\": + [\n \"spatial\",\n \"temporal\"\n ],\n \"properties\": + {\n \"spatial\": {\n \"title\": \"Spatial extent object\",\n + \ \"type\": \"object\",\n \"required\": [\n \"bbox\"\n + \ ],\n \"properties\": {\n \"bbox\": + {\n \"title\": \"Spatial extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Spatial extent\",\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\":4,\n + \ \"maxItems\":4\n },\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '557' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5346' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:45 GMT + ETag: + - '"65147dc1-14e2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - ef57b863a68233f23c39ffdd9c1140eb16b50307 + - a892c9e04a19763efbf5d8c4b0074a59ddadfe22 X-GitHub-Request-Id: - - 4F7E:0B12:C76365:112B057:650DE79E + - DC8C:6FEB:26F7FB:34E32D:6514878E X-Served-By: - - cache-den8267-DEN + - cache-lga21962-LGA X-Timer: - - S1695410080.958547,VS0,VE61 + - S1695849706.620707,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:24:39 GMT - x-origin-cache: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '557' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:45 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: - HIT + X-Cache-Hits: + - '12' + X-Fastly-Request-ID: + - 12989420c90fc29f8fb0e24e78088bbe88972ecb + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21926-LGA + X-Timer: + - S1695849706.730361,VS0,VE1 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT x-proxy-cache: - MISS status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example82].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example82].yaml new file mode 100644 index 000000000..05e27e798 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example82].yaml @@ -0,0 +1,930 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '0' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:45 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 4df33b008b58db7d3e57f8941817c8c8eb02ec12 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21938-LGA + X-Timer: + - S1695849706.874307,VS0,VE12 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '0' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:46 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 21cb14cbd57e9dd5df68d042c60ffeb9e3e44c59 + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21969-LGA + X-Timer: + - S1695849706.001956,VS0,VE16 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '0' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:46 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - a18903b6b71cde53ad566541879ef8cfd0aa4751 + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21923-LGA + X-Timer: + - S1695849706.127207,VS0,VE13 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '0' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:46 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - fbe99b41f903c3a850a2c2bd013f340091d5d199 + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21977-LGA + X-Timer: + - S1695849706.255922,VS0,VE12 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '0' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:46 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 1ea4559b35f3ed344624a45fd5fe013dd5a3ca4c + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21926-LGA + X-Timer: + - S1695849706.388310,VS0,VE11 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '0' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:46 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 288bcb89d231900c157b931e302abf3c7fc32faf + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21968-LGA + X-Timer: + - S1695849707.503362,VS0,VE11 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/label/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/label/json-schema/schema.json#\",\n + \ \"title\": \"Label Extension\",\n \"description\": \"STAC Label Data Item + Extension Spec\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/label\"\n }\n ],\n \"definitions\": + {\n \"label\": {\n \"type\": \"object\",\n \"required\": [\n + \ \"stac_extensions\",\n \"properties\"\n ],\n \"properties\": + {\n \"stac_extensions\": {\n \"type\": \"array\",\n \"contains\": + {\n \"enum\": [\n \"label\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/label/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [\n \"label:properties\",\n + \ \"label:classes\",\n \"label:description\",\n \"label:type\"\n + \ ],\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n {\n \"type\": + \"null\"\n }\n ]\n },\n \"label:classes\": + {\n \"title\": \"Classes\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"object\",\n \"required\": + [\n \"name\",\n \"classes\"\n ],\n + \ \"properties\": {\n \"name\": {\n \"title\": + \"Name\",\n \"type\": \"string\"\n },\n + \ \"classes\": {\n \"title\": \"Classes\",\n + \ \"oneOf\": [\n {\n \"type\": + \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n {\n + \ \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n + \ }\n ]\n }\n }\n + \ }\n },\n \"label:description\": {\n \"title\": + \"Description\",\n \"type\": \"string\"\n },\n \"label:type\": + {\n \"title\": \"Type\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n + \ \"type\": \"string\"\n }\n },\n \"label:methods\": + {\n \"title\": \"Method\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\"\n }\n + \ },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"property_key\": {\n \"title\": \"Property + Key\",\n \"type\": \"string\"\n },\n \"counts\": + {\n \"title\": \"Counts\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"name\": + {\n \"title\": \"Class Name\",\n \"type\": + \"string\"\n },\n \"count\": + {\n \"title\": \"Count\",\n \"type\": + \"integer\"\n }\n }\n }\n + \ },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": + \"Stat Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": + \"Value\",\n \"type\": \"number\"\n }\n + \ }\n }\n }\n }\n + \ }\n }\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '556' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4646' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:46 GMT + ETag: + - '"65147dc1-1226"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 19d004269eeabdfc499d455b36745ee2ce039ce8 + X-GitHub-Request-Id: + - 3796:7B4C:2A5E76:3A5A36:65149ABE + X-Served-By: + - cache-lga21923-LGA + X-Timer: + - S1695849707.620837,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/version/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/version/json-schema/schema.json#\",\n + \ \"title\": \"Versioning Indicators Extension\",\n \"description\": \"STAC + Versioning Indicators Extension for STAC Items or STAC Collections.\",\n \"oneOf\": + [\n {\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"properties\"\n ],\n \"properties\": {\n + \ \"properties\": {\n \"$ref\": \"#/definitions/version_extension\"\n + \ }\n }\n }\n ]\n },\n {\n \"allOf\": + [\n {\n \"$ref\": \"../../../collection-spec/json-schema/collection.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"$ref\": \"#/definitions/version_extension\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"enum\": [\n \"version\",\n + \ \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/version/json-schema/schema.json\"\n + \ ]\n }\n }\n }\n },\n \"version_extension\": + {\n \"type\": \"object\",\n \"required\": [\n \"version\"\n + \ ],\n \"properties\": {\n \"version\": {\n \"type\": + \"string\",\n \"title\": \"Version\"\n }, \n \"deprecated\": + {\n \"type\": \"boolean\", \n \"title\": \"Deprecated\",\n + \ \"default\": false\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '556' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1803' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:46 GMT + ETag: + - '"65147dc1-70b"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - c85a9cf6a39eb28674119530600f70600b5fa630 + X-GitHub-Request-Id: + - 4FDA:5029:252A36:33B473:65149ABE + X-Served-By: + - cache-lga21932-LGA + X-Timer: + - S1695849707.755758,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json#\",\n + \ \"title\": \"STAC Collection Specification\",\n \"description\": \"This + object represents Collections in a SpatioTemporal Asset Catalog.\",\n \"allOf\": + [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"keywords\": + {\n \"title\": \"Keywords\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n + \ \"providers\": {\n \"type\": \"array\",\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"title\": + \"Organization name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n },\n \"extent\": + {\n \"title\": \"Extents\",\n \"type\": \"object\",\n \"required\": + [\n \"spatial\",\n \"temporal\"\n ],\n \"properties\": + {\n \"spatial\": {\n \"title\": \"Spatial extent object\",\n + \ \"type\": \"object\",\n \"required\": [\n \"bbox\"\n + \ ],\n \"properties\": {\n \"bbox\": + {\n \"title\": \"Spatial extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Spatial extent\",\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\":4,\n + \ \"maxItems\":4\n },\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '558' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5346' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:46 GMT + ETag: + - '"65147dc1-14e2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - b1196930db78c74ab292591823af9b096bfa1bcf + X-GitHub-Request-Id: + - DC8C:6FEB:26F7FB:34E32D:6514878E + X-Served-By: + - cache-lga21983-LGA + X-Timer: + - S1695849707.877622,VS0,VE2 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '558' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:46 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 89831f623483df6fc8fd11f3032802a4afc8fb1e + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21929-LGA + X-Timer: + - S1695849707.993239,VS0,VE1 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example83].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example83].yaml new file mode 100644 index 000000000..07b358b74 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example83].yaml @@ -0,0 +1,930 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '1' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:47 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 31dce9de6b16198f295cf171f700b5944d0938e3 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21974-LGA + X-Timer: + - S1695849707.114357,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '1' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:47 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 49a19e08fbfc27aad19e5a7b7cf55da1fe2a05b2 + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21962-LGA + X-Timer: + - S1695849707.246416,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '1' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:47 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 0adbf8862252e082fba3253ce0cf21bae04c873e + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21980-LGA + X-Timer: + - S1695849707.372077,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '1' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:47 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 4d4c6e906f1b2e319e70cf74f185d63dc5b209b3 + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21983-LGA + X-Timer: + - S1695849707.495060,VS0,VE3 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '1' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:47 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - be356a86d1257682a27980f3b5efe25c54f77d5a + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21931-LGA + X-Timer: + - S1695849708.639431,VS0,VE6 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '1' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:47 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 23f061952ea53d59b8e95ba7034018caaa52bf97 + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21923-LGA + X-Timer: + - S1695849708.758532,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/label/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/label/json-schema/schema.json#\",\n + \ \"title\": \"Label Extension\",\n \"description\": \"STAC Label Data Item + Extension Spec\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/label\"\n }\n ],\n \"definitions\": + {\n \"label\": {\n \"type\": \"object\",\n \"required\": [\n + \ \"stac_extensions\",\n \"properties\"\n ],\n \"properties\": + {\n \"stac_extensions\": {\n \"type\": \"array\",\n \"contains\": + {\n \"enum\": [\n \"label\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/label/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [\n \"label:properties\",\n + \ \"label:classes\",\n \"label:description\",\n \"label:type\"\n + \ ],\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n {\n \"type\": + \"null\"\n }\n ]\n },\n \"label:classes\": + {\n \"title\": \"Classes\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"object\",\n \"required\": + [\n \"name\",\n \"classes\"\n ],\n + \ \"properties\": {\n \"name\": {\n \"title\": + \"Name\",\n \"type\": \"string\"\n },\n + \ \"classes\": {\n \"title\": \"Classes\",\n + \ \"oneOf\": [\n {\n \"type\": + \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n {\n + \ \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n + \ }\n ]\n }\n }\n + \ }\n },\n \"label:description\": {\n \"title\": + \"Description\",\n \"type\": \"string\"\n },\n \"label:type\": + {\n \"title\": \"Type\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n + \ \"type\": \"string\"\n }\n },\n \"label:methods\": + {\n \"title\": \"Method\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\"\n }\n + \ },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"property_key\": {\n \"title\": \"Property + Key\",\n \"type\": \"string\"\n },\n \"counts\": + {\n \"title\": \"Counts\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"name\": + {\n \"title\": \"Class Name\",\n \"type\": + \"string\"\n },\n \"count\": + {\n \"title\": \"Count\",\n \"type\": + \"integer\"\n }\n }\n }\n + \ },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": + \"Stat Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": + \"Value\",\n \"type\": \"number\"\n }\n + \ }\n }\n }\n }\n + \ }\n }\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '557' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4646' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:47 GMT + ETag: + - '"65147dc1-1226"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - a4591ea3f2c4f3f99ecfa5575f0e1bb1395ffe6d + X-GitHub-Request-Id: + - 3796:7B4C:2A5E76:3A5A36:65149ABE + X-Served-By: + - cache-lga21969-LGA + X-Timer: + - S1695849708.862649,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/version/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/version/json-schema/schema.json#\",\n + \ \"title\": \"Versioning Indicators Extension\",\n \"description\": \"STAC + Versioning Indicators Extension for STAC Items or STAC Collections.\",\n \"oneOf\": + [\n {\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"properties\"\n ],\n \"properties\": {\n + \ \"properties\": {\n \"$ref\": \"#/definitions/version_extension\"\n + \ }\n }\n }\n ]\n },\n {\n \"allOf\": + [\n {\n \"$ref\": \"../../../collection-spec/json-schema/collection.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"$ref\": \"#/definitions/version_extension\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"enum\": [\n \"version\",\n + \ \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/version/json-schema/schema.json\"\n + \ ]\n }\n }\n }\n },\n \"version_extension\": + {\n \"type\": \"object\",\n \"required\": [\n \"version\"\n + \ ],\n \"properties\": {\n \"version\": {\n \"type\": + \"string\",\n \"title\": \"Version\"\n }, \n \"deprecated\": + {\n \"type\": \"boolean\", \n \"title\": \"Deprecated\",\n + \ \"default\": false\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '557' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1803' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:47 GMT + ETag: + - '"65147dc1-70b"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - fc5a833733570bdca38d2bb4e20afc74a3e1ed7d + X-GitHub-Request-Id: + - 4FDA:5029:252A36:33B473:65149ABE + X-Served-By: + - cache-lga21938-LGA + X-Timer: + - S1695849708.984059,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json#\",\n + \ \"title\": \"STAC Collection Specification\",\n \"description\": \"This + object represents Collections in a SpatioTemporal Asset Catalog.\",\n \"allOf\": + [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"keywords\": + {\n \"title\": \"Keywords\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n + \ \"providers\": {\n \"type\": \"array\",\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"title\": + \"Organization name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n },\n \"extent\": + {\n \"title\": \"Extents\",\n \"type\": \"object\",\n \"required\": + [\n \"spatial\",\n \"temporal\"\n ],\n \"properties\": + {\n \"spatial\": {\n \"title\": \"Spatial extent object\",\n + \ \"type\": \"object\",\n \"required\": [\n \"bbox\"\n + \ ],\n \"properties\": {\n \"bbox\": + {\n \"title\": \"Spatial extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Spatial extent\",\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\":4,\n + \ \"maxItems\":4\n },\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '559' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5346' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:48 GMT + ETag: + - '"65147dc1-14e2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 198fa8f1723283661094ffdd5be03b02e6e8d913 + X-GitHub-Request-Id: + - DC8C:6FEB:26F7FB:34E32D:6514878E + X-Served-By: + - cache-lga21926-LGA + X-Timer: + - S1695849708.086891,VS0,VE2 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '560' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:48 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 6d548a37a0d31147a10198beed9df4f42729dc73 + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21922-LGA + X-Timer: + - S1695849708.186214,VS0,VE4 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example84].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example84].yaml new file mode 100644 index 000000000..9187676ac --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example84].yaml @@ -0,0 +1,222 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json#\",\n + \ \"title\": \"STAC Collection Specification\",\n \"description\": \"This + object represents Collections in a SpatioTemporal Asset Catalog.\",\n \"allOf\": + [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"keywords\": + {\n \"title\": \"Keywords\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n + \ \"providers\": {\n \"type\": \"array\",\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"title\": + \"Organization name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n },\n \"extent\": + {\n \"title\": \"Extents\",\n \"type\": \"object\",\n \"required\": + [\n \"spatial\",\n \"temporal\"\n ],\n \"properties\": + {\n \"spatial\": {\n \"title\": \"Spatial extent object\",\n + \ \"type\": \"object\",\n \"required\": [\n \"bbox\"\n + \ ],\n \"properties\": {\n \"bbox\": + {\n \"title\": \"Spatial extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Spatial extent\",\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\":4,\n + \ \"maxItems\":4\n },\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '560' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5346' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:48 GMT + ETag: + - '"65147dc1-14e2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 3bf87387840c089407340353afb2a1b17acc64eb + X-GitHub-Request-Id: + - DC8C:6FEB:26F7FB:34E32D:6514878E + X-Served-By: + - cache-lga21968-LGA + X-Timer: + - S1695849708.328077,VS0,VE1 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '560' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:48 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 1fcc3832048f9a7c0d67f2e812ea5e220a800390 + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21925-LGA + X-Timer: + - S1695849708.451987,VS0,VE2 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example85].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example85].yaml new file mode 100644 index 000000000..f9a6c7317 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example85].yaml @@ -0,0 +1,222 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json#\",\n + \ \"title\": \"STAC Collection Specification\",\n \"description\": \"This + object represents Collections in a SpatioTemporal Asset Catalog.\",\n \"allOf\": + [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"keywords\": + {\n \"title\": \"Keywords\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n + \ \"providers\": {\n \"type\": \"array\",\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"title\": + \"Organization name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n },\n \"extent\": + {\n \"title\": \"Extents\",\n \"type\": \"object\",\n \"required\": + [\n \"spatial\",\n \"temporal\"\n ],\n \"properties\": + {\n \"spatial\": {\n \"title\": \"Spatial extent object\",\n + \ \"type\": \"object\",\n \"required\": [\n \"bbox\"\n + \ ],\n \"properties\": {\n \"bbox\": + {\n \"title\": \"Spatial extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Spatial extent\",\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\":4,\n + \ \"maxItems\":4\n },\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '560' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5346' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:48 GMT + ETag: + - '"65147dc1-14e2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 6c0b6b0872f1924df83640115d6843f3a4677e0e + X-GitHub-Request-Id: + - DC8C:6FEB:26F7FB:34E32D:6514878E + X-Served-By: + - cache-lga21977-LGA + X-Timer: + - S1695849709.578451,VS0,VE1 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '560' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:48 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 64d6faf1edac4892a42f5128d85bd3a8ca9dff03 + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21974-LGA + X-Timer: + - S1695849709.696545,VS0,VE2 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example86].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example86].yaml new file mode 100644 index 000000000..0c013fbf8 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example86].yaml @@ -0,0 +1,930 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '3' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:48 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - aec4fd64568f8df7f3ddd7d8853baf7371c73440 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21929-LGA + X-Timer: + - S1695849709.825768,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '3' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:48 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - dce2a40f368a4c853c8a862c16fe039bae7e8d6c + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21920-LGA + X-Timer: + - S1695849709.951739,VS0,VE3 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '3' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:49 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 1b22d83d747c9e5046f5c2eda7b116e7f9d5dc5e + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21932-LGA + X-Timer: + - S1695849709.063206,VS0,VE3 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '3' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:49 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 9c783b534ece8a3a35f11b59f22ec4eb1096c789 + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21936-LGA + X-Timer: + - S1695849709.174717,VS0,VE6 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '3' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:49 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 9f87dc9ba56202cd8579849ff00d0e7126d9cda3 + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21980-LGA + X-Timer: + - S1695849709.297013,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '3' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:49 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 6beba8dc69ccd11e3cc279cc1e51eb63cb3d26c6 + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849709.412152,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/label/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/label/json-schema/schema.json#\",\n + \ \"title\": \"Label Extension\",\n \"description\": \"STAC Label Data Item + Extension Spec\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/label\"\n }\n ],\n \"definitions\": + {\n \"label\": {\n \"type\": \"object\",\n \"required\": [\n + \ \"stac_extensions\",\n \"properties\"\n ],\n \"properties\": + {\n \"stac_extensions\": {\n \"type\": \"array\",\n \"contains\": + {\n \"enum\": [\n \"label\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/label/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [\n \"label:properties\",\n + \ \"label:classes\",\n \"label:description\",\n \"label:type\"\n + \ ],\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n {\n \"type\": + \"null\"\n }\n ]\n },\n \"label:classes\": + {\n \"title\": \"Classes\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"object\",\n \"required\": + [\n \"name\",\n \"classes\"\n ],\n + \ \"properties\": {\n \"name\": {\n \"title\": + \"Name\",\n \"type\": \"string\"\n },\n + \ \"classes\": {\n \"title\": \"Classes\",\n + \ \"oneOf\": [\n {\n \"type\": + \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n {\n + \ \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n + \ }\n ]\n }\n }\n + \ }\n },\n \"label:description\": {\n \"title\": + \"Description\",\n \"type\": \"string\"\n },\n \"label:type\": + {\n \"title\": \"Type\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n + \ \"type\": \"string\"\n }\n },\n \"label:methods\": + {\n \"title\": \"Method\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\"\n }\n + \ },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"property_key\": {\n \"title\": \"Property + Key\",\n \"type\": \"string\"\n },\n \"counts\": + {\n \"title\": \"Counts\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"name\": + {\n \"title\": \"Class Name\",\n \"type\": + \"string\"\n },\n \"count\": + {\n \"title\": \"Count\",\n \"type\": + \"integer\"\n }\n }\n }\n + \ },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": + \"Stat Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": + \"Value\",\n \"type\": \"number\"\n }\n + \ }\n }\n }\n }\n + \ }\n }\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '559' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4646' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:49 GMT + ETag: + - '"65147dc1-1226"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - ed97b9653ac3abab3f11428f2418c21e3db2f824 + X-GitHub-Request-Id: + - 3796:7B4C:2A5E76:3A5A36:65149ABE + X-Served-By: + - cache-lga21977-LGA + X-Timer: + - S1695849710.531205,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/version/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/version/json-schema/schema.json#\",\n + \ \"title\": \"Versioning Indicators Extension\",\n \"description\": \"STAC + Versioning Indicators Extension for STAC Items or STAC Collections.\",\n \"oneOf\": + [\n {\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"properties\"\n ],\n \"properties\": {\n + \ \"properties\": {\n \"$ref\": \"#/definitions/version_extension\"\n + \ }\n }\n }\n ]\n },\n {\n \"allOf\": + [\n {\n \"$ref\": \"../../../collection-spec/json-schema/collection.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"$ref\": \"#/definitions/version_extension\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"enum\": [\n \"version\",\n + \ \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/version/json-schema/schema.json\"\n + \ ]\n }\n }\n }\n },\n \"version_extension\": + {\n \"type\": \"object\",\n \"required\": [\n \"version\"\n + \ ],\n \"properties\": {\n \"version\": {\n \"type\": + \"string\",\n \"title\": \"Version\"\n }, \n \"deprecated\": + {\n \"type\": \"boolean\", \n \"title\": \"Deprecated\",\n + \ \"default\": false\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '559' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1803' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:49 GMT + ETag: + - '"65147dc1-70b"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 992dbec397d1c870c3e5a60b50dba637f80a582f + X-GitHub-Request-Id: + - 4FDA:5029:252A36:33B473:65149ABE + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849710.654955,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json#\",\n + \ \"title\": \"STAC Collection Specification\",\n \"description\": \"This + object represents Collections in a SpatioTemporal Asset Catalog.\",\n \"allOf\": + [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"keywords\": + {\n \"title\": \"Keywords\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n + \ \"providers\": {\n \"type\": \"array\",\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"title\": + \"Organization name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n },\n \"extent\": + {\n \"title\": \"Extents\",\n \"type\": \"object\",\n \"required\": + [\n \"spatial\",\n \"temporal\"\n ],\n \"properties\": + {\n \"spatial\": {\n \"title\": \"Spatial extent object\",\n + \ \"type\": \"object\",\n \"required\": [\n \"bbox\"\n + \ ],\n \"properties\": {\n \"bbox\": + {\n \"title\": \"Spatial extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Spatial extent\",\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\":4,\n + \ \"maxItems\":4\n },\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '561' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5346' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:49 GMT + ETag: + - '"65147dc1-14e2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 48b11a159e4a9d887160935a86ac08ce04519a74 + X-GitHub-Request-Id: + - DC8C:6FEB:26F7FB:34E32D:6514878E + X-Served-By: + - cache-lga21929-LGA + X-Timer: + - S1695849710.773691,VS0,VE1 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '561' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:49 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - a6e908c001452aa0ccfdb645db09cb5b5215cd09 + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21970-LGA + X-Timer: + - S1695849710.890979,VS0,VE2 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example87].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example87].yaml new file mode 100644 index 000000000..bdba1ba40 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example87].yaml @@ -0,0 +1,930 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '4' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:50 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 266af2edd8637f62dc0d50645cadf986c9c1d622 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21920-LGA + X-Timer: + - S1695849710.018103,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '4' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:50 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 09c5220233897e25ae8c5a5e2dfbba97a153e3af + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21922-LGA + X-Timer: + - S1695849710.137668,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '4' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:50 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 32fb62c2f0e9aeccc05396f56ab30293eef36220 + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21942-LGA + X-Timer: + - S1695849710.242431,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '4' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:50 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - b42956f9b3cc5ff24485d608d962ebec8cfed8b8 + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21971-LGA + X-Timer: + - S1695849710.362468,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '4' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:50 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 657ace78a01e486aea13add496f8fa4c8c0a2fe4 + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21921-LGA + X-Timer: + - S1695849710.474453,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '4' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:50 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 1dc086509256ecc3e3c4fdf7a1c0c62eadca7028 + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21935-LGA + X-Timer: + - S1695849711.608091,VS0,VE7 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/label/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/label/json-schema/schema.json#\",\n + \ \"title\": \"Label Extension\",\n \"description\": \"STAC Label Data Item + Extension Spec\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/label\"\n }\n ],\n \"definitions\": + {\n \"label\": {\n \"type\": \"object\",\n \"required\": [\n + \ \"stac_extensions\",\n \"properties\"\n ],\n \"properties\": + {\n \"stac_extensions\": {\n \"type\": \"array\",\n \"contains\": + {\n \"enum\": [\n \"label\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/label/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [\n \"label:properties\",\n + \ \"label:classes\",\n \"label:description\",\n \"label:type\"\n + \ ],\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n {\n \"type\": + \"null\"\n }\n ]\n },\n \"label:classes\": + {\n \"title\": \"Classes\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"object\",\n \"required\": + [\n \"name\",\n \"classes\"\n ],\n + \ \"properties\": {\n \"name\": {\n \"title\": + \"Name\",\n \"type\": \"string\"\n },\n + \ \"classes\": {\n \"title\": \"Classes\",\n + \ \"oneOf\": [\n {\n \"type\": + \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n {\n + \ \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n + \ }\n ]\n }\n }\n + \ }\n },\n \"label:description\": {\n \"title\": + \"Description\",\n \"type\": \"string\"\n },\n \"label:type\": + {\n \"title\": \"Type\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n + \ \"type\": \"string\"\n }\n },\n \"label:methods\": + {\n \"title\": \"Method\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\"\n }\n + \ },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"property_key\": {\n \"title\": \"Property + Key\",\n \"type\": \"string\"\n },\n \"counts\": + {\n \"title\": \"Counts\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"name\": + {\n \"title\": \"Class Name\",\n \"type\": + \"string\"\n },\n \"count\": + {\n \"title\": \"Count\",\n \"type\": + \"integer\"\n }\n }\n }\n + \ },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": + \"Stat Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": + \"Value\",\n \"type\": \"number\"\n }\n + \ }\n }\n }\n }\n + \ }\n }\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '560' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4646' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:50 GMT + ETag: + - '"65147dc1-1226"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 705bab70ed2f34612d6ef31746d6966b3382b3b0 + X-GitHub-Request-Id: + - 3796:7B4C:2A5E76:3A5A36:65149ABE + X-Served-By: + - cache-lga21979-LGA + X-Timer: + - S1695849711.715172,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/version/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/version/json-schema/schema.json#\",\n + \ \"title\": \"Versioning Indicators Extension\",\n \"description\": \"STAC + Versioning Indicators Extension for STAC Items or STAC Collections.\",\n \"oneOf\": + [\n {\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"properties\"\n ],\n \"properties\": {\n + \ \"properties\": {\n \"$ref\": \"#/definitions/version_extension\"\n + \ }\n }\n }\n ]\n },\n {\n \"allOf\": + [\n {\n \"$ref\": \"../../../collection-spec/json-schema/collection.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"$ref\": \"#/definitions/version_extension\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"enum\": [\n \"version\",\n + \ \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/version/json-schema/schema.json\"\n + \ ]\n }\n }\n }\n },\n \"version_extension\": + {\n \"type\": \"object\",\n \"required\": [\n \"version\"\n + \ ],\n \"properties\": {\n \"version\": {\n \"type\": + \"string\",\n \"title\": \"Version\"\n }, \n \"deprecated\": + {\n \"type\": \"boolean\", \n \"title\": \"Deprecated\",\n + \ \"default\": false\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '560' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1803' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:50 GMT + ETag: + - '"65147dc1-70b"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - c321f120796d37190f7bd0e22c1e25bafc426514 + X-GitHub-Request-Id: + - 4FDA:5029:252A36:33B473:65149ABE + X-Served-By: + - cache-lga21978-LGA + X-Timer: + - S1695849711.832868,VS0,VE7 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json#\",\n + \ \"title\": \"STAC Collection Specification\",\n \"description\": \"This + object represents Collections in a SpatioTemporal Asset Catalog.\",\n \"allOf\": + [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"keywords\": + {\n \"title\": \"Keywords\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n + \ \"providers\": {\n \"type\": \"array\",\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"title\": + \"Organization name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n },\n \"extent\": + {\n \"title\": \"Extents\",\n \"type\": \"object\",\n \"required\": + [\n \"spatial\",\n \"temporal\"\n ],\n \"properties\": + {\n \"spatial\": {\n \"title\": \"Spatial extent object\",\n + \ \"type\": \"object\",\n \"required\": [\n \"bbox\"\n + \ ],\n \"properties\": {\n \"bbox\": + {\n \"title\": \"Spatial extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Spatial extent\",\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\":4,\n + \ \"maxItems\":4\n },\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '562' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5346' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:50 GMT + ETag: + - '"65147dc1-14e2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 06a227b3f3857d3f44b1c87c6934e856505e21c1 + X-GitHub-Request-Id: + - DC8C:6FEB:26F7FB:34E32D:6514878E + X-Served-By: + - cache-lga21964-LGA + X-Timer: + - S1695849711.972625,VS0,VE2 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '562' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:51 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 7b56a345a571cc081bbfa8865ad2c1ca416ca745 + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21977-LGA + X-Timer: + - S1695849711.089899,VS0,VE1 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example88].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example88].yaml new file mode 100644 index 000000000..60bf86c4a --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example88].yaml @@ -0,0 +1,222 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json#\",\n + \ \"title\": \"STAC Collection Specification\",\n \"description\": \"This + object represents Collections in a SpatioTemporal Asset Catalog.\",\n \"allOf\": + [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"keywords\": + {\n \"title\": \"Keywords\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n + \ \"providers\": {\n \"type\": \"array\",\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"title\": + \"Organization name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n },\n \"extent\": + {\n \"title\": \"Extents\",\n \"type\": \"object\",\n \"required\": + [\n \"spatial\",\n \"temporal\"\n ],\n \"properties\": + {\n \"spatial\": {\n \"title\": \"Spatial extent object\",\n + \ \"type\": \"object\",\n \"required\": [\n \"bbox\"\n + \ ],\n \"properties\": {\n \"bbox\": + {\n \"title\": \"Spatial extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Spatial extent\",\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\":4,\n + \ \"maxItems\":4\n },\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '562' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5346' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:51 GMT + ETag: + - '"65147dc1-14e2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '16' + X-Fastly-Request-ID: + - 372b130071d7687fccb81d742c93ffa23d52d4ac + X-GitHub-Request-Id: + - DC8C:6FEB:26F7FB:34E32D:6514878E + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849711.214545,VS0,VE1 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '563' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:51 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 34862506e71560c0f23f2177df52391920d0cdc5 + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21980-LGA + X-Timer: + - S1695849711.338057,VS0,VE1 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example89].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example89].yaml new file mode 100644 index 000000000..21d6b7bf0 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example89].yaml @@ -0,0 +1,930 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '6' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:51 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 4e0d0b9176ce763a14f9aa23d407ec43a0917941 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21936-LGA + X-Timer: + - S1695849711.458069,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '6' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:51 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - ecbba5fe8086d8f8ebe97037db6a986445293a28 + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21920-LGA + X-Timer: + - S1695849712.569318,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '6' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:51 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 14c8a554739595c737a36a4679c49e87463459b4 + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21970-LGA + X-Timer: + - S1695849712.687819,VS0,VE12 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '6' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:51 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - dc56046aa084fc54d0517bf69c8015667b4490ca + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21929-LGA + X-Timer: + - S1695849712.807969,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '6' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:51 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - ab902c74fff622383b006e2ad435d4955ec51ee8 + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849712.922805,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '6' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:52 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - f51765d169ece2318ac671eadd4e1edf40c53b90 + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21920-LGA + X-Timer: + - S1695849712.037483,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/label/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/label/json-schema/schema.json#\",\n + \ \"title\": \"Label Extension\",\n \"description\": \"STAC Label Data Item + Extension Spec\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/label\"\n }\n ],\n \"definitions\": + {\n \"label\": {\n \"type\": \"object\",\n \"required\": [\n + \ \"stac_extensions\",\n \"properties\"\n ],\n \"properties\": + {\n \"stac_extensions\": {\n \"type\": \"array\",\n \"contains\": + {\n \"enum\": [\n \"label\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/label/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [\n \"label:properties\",\n + \ \"label:classes\",\n \"label:description\",\n \"label:type\"\n + \ ],\n \"properties\": {\n \"label:properties\": + {\n \"title\": \"Property\",\n \"oneOf\": [\n {\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n {\n \"type\": + \"null\"\n }\n ]\n },\n \"label:classes\": + {\n \"title\": \"Classes\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"object\",\n \"required\": + [\n \"name\",\n \"classes\"\n ],\n + \ \"properties\": {\n \"name\": {\n \"title\": + \"Name\",\n \"type\": \"string\"\n },\n + \ \"classes\": {\n \"title\": \"Classes\",\n + \ \"oneOf\": [\n {\n \"type\": + \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n },\n {\n + \ \"type\": \"array\",\n \"items\": + {\n \"type\": \"number\"\n }\n + \ }\n ]\n }\n }\n + \ }\n },\n \"label:description\": {\n \"title\": + \"Description\",\n \"type\": \"string\"\n },\n \"label:type\": + {\n \"title\": \"Type\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"raster\",\n \"vector\"\n + \ ]\n },\n \"label:tasks\": {\n \"title\": + \"Task\",\n \"type\": \"array\",\n \"items\": {\n + \ \"type\": \"string\"\n }\n },\n \"label:methods\": + {\n \"title\": \"Method\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\"\n }\n + \ },\n \"label:overviews\": {\n \"title\": + \"Overview\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"property_key\": {\n \"title\": \"Property + Key\",\n \"type\": \"string\"\n },\n \"counts\": + {\n \"title\": \"Counts\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": + \"object\",\n \"properties\": {\n \"name\": + {\n \"title\": \"Class Name\",\n \"type\": + \"string\"\n },\n \"count\": + {\n \"title\": \"Count\",\n \"type\": + \"integer\"\n }\n }\n }\n + \ },\n \"statistics\": {\n \"title\": + \"Statistics\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": + {\n \"name\": {\n \"title\": + \"Stat Name\",\n \"type\": \"string\"\n },\n + \ \"value\": {\n \"title\": + \"Value\",\n \"type\": \"number\"\n }\n + \ }\n }\n }\n }\n + \ }\n }\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '561' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4646' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:52 GMT + ETag: + - '"65147dc1-1226"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 249fe91c351889a001b48ca206e6fc21ca059937 + X-GitHub-Request-Id: + - 3796:7B4C:2A5E76:3A5A36:65149ABE + X-Served-By: + - cache-lga21971-LGA + X-Timer: + - S1695849712.143546,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/version/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/version/json-schema/schema.json#\",\n + \ \"title\": \"Versioning Indicators Extension\",\n \"description\": \"STAC + Versioning Indicators Extension for STAC Items or STAC Collections.\",\n \"oneOf\": + [\n {\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"properties\"\n ],\n \"properties\": {\n + \ \"properties\": {\n \"$ref\": \"#/definitions/version_extension\"\n + \ }\n }\n }\n ]\n },\n {\n \"allOf\": + [\n {\n \"$ref\": \"../../../collection-spec/json-schema/collection.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"$ref\": \"#/definitions/version_extension\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"enum\": [\n \"version\",\n + \ \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/version/json-schema/schema.json\"\n + \ ]\n }\n }\n }\n },\n \"version_extension\": + {\n \"type\": \"object\",\n \"required\": [\n \"version\"\n + \ ],\n \"properties\": {\n \"version\": {\n \"type\": + \"string\",\n \"title\": \"Version\"\n }, \n \"deprecated\": + {\n \"type\": \"boolean\", \n \"title\": \"Deprecated\",\n + \ \"default\": false\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '561' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1803' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:52 GMT + ETag: + - '"65147dc1-70b"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 9e9ee090f824279a03e9f841fae540ed8a250c70 + X-GitHub-Request-Id: + - 4FDA:5029:252A36:33B473:65149ABE + X-Served-By: + - cache-lga21941-LGA + X-Timer: + - S1695849712.250579,VS0,VE3 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json#\",\n + \ \"title\": \"STAC Collection Specification\",\n \"description\": \"This + object represents Collections in a SpatioTemporal Asset Catalog.\",\n \"allOf\": + [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"keywords\": + {\n \"title\": \"Keywords\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n + \ \"providers\": {\n \"type\": \"array\",\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"title\": + \"Organization name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n },\n \"extent\": + {\n \"title\": \"Extents\",\n \"type\": \"object\",\n \"required\": + [\n \"spatial\",\n \"temporal\"\n ],\n \"properties\": + {\n \"spatial\": {\n \"title\": \"Spatial extent object\",\n + \ \"type\": \"object\",\n \"required\": [\n \"bbox\"\n + \ ],\n \"properties\": {\n \"bbox\": + {\n \"title\": \"Spatial extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Spatial extent\",\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\":4,\n + \ \"maxItems\":4\n },\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '564' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5346' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:52 GMT + ETag: + - '"65147dc1-14e2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 1ab26e9c4d2ca457669e9e7b307fc393eb74671d + X-GitHub-Request-Id: + - DC8C:6FEB:26F7FB:34E32D:6514878E + X-Served-By: + - cache-lga21922-LGA + X-Timer: + - S1695849712.382541,VS0,VE10 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '564' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:52 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 925f3ecf031b7a60268f127c99e64dd2926e7c26 + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21965-LGA + X-Timer: + - S1695849712.493550,VS0,VE2 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example8].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example8].yaml new file mode 100644 index 000000000..1be1f1c82 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example8].yaml @@ -0,0 +1,149 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"core\": {\n + \ \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"stac_version\",\n \"id\",\n \"links\",\n + \ \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"cube\",\n \"datetime-range\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"sar\",\n \"scientific\"\n ]\n + \ }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n + \ },\n \"additionalProperties\": false\n },\n + \ \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"title\": \"Date and + Time\",\n \"description\": \"The searchable date/time of + the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n + \ \"title\": {\n \"title\": \"Item Title\",\n + \ \"description\": \"A human-readable title describing the + item.\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Item Licenses\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Organization + name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": + \"Organization roles\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n + \ ]\n }\n },\n + \ \"url\": {\n \"title\": \"Homepage\",\n + \ \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n + \ },\n \"created\": {\n \"title\": + \"Metadata created at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": + \"Metadata updated at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"type\": {\n + \ \"title\": \"Asset type\",\n \"type\": \"string\"\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '6074' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:20:57 GMT + ETag: + - '"4e24763d74f0d463b0cb6c63fc099e0b59447c7a049b93ffda4c6eb9eb54ae95"' + Expires: + - Wed, 27 Sep 2023 21:25:57 GMT + Source-Age: + - '1' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 7b99efe9732a3c53bda0ce8df2ea555cf276a3b6 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 2630:09BA:1F7C:2D49:65149AB0 + X-Served-By: + - cache-lga21980-LGA + X-Timer: + - S1695849658.702475,VS0,VE3 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example90].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example90].yaml new file mode 100644 index 000000000..bb7aa531f --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example90].yaml @@ -0,0 +1,509 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '7' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:52 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 03eb971934213191426b8fb18f8abbafb7e18b08 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21978-LGA + X-Timer: + - S1695849713.640095,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '7' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:52 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - ddcf00c3a58e06c944a17988020e50cf7b23e25d + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21980-LGA + X-Timer: + - S1695849713.762042,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '7' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:52 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 1f6c7cd21be4c1294ea5d592305556e16a6aafaf + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21935-LGA + X-Timer: + - S1695849713.874537,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '7' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:52 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 1db506c59ef3f61076e04ff8e7e44b0e910b8a80 + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21934-LGA + X-Timer: + - S1695849713.983633,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '7' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:53 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 5be0bd34101a432829f5a4fec9b551d5715c33f3 + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21920-LGA + X-Timer: + - S1695849713.102283,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '7' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:53 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 8384a6423c424a0c1563ca0be12fe50454d1a1f0 + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21931-LGA + X-Timer: + - S1695849713.209311,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example91].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example91].yaml new file mode 100644 index 000000000..814c3d784 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example91].yaml @@ -0,0 +1,509 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '7' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:53 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - d9727f75e3bbd34f99e6b2f392de176f57f20684 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849713.333714,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '7' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:53 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '12' + X-Fastly-Request-ID: + - 86e280428e9edbdd31a8a705eb53d65beb98b7c9 + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849713.445266,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '7' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:53 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - a0983ecce9158d4ef534064eb339631b98f35fa4 + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21925-LGA + X-Timer: + - S1695849714.558140,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '7' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:53 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 61c588bba37dd2e721dd880515bc0e46f44de99e + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21926-LGA + X-Timer: + - S1695849714.674205,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '7' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:53 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - a88a25fb088ac65829a8af13a35d09201ca8e116 + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21922-LGA + X-Timer: + - S1695849714.795739,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '7' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:53 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 59b9761464997ef4e33e2867598ed37e69628d49 + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21927-LGA + X-Timer: + - S1695849714.899195,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example92].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example92].yaml index 2f7712864..a69a8dd6e 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example92].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example92].yaml @@ -1,4 +1,599 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '9' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:54 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - c2cc0e9aaa95281864cbed8b835f6f3d8fa58934 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21936-LGA + X-Timer: + - S1695849714.039168,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '8' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:54 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - d95970d7b777e2646dae5c8da45662f567d07133 + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21925-LGA + X-Timer: + - S1695849714.155032,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '8' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:54 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - ded4443b3a6f7475d45a12cedf3f4a1b047057d8 + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21930-LGA + X-Timer: + - S1695849714.263541,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '8' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:54 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 23fe0cfb45177a5358d4d0581f0f14cfeaef0407 + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21920-LGA + X-Timer: + - S1695849714.382834,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '8' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:54 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - cb629a0a27db81cef3202f6ccebca25ccc843722 + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21979-LGA + X-Timer: + - S1695849714.497648,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '8' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:54 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 009f037fa25bc5321a6daee32684da3a5ae25724 + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21960-LGA + X-Timer: + - S1695849715.616620,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/eo/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/eo/json-schema/schema.json#\",\n + \ \"title\": \"EO Extension\",\n \"description\": \"STAC EO Extension to + a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/eo\"\n }\n ],\n \"definitions\": + {\n \"eo\": {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"stac_extensions\": {\n \"type\": \"array\",\n \"contains\": + {\n \"enum\": [\n \"eo\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/eo/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:bands\": {\n \"$ref\": + \"#/definitions/bands\"\n },\n \"eo:cloud_cover\": {\n + \ \"title\": \"Cloud Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n }\n + \ }\n },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"eo:bands\": {\n \"$ref\": + \"#/definitions/bands\"\n }\n }\n }\n }\n + \ }\n },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\"\n },\n + \ \"center_wavelength\": {\n \"title\": \"Center Wavelength\",\n + \ \"type\": \"number\"\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '565' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2053' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:54 GMT + ETag: + - '"65147dc1-805"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - a0cb4788889113516956b2f5f12dbaa540293f07 + X-GitHub-Request-Id: + - C5E4:3891:21EDA0:302569:65149ABD + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849715.717308,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK - request: body: null headers: @@ -61,7 +656,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '564' Cache-Control: - max-age=600 Connection: @@ -71,11 +666,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:40 GMT + - Wed, 27 Sep 2023 21:21:54 GMT ETag: - - '"647f85f4-dc7"' + - '"65147dc1-dc7"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -83,19 +678,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 64ca658ec6fae3e683633fd380406aed9209e1ec + - 6665ecb768128ba78e13cb3e6cf79adc17c31a36 X-GitHub-Request-Id: - - 1BE0:2578:CAFC75:11653D2:650DE79F + - 7A00:64A7:2422C3:32667C:65149ABD X-Served-By: - - cache-den8245-DEN + - cache-lga21931-LGA X-Timer: - - S1695410080.318247,VS0,VE59 + - S1695849715.838810,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:40 GMT + - Wed, 27 Sep 2023 21:22:31 GMT x-origin-cache: - HIT x-proxy-cache: @@ -118,12 +713,14 @@ interactions: body: string: '' headers: + Age: + - '563' CDN-Cache-Control: - public CF-Cache-Status: - - EXPIRED - CF-RAY: - - 80acdf4b08771f2c-DEN + - HIT + CF-Ray: + - 80d6cc8e7b9bc413-EWR Cache-Control: - max-age=1200 Connection: @@ -137,7 +734,7 @@ interactions: Cross-Origin-Opener-Policy: - same-origin Date: - - Fri, 22 Sep 2023 19:14:40 GMT + - Wed, 27 Sep 2023 21:21:54 GMT Location: - https://proj.org/en/9.3/schemas/v0.2/projjson.schema.json Referrer-Policy: @@ -147,7 +744,7 @@ interactions: Vary: - Accept-Language, Cookie, Accept-Encoding X-Backend: - - web-i-0ea49865695837130 + - web-i-038d4e8ae08886551 X-Content-Type-Options: - nosniff X-RTD-Domain: @@ -618,14 +1215,16 @@ interactions: \ \"required\" : [ \"name\" ],\n \"additionalProperties\": false\n \ }\n\n }\n}\n" headers: + Access-Control-Allow-Methods: + - HEAD, OPTIONS, GET Access-Control-Allow-Origin: - '*' CDN-Cache-Control: - public CF-Cache-Status: - - MISS - CF-RAY: - - 80acdf4d8dde51a9-DEN + - REVALIDATED + CF-Ray: + - 80d6cc8f5f511921-EWR Cache-Control: - max-age=1200 Connection: @@ -633,7 +1232,7 @@ interactions: Content-Type: - application/json Date: - - Fri, 22 Sep 2023 19:14:41 GMT + - Wed, 27 Sep 2023 21:21:55 GMT ETag: - W/"229554e540c67351947cd45680c62eef" Last-Modified: @@ -647,7 +1246,7 @@ interactions: Vary: - Accept-Encoding X-Backend: - - web-i-09c30d073841be0a2 + - web-i-0d1f77148b0d09147 X-Content-Type-Options: - nosniff X-RTD-Domain: @@ -667,11 +1266,11 @@ interactions: alt-svc: - h3=":443"; ma=86400 x-amz-id-2: - - 9vpCRHiasDyBzVs+iDlJakiSvCYFrL7I6RsSnmkVN8hHP3qSCnZI12+ogkVAMgkBJlin1qxkdBI= + - oZSS/g1M1qQDbSjh7Ibsnek7WF+DLziq3IRGuiv02COQ8XVOQg9Eg9SLYpxl0XV0+VzmyAz6O3k= x-amz-meta-mtime: - '1693732240.238196845' x-amz-request-id: - - 2W2PFASQ01MAR5FC + - 4YW4G7N4AYK56G5W x-amz-server-side-encryption: - AES256 status: @@ -707,7 +1306,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '563' Cache-Control: - max-age=600 Connection: @@ -717,7 +1316,7 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:41 GMT + - Wed, 27 Sep 2023 21:21:55 GMT ETag: - '"613924d8-2bf"' Last-Modified: @@ -729,19 +1328,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 14e82ac0e5e60a7af874672623c2d8e7c54facfa + - af23d6737dcefdd005b34da6866a633f5102dd45 X-GitHub-Request-Id: - - 9666:072C:CE23DB:11974C3:650DE7A1 + - C466:431C:23DBF6:325EDB:65149ABF X-Served-By: - - cache-den8260-DEN + - cache-lga21922-LGA X-Timer: - - S1695410081.388650,VS0,VE61 + - S1695849715.436135,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:24:41 GMT + - Wed, 27 Sep 2023 21:22:31 GMT x-proxy-cache: - MISS status: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example93].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example93].yaml index 7e2e3c218..78fb669b1 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example93].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example93].yaml @@ -1,4 +1,511 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '10' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:55 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 8dc1c492d9b9cc77d983bd3254cdf324ab15bd28 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21954-LGA + X-Timer: + - S1695849716.566253,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '10' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:55 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 38e77992797f3a5591416024403247a7e6a6ab1d + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21925-LGA + X-Timer: + - S1695849716.673597,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '10' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:55 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 1e9fcf821337b1e95f0fccaa30dc7196b9047cc8 + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21975-LGA + X-Timer: + - S1695849716.770304,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '10' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:55 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 5c5101a07b070d240738e6f1ae8def187b93ea54 + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21925-LGA + X-Timer: + - S1695849716.884605,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '10' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:55 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - b35aa4fc3fa99396f8d3fe45a51f7589435d234e + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21970-LGA + X-Timer: + - S1695849716.992551,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '10' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:56 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 96300ac05044a300ee305cc8858dda12fff3d9d8 + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21945-LGA + X-Timer: + - S1695849716.108249,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK - request: body: null headers: @@ -37,7 +544,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '564' Cache-Control: - max-age=600 Connection: @@ -47,11 +554,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:41 GMT + - Wed, 27 Sep 2023 21:21:56 GMT ETag: - - '"647f85f4-5bb"' + - '"65147dc1-5bb"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -59,19 +566,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 274c2843bc7661c12f1586cab9cf9ebc9b32582c + - 5f36dec4d79d73cd7fc263424d95a69dd57200e3 X-GitHub-Request-Id: - - 4980:7580:C731E2:112802A:650DE7A1 + - 2FFC:5E3C:221FCD:3093E0:65149ABF X-Served-By: - - cache-den8229-DEN + - cache-lga21926-LGA X-Timer: - - S1695410082.574751,VS0,VE210 + - S1695849716.207352,VS0,VE3 expires: - - Fri, 22 Sep 2023 19:24:41 GMT + - Wed, 27 Sep 2023 21:22:32 GMT x-origin-cache: - HIT x-proxy-cache: @@ -154,7 +661,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '564' Cache-Control: - max-age=600 Connection: @@ -164,11 +671,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:41 GMT + - Wed, 27 Sep 2023 21:21:56 GMT ETag: - - '"647f85f4-10cd"' + - '"65147dc1-10cd"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -176,19 +683,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - f92f6ca3218d3bea6e74861922f2a4aca720fcf2 + - d9b4de17e752bf71d55f2ca847286f32a4ba3b87 X-GitHub-Request-Id: - - 1BB4:9814:CBA553:116F911:650DE7A1 + - B512:543E:231D39:31A9B3:65149AC0 X-Served-By: - - cache-den8256-DEN + - cache-lga21960-LGA X-Timer: - - S1695410082.887350,VS0,VE66 + - S1695849716.313061,VS0,VE1 expires: - - Fri, 22 Sep 2023 19:24:41 GMT + - Wed, 27 Sep 2023 21:22:32 GMT x-origin-cache: - HIT x-proxy-cache: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example94].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example94].yaml new file mode 100644 index 000000000..e29711276 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example94].yaml @@ -0,0 +1,1017 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '11' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:56 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 751402da08a27e52567d6d69a798630d267c3003 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21979-LGA + X-Timer: + - S1695849716.449380,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '11' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:56 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - fcfe3e82761ebe2b277782abf0aacda60a1c1e96 + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21950-LGA + X-Timer: + - S1695849717.575603,VS0,VE3 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '11' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:56 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 4de9469107ed597a9ad00b8b22ed002355fc5ef9 + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21931-LGA + X-Timer: + - S1695849717.690319,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '11' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:56 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - e18a533ee84119e37f95b71edcd15c43e1d72b0e + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21933-LGA + X-Timer: + - S1695849717.807668,VS0,VE22 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '11' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:56 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - b603ecc5268b55577c2542fffb64509a08daf72f + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21945-LGA + X-Timer: + - S1695849717.943230,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '11' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:57 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 19a1be89712a13ae103a0dd19966f8f53b1d8c0c + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21948-LGA + X-Timer: + - S1695849717.047023,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/checksum/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/checksum/json-schema/schema.json#\",\n + \ \"title\": \"Checksum Extension Specification\",\n \"description\": \"STAC + Checksum Extension to a STAC Item\",\n \"oneOf\": [\n {\n \"allOf\": + [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"$ref\": \"#/definitions/checksum_links\"\n + \ },\n {\n \"$ref\": \"#/definitions/checksum_assets\"\n + \ }\n ]\n },\n {\n \"allOf\": [\n {\n \"$ref\": + \"../../../catalog-spec/json-schema/catalog.json\"\n },\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"$ref\": \"#/definitions/checksum_links\"\n }\n ]\n + \ },\n {\n \"allOf\": [\n {\n \"$ref\": \"../../../collection-spec/json-schema/collection.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"$ref\": \"#/definitions/checksum_links\"\n + \ },\n {\n \"$ref\": \"#/definitions/checksum_assets\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"enum\": [\n \"checksum\",\n + \ \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/checksum/json-schema/schema.json\"\n + \ ]\n }\n }\n }\n },\n \"checksum_links\": + {\n \"type\": \"object\",\n \"properties\": {\n \"links\": + {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/checksums\"\n }\n }\n }\n },\n \"checksum_assets\": + {\n \"type\": \"object\",\n \"properties\": {\n \"assets\": + {\n \"type\": \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/checksums\"\n }\n }\n + \ }\n }\n },\n \"checksums\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"checksum:multihash\": {\n \"type\": + \"string\",\n \"pattern\": \"^[a-f0-9]+$\",\n \"title\": + \"Multihash\"\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '567' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2361' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:57 GMT + ETag: + - '"65147dc1-939"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 28d4b637b4e3e6997e64028f6f79159e6f0f39c8 + X-GitHub-Request-Id: + - 309A:103C:4EC3CA:746F62:65148550 + X-Served-By: + - cache-lga21967-LGA + X-Timer: + - S1695849717.149081,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:04 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '569' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:57 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - c7667b135b2cc1c25ec7426eae1e80145e1e1291 + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21952-LGA + X-Timer: + - S1695849717.263677,VS0,VE0 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json#\",\n + \ \"title\": \"STAC Collection Specification\",\n \"description\": \"This + object represents Collections in a SpatioTemporal Asset Catalog.\",\n \"allOf\": + [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"keywords\": + {\n \"title\": \"Keywords\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n + \ \"providers\": {\n \"type\": \"array\",\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"title\": + \"Organization name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n },\n \"extent\": + {\n \"title\": \"Extents\",\n \"type\": \"object\",\n \"required\": + [\n \"spatial\",\n \"temporal\"\n ],\n \"properties\": + {\n \"spatial\": {\n \"title\": \"Spatial extent object\",\n + \ \"type\": \"object\",\n \"required\": [\n \"bbox\"\n + \ ],\n \"properties\": {\n \"bbox\": + {\n \"title\": \"Spatial extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Spatial extent\",\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\":4,\n + \ \"maxItems\":4\n },\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '569' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5346' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:57 GMT + ETag: + - '"65147dc1-14e2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 2ff06d5330465130bd271bd9d6c52e27c75fee26 + X-GitHub-Request-Id: + - DC8C:6FEB:26F7FB:34E32D:6514878E + X-Served-By: + - cache-lga21968-LGA + X-Timer: + - S1695849717.380435,VS0,VE1 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/sar/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/sar/json-schema/schema.json#\",\n + \ \"title\": \"SAR Extension\",\n \"description\": \"STAC SAR Extension to + a STAC Item\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/sar\"\n }\n ],\n \"definitions\": + {\n \"sar\": {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"stac_extensions\": {\n \"type\": \"array\",\n \"contains\": + {\n \"enum\": [\n \"sar\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/sar/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [\n \"sar:instrument_mode\",\n + \ \"sar:frequency_band\",\n \"sar:polarizations\",\n + \ \"sar:product_type\"\n ],\n \"properties\": + {\n \"sar:instrument_mode\": {\n \"title\": \"Instrument + Mode\",\n \"type\": \"string\",\n \"example\": \"WV\"\n + \ },\n \"sar:frequency_band\": {\n \"title\": + \"Frequency Band\",\n \"type\": \"string\",\n \"enum\": + [\n \"P\",\n \"L\",\n \"S\",\n + \ \"C\",\n \"X\",\n \"Ku\",\n + \ \"K\",\n \"Ka\"\n ]\n },\n + \ \"sar:center_frequency\": {\n \"title\": \"Center + Frequency (GHz)\",\n \"type\": \"number\"\n },\n \"sar:polarizations\": + {\n \"title\": \"Polarizations\",\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"maxItems\": 4,\n \"uniqueItems\": + true,\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"HH\",\n \"VV\",\n + \ \"HV\",\n \"VH\"\n ]\n }\n + \ },\n \"sar:product_type\": {\n \"title\": + \"Product type\",\n \"type\": \"string\",\n \"examples\": + [\n \"SSC\",\n \"MGD\",\n \"SGC\"\n + \ ]\n },\n \"sar:resolution_range\": {\n + \ \"title\": \"Resolution range (m)\",\n \"type\": + \"number\",\n \"minimum\": 0\n },\n \"sar:resolution_azimuth\": + {\n \"title\": \"Resolution azimuth (m)\",\n \"type\": + \"number\",\n \"minimum\": 0\n },\n \"sar:pixel_spacing_range\": + {\n \"title\": \"Pixel spacing range (m)\",\n \"type\": + \"number\",\n \"minimum\": 0\n },\n \"sar:pixel_spacing_azimuth\": + {\n \"title\": \"Pixel spacing azimuth (m)\",\n \"type\": + \"number\",\n \"minimum\": 0\n },\n \"sar:looks_range\": + {\n \"title\": \"Looks range\",\n \"type\": \"integer\",\n + \ \"minimum\": 0\n },\n \"sar:looks_azimuth\": + {\n \"title\": \"Looks azimuth\",\n \"type\": \"integer\",\n + \ \"minimum\": 0\n },\n \"sar:looks_equivalent_number\": + {\n \"title\": \"Equivalent number of looks (ENL)\",\n \"type\": + \"number\",\n \"minimum\": 0\n },\n \"sar:observation_direction\": + {\n \"title\": \"Antenna pointing direction\",\n \"type\": + \"string\",\n \"enum\": [\n \"left\",\n \"right\"\n + \ ]\n }\n }\n },\n \"assets\": + {\n \"type\": \"object\",\n \"additionalProperties\": {\n + \ \"type\": \"object\",\n \"properties\": {\n \"sar:polarizations\": + {\n \"title\": \"Polarizations\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n + \ \"type\": \"string\",\n \"enum\": [\n \"HH\",\n + \ \"VV\",\n \"HV\",\n \"VH\"\n + \ ]\n }\n }\n }\n }\n + \ }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '565' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '4301' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:57 GMT + ETag: + - '"65147dc1-10cd"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 2901de017063afc8b89bb7f27757ab2af037a49b + X-GitHub-Request-Id: + - B512:543E:231D39:31A9B3:65149AC0 + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849717.495237,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:32 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/sat/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/sat/json-schema/schema.json#\",\n + \ \"title\": \"Sat Extension\",\n \"description\": \"STAC Sat Extension to + a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/sat\"\n },\n {\n \"$ref\": + \"../../../item-spec/json-schema/instrument.json\"\n }\n ],\n \"definitions\": + {\n \"sat\": {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\",\n + \ \"properties\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"enum\": + [\n \"sat\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/sat/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"anyOf\": [\n {\"required\": [\"sat:relative_orbit\"]},\n + \ {\"required\": [\"sat:orbit_state\"]}\n ],\n \"properties\": + {\n \"sat:relative_orbit\": {\n \"type\": \"integer\",\n + \ \"minimum\": 1\n },\n \"sat:orbit_state\": + {\n \"title\": \"Orbit State\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"ascending\",\n \"descending\",\n + \ \"geostationary\"\n ]\n }\n }\n + \ }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '566' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1467' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:57 GMT + ETag: + - '"65147dc1-5bb"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 46ce1985338caa3d6f405e97bcfed1b03c7cbc3c + X-GitHub-Request-Id: + - 2FFC:5E3C:221FCD:3093E0:65149ABF + X-Served-By: + - cache-lga21954-LGA + X-Timer: + - S1695849718.614533,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:32 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example95].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example95].yaml new file mode 100644 index 000000000..0c80b74a5 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example95].yaml @@ -0,0 +1,676 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '12' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:57 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 169cb109d4e0321178e102ee31deff14c6d2e4d2 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21951-LGA + X-Timer: + - S1695849718.744225,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '12' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:57 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - c0524ecca219b88f12b3c203185d2e5fe74c0be2 + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21939-LGA + X-Timer: + - S1695849718.857322,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '12' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:57 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 1fa32ee9434e4842c8bc4721e3ca77eabd7b3963 + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21960-LGA + X-Timer: + - S1695849718.969513,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '12' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:58 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 4afdc9aafdf64076569d4410ad70dea7f4f54b47 + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21942-LGA + X-Timer: + - S1695849718.084478,VS0,VE17 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '12' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:58 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 68e29a87484ce4ff258573a32140c729ddfe6e7b + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21946-LGA + X-Timer: + - S1695849718.207729,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '12' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:58 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 9b1b1c4e51d295f8e2d872eacd8c44e5f6d469be + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21958-LGA + X-Timer: + - S1695849718.326230,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/sat/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/sat/json-schema/schema.json#\",\n + \ \"title\": \"Sat Extension\",\n \"description\": \"STAC Sat Extension to + a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/sat\"\n },\n {\n \"$ref\": + \"../../../item-spec/json-schema/instrument.json\"\n }\n ],\n \"definitions\": + {\n \"sat\": {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\",\n + \ \"properties\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"enum\": + [\n \"sat\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/sat/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"anyOf\": [\n {\"required\": [\"sat:relative_orbit\"]},\n + \ {\"required\": [\"sat:orbit_state\"]}\n ],\n \"properties\": + {\n \"sat:relative_orbit\": {\n \"type\": \"integer\",\n + \ \"minimum\": 1\n },\n \"sat:orbit_state\": + {\n \"title\": \"Orbit State\",\n \"type\": \"string\",\n + \ \"enum\": [\n \"ascending\",\n \"descending\",\n + \ \"geostationary\"\n ]\n }\n }\n + \ }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '566' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1467' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:58 GMT + ETag: + - '"65147dc1-5bb"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 671582aed164d35c0ab8c82cbab0528e3500f4b5 + X-GitHub-Request-Id: + - 2FFC:5E3C:221FCD:3093E0:65149ABF + X-Served-By: + - cache-lga21949-LGA + X-Timer: + - S1695849718.439314,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:32 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json#\",\n + \ \"title\": \"View Geometry Extension\",\n \"description\": \"STAC View + Geometry Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": + \"../../../item-spec/json-schema/item.json\"\n },\n {\n \"$ref\": + \"#/definitions/view\"\n }\n ],\n \"definitions\": {\n \"view\": {\n + \ \"type\": \"object\",\n \"required\": [\n \"stac_extensions\",\n + \ \"properties\"\n ],\n \"properties\": {\n \"stac_extensions\": + {\n \"type\": \"array\",\n \"contains\": {\n \"enum\": + [\n \"view\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/view/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"anyOf\": [\n {\"required\": [\"view:off_nadir\"]},\n + \ {\"required\": [\"view:incidence_angle\"]},\n {\"required\": + [\"view:azimuth\"]},\n {\"required\": [\"view:sun_azimuth\"]},\n + \ {\"required\": [\"view:sun_elevation\"]}\n ],\n \"properties\": + {\n \"view:off_nadir\": {\n \"title\": \"Off Nadir\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 90\n },\n \"view:incidence_angle\": {\n \"title\": + \"Center incidence angle\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n },\n \"view:azimuth\": + {\n \"title\": \"Azimuth angle\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 360\n },\n + \ \"view:sun_azimuth\": {\n \"title\": \"Sun Azimuth\",\n + \ \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": + 360\n },\n \"view:sun_elevation\": {\n \"title\": + \"Sun Elevation\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 90\n }\n }\n }\n + \ }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '568' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2089' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:58 GMT + ETag: + - '"65147dc1-829"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 537ae405422a52dcf9bacd6949e714614d900a13 + X-GitHub-Request-Id: + - CCB2:76FD:21A196:30210A:65149ABC + X-Served-By: + - cache-lga21967-LGA + X-Timer: + - S1695849719.548297,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example96].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example96].yaml index a5ff4d329..8063e1aa6 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example96].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example96].yaml @@ -1,4 +1,224 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json#\",\n + \ \"title\": \"STAC Collection Specification\",\n \"description\": \"This + object represents Collections in a SpatioTemporal Asset Catalog.\",\n \"allOf\": + [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"keywords\": + {\n \"title\": \"Keywords\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n + \ \"providers\": {\n \"type\": \"array\",\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"title\": + \"Organization name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n },\n \"extent\": + {\n \"title\": \"Extents\",\n \"type\": \"object\",\n \"required\": + [\n \"spatial\",\n \"temporal\"\n ],\n \"properties\": + {\n \"spatial\": {\n \"title\": \"Spatial extent object\",\n + \ \"type\": \"object\",\n \"required\": [\n \"bbox\"\n + \ ],\n \"properties\": {\n \"bbox\": + {\n \"title\": \"Spatial extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Spatial extent\",\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\":4,\n + \ \"maxItems\":4\n },\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '570' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5346' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:58 GMT + ETag: + - '"65147dc1-14e2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 7696b6401eb526cea6dc83515fa74dd05ac27412 + X-GitHub-Request-Id: + - DC8C:6FEB:26F7FB:34E32D:6514878E + X-Served-By: + - cache-lga21967-LGA + X-Timer: + - S1695849719.674932,VS0,VE1 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '570' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:58 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 102180d8dc00e5e7ccd3b6167d457f2bf30f3e71 + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21948-LGA + X-Timer: + - S1695849719.795803,VS0,VE2 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK - request: body: null headers: @@ -51,7 +271,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '567' Cache-Control: - max-age=600 Connection: @@ -61,11 +281,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:42 GMT + - Wed, 27 Sep 2023 21:21:58 GMT ETag: - - '"647f85f4-9a3"' + - '"65147dc1-9a3"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -73,19 +293,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 84573a874480cbdbfd403434de7aece3a4cf99a7 + - ed92bc127a52957537b0dffd36d92b5cb56d4a9b X-GitHub-Request-Id: - - C94C:103F:19DC67:22721D:650DE7A1 + - 2404:68FC:1FFCEB:2E4999:65149AC0 X-Served-By: - - cache-den8267-DEN + - cache-lga21946-LGA X-Timer: - - S1695410082.122039,VS0,VE62 + - S1695849719.905743,VS0,VE2 expires: - - Fri, 22 Sep 2023 19:24:42 GMT + - Wed, 27 Sep 2023 21:22:32 GMT x-origin-cache: - HIT x-proxy-cache: @@ -93,4 +313,134 @@ interactions: status: code: 200 message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '13' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:59 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - dcaff19b453233fd748af40990e5ea2f5d776218 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21933-LGA + X-Timer: + - S1695849719.023948,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example97].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example97].yaml new file mode 100644 index 000000000..1ef26fd06 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example97].yaml @@ -0,0 +1,914 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '14' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:59 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 7294beab272b894248036e1323728085816771c1 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21954-LGA + X-Timer: + - S1695849719.151740,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '13' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:59 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - d544ec5dbec47126bbf0da952250ef32c7e0b8b9 + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21973-LGA + X-Timer: + - S1695849719.314392,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '13' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:59 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 4358b561b51b6712165e36ab0c63d0972519c655 + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21939-LGA + X-Timer: + - S1695849719.427608,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '13' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:59 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 465a1a2f8585c8223c68bcebb9b055101514cbc8 + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21952-LGA + X-Timer: + - S1695849720.545759,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '13' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:59 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - d4da02a9595426a7e638c5154eb2090913ee8c1d + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21942-LGA + X-Timer: + - S1695849720.661696,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '13' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:59 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - a9232f41d5d753579ed3e1b398beccb27a0fa9c5 + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21960-LGA + X-Timer: + - S1695849720.772775,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/scientific/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/scientific/json-schema/schema.json#\",\n + \ \"title\": \"Scientific Extension\",\n \"description\": \"STAC Scientific + Extension to STAC Items or STAC Collections.\",\n \"oneOf\": [\n {\n \"allOf\": + [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"properties\"\n ],\n \"properties\": {\n + \ \"properties\": {\n \"$ref\": \"#/definitions/scientific\"\n + \ }\n }\n }\n ]\n },\n {\n \"allOf\": + [\n {\n \"$ref\": \"../../../collection-spec/json-schema/collection.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"$ref\": \"#/definitions/scientific\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"enum\": [\n \"scientific\",\n + \ \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/scientific/json-schema/schema.json\"\n + \ ]\n }\n }\n }\n },\n \"scientific\": + {\n \"type\": \"object\",\n \"anyOf\": [\n {\"required\": + [\"sci:doi\"]},\n {\"required\": [\"sci:citation\"]},\n {\"required\": + [\"sci:publications\"]}\n ],\n \"properties\": {\n \"sci:doi\": + {\n \"type\": \"string\",\n \"title\": \"Data DOI\",\n \"pattern\": + \"^(10[.][0-9]{4,}(?:[.][0-9]+)*/(?:(?![%\\\"#? ])\\\\S)+)$\"\n }, + \n \"sci:citation\": {\n \"type\": \"string\", \n \"title\": + \"Proposed Data Citation\"\n },\n \"sci:publications\": {\n + \ \"type\": \"array\",\n \"title\": \"Publications\",\n \"items\": + {\n \"type\": \"object\",\n \"properties\": {\n \"doi\": + {\n \"type\": \"string\",\n \"title\": \"Publication + DOI\",\n \"pattern\": \"^(10[.][0-9]{4,}(?:[.][0-9]+)*/(?:(?![%\\\"#? + ])\\\\S)+)$\"\n }, \n \"citation\": { \n \"type\": + \"string\", \n \"title\": \"Publication Citation\"\n }\n + \ }\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '567' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2467' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:59 GMT + ETag: + - '"65147dc1-9a3"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - f4e1e2667331ac2ad19d8ccaa55c355f8397e382 + X-GitHub-Request-Id: + - 2404:68FC:1FFCEB:2E4999:65149AC0 + X-Served-By: + - cache-lga21939-LGA + X-Timer: + - S1695849720.878158,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:32 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json#\",\n + \ \"title\": \"STAC Collection Specification\",\n \"description\": \"This + object represents Collections in a SpatioTemporal Asset Catalog.\",\n \"allOf\": + [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"keywords\": + {\n \"title\": \"Keywords\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n + \ \"providers\": {\n \"type\": \"array\",\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"title\": + \"Organization name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n },\n \"extent\": + {\n \"title\": \"Extents\",\n \"type\": \"object\",\n \"required\": + [\n \"spatial\",\n \"temporal\"\n ],\n \"properties\": + {\n \"spatial\": {\n \"title\": \"Spatial extent object\",\n + \ \"type\": \"object\",\n \"required\": [\n \"bbox\"\n + \ ],\n \"properties\": {\n \"bbox\": + {\n \"title\": \"Spatial extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Spatial extent\",\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\":4,\n + \ \"maxItems\":4\n },\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '571' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5346' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:21:59 GMT + ETag: + - '"65147dc1-14e2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 64b95f0c81c2627c12d31df270ffdf2084df2983 + X-GitHub-Request-Id: + - DC8C:6FEB:26F7FB:34E32D:6514878E + X-Served-By: + - cache-lga21951-LGA + X-Timer: + - S1695849720.993188,VS0,VE2 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '571' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:00 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 507a67f6b73b00674cf45c148b8860c58cbc110b + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21967-LGA + X-Timer: + - S1695849720.111223,VS0,VE3 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/checksum/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/checksum/json-schema/schema.json#\",\n + \ \"title\": \"Checksum Extension Specification\",\n \"description\": \"STAC + Checksum Extension to a STAC Item\",\n \"oneOf\": [\n {\n \"allOf\": + [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"$ref\": \"#/definitions/checksum_links\"\n + \ },\n {\n \"$ref\": \"#/definitions/checksum_assets\"\n + \ }\n ]\n },\n {\n \"allOf\": [\n {\n \"$ref\": + \"../../../catalog-spec/json-schema/catalog.json\"\n },\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"$ref\": \"#/definitions/checksum_links\"\n }\n ]\n + \ },\n {\n \"allOf\": [\n {\n \"$ref\": \"../../../collection-spec/json-schema/collection.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"$ref\": \"#/definitions/checksum_links\"\n + \ },\n {\n \"$ref\": \"#/definitions/checksum_assets\"\n + \ }\n ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": + {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\"\n + \ ],\n \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"enum\": [\n \"checksum\",\n + \ \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/checksum/json-schema/schema.json\"\n + \ ]\n }\n }\n }\n },\n \"checksum_links\": + {\n \"type\": \"object\",\n \"properties\": {\n \"links\": + {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/checksums\"\n }\n }\n }\n },\n \"checksum_assets\": + {\n \"type\": \"object\",\n \"properties\": {\n \"assets\": + {\n \"type\": \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/checksums\"\n }\n }\n + \ }\n }\n },\n \"checksums\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"checksum:multihash\": {\n \"type\": + \"string\",\n \"pattern\": \"^[a-f0-9]+$\",\n \"title\": + \"Multihash\"\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '571' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2361' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:00 GMT + ETag: + - '"65147dc1-939"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - baab91afe9ca7e5b4f8bf36c7d45c5994c728a13 + X-GitHub-Request-Id: + - 309A:103C:4EC3CA:746F62:65148550 + X-Served-By: + - cache-lga21949-LGA + X-Timer: + - S1695849720.223771,VS0,VE3 + expires: + - Wed, 27 Sep 2023 19:51:04 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example98].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example98].yaml index e405f1455..1e72ca6af 100644 --- a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example98].yaml +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example98].yaml @@ -1,4 +1,980 @@ interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '14' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:00 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 6b34a8bd4828445fe7aace0e45b6166629e1c4c2 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21958-LGA + X-Timer: + - S1695849720.367294,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '14' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:00 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - b30d129d59bc05cd381b4570f42c3e8d5fc95f0a + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21946-LGA + X-Timer: + - S1695849720.485139,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '14' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:00 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 43bd069812e7395246b16b9dd7304392430c6f8e + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21928-LGA + X-Timer: + - S1695849721.593569,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '14' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:00 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - ec6123301b0fb3436bde044fda8260e0f5f7b613 + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21947-LGA + X-Timer: + - S1695849721.705259,VS0,VE3 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '14' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:00 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - c19c51d69e1548fe71b85de2513e04569c9503b9 + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21949-LGA + X-Timer: + - S1695849721.803145,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '14' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:00 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '17' + X-Fastly-Request-ID: + - e8e60b76bb32c86d524bb19aff24452c93a1862b + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21962-LGA + X-Timer: + - S1695849721.905291,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/datacube/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/datacube/json-schema/schema.json#\",\n + \ \"title\": \"Data Cube Extension\",\n \"description\": \"STAC Data Cube + Extension to STAC Items and STAC Collections\",\n \"oneOf\": [\n {\n \"allOf\": + [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"properties\"\n ],\n \"properties\": {\n + \ \"properties\": {\n \"$ref\": \"#/definitions/datacube\"\n + \ }\n }\n }\n ]\n },\n {\n \"allOf\": + [\n {\n \"$ref\": \"../../../collection-spec/json-schema/collection.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"$ref\": \"#/definitions/datacube\"\n }\n + \ ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": {\n \"type\": + \"object\",\n \"required\": [\n \"stac_extensions\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"enum\": [\n \"datacube\",\n + \ \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/datacube/json-schema/schema.json\"\n + \ ]\n }\n }\n }\n },\n \"datacube\": + {\n \"type\": \"object\",\n \"required\": [\n \"cube:dimensions\"\n + \ ],\n \"properties\": {\n \"cube:dimensions\": {\n \"type\": + \"object\",\n \"additionalProperties\": {\n \"anyOf\": + [\n {\n \"$ref\": \"#/definitions/objects/additional_dimension\"\n + \ },\n {\n \"$ref\": \"#/definitions/objects/horizontal_spatial_dimension\"\n + \ },\n {\n \"$ref\": \"#/definitions/objects/vertical_spatial_dimension\"\n + \ },\n {\n \"$ref\": \"#/definitions/objects/temporal_dimension\"\n + \ }\n ]\n }\n }\n }\n },\n + \ \"objects\": {\n \"additional_dimension\": {\n \"title\": + \"Additional Dimension Object\",\n \"type\": \"object\",\n \"anyOf\": + [\n {\n \"required\": [\n \"type\",\n \"extent\"\n + \ ]\n },\n {\n \"required\": [\n \"type\",\n + \ \"values\"\n ]\n }\n ],\n \"not\": + {\n \"required\": [\"axis\"]\n },\n \"properties\": + {\n \"type\": {\n \"allOf\": [\n {\n \"type\": + \"string\"\n },\n {\n \"not\": {\n + \ \"type\": \"string\",\n \"const\": \"spatial\"\n + \ }\n }\n ]\n },\n \"description\": + {\n \"$ref\": \"#/definitions/description\"\n },\n \"extent\": + {\n \"$ref\": \"#/definitions/extent_open\"\n },\n \"values\": + {\n \"$ref\": \"#/definitions/values\"\n },\n \"step\": + {\n \"$ref\": \"#/definitions/step\"\n },\n \"unit\": + {\n \"$ref\": \"#/definitions/unit\"\n },\n \"reference_system\": + {\n \"type\": \"string\"\n }\n }\n },\n \"horizontal_spatial_dimension\": + {\n \"title\": \"Horizontal Spatial Dimension Object\",\n \"type\": + \"object\",\n \"required\": [\n \"type\",\n \"axis\",\n + \ \"extent\"\n ],\n \"properties\": {\n \"type\": + {\n \"$ref\": \"#/definitions/type_spatial\"\n },\n \"axis\": + {\n \"$ref\": \"#/definitions/axis_xy\"\n },\n \"description\": + {\n \"$ref\": \"#/definitions/description\"\n },\n \"extent\": + {\n \"$ref\": \"#/definitions/extent_closed\"\n },\n \"values\": + {\n \"$ref\": \"#/definitions/values_numeric\"\n },\n + \ \"step\": {\n \"$ref\": \"#/definitions/step\"\n },\n + \ \"reference_system\": {\n \"$ref\": \"#/definitions/reference_system_spatial\"\n + \ }\n }\n },\n \"vertical_spatial_dimension\": {\n + \ \"title\": \"Vertical Spatial Dimension Object\",\n \"type\": + \"object\",\n \"anyOf\": [\n {\n \"required\": + [\n \"type\",\n \"axis\",\n \"extent\"\n + \ ]\n },\n {\n \"required\": [\n \"type\",\n + \ \"axis\",\n \"values\"\n ]\n }\n + \ ],\n \"properties\": {\n \"type\": {\n \"$ref\": + \"#/definitions/type_spatial\"\n },\n \"axis\": {\n \"$ref\": + \"#/definitions/axis_z\"\n },\n \"description\": {\n \"$ref\": + \"#/definitions/description\"\n },\n \"extent\": {\n \"$ref\": + \"#/definitions/extent_open\"\n },\n \"values\": {\n \"$ref\": + \"#/definitions/values\"\n },\n \"step\": {\n \"$ref\": + \"#/definitions/step\"\n },\n \"unit\": {\n \"$ref\": + \"#/definitions/unit\"\n },\n \"reference_system\": {\n + \ \"$ref\": \"#/definitions/reference_system_spatial\"\n }\n + \ }\n },\n \"temporal_dimension\": {\n \"title\": \"Temporal + Dimension Object\",\n \"type\": \"object\",\n \"required\": + [\n \"type\",\n \"extent\"\n ],\n \"not\": + {\n \"required\": [\"axis\"]\n },\n \"properties\": + {\n \"type\": {\n \"type\": \"string\",\n \"const\": + \"temporal\"\n },\n \"description\": {\n \"$ref\": + \"#/definitions/description\"\n },\n \"values\": {\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n \"type\": + \"string\"\n }\n },\n \"extent\": {\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": 2,\n \"items\": + {\n \"type\": [\n \"string\",\n \"null\"\n + \ ]\n }\n },\n \"step\": {\n \"type\": + [\n \"string\",\n \"null\"\n ]\n }\n + \ }\n }\n },\n \"type_spatial\": {\n \"type\": \"string\",\n + \ \"const\": \"spatial\"\n },\n \"axis_xy\": {\n \"type\": + \"string\",\n \"enum\": [\n \"x\",\n \"y\"\n ]\n },\n + \ \"axis_z\": {\n \"type\": \"string\",\n \"const\": \"z\"\n },\n + \ \"extent_closed\": {\n \"type\": \"array\",\n \"minItems\": + 2,\n \"maxItems\": 2,\n \"items\": {\n \"type\": \"number\"\n + \ }\n },\n \"extent_open\": {\n \"type\": \"array\",\n \"minItems\": + 2,\n \"maxItems\": 2,\n \"items\": {\n \"type\": [\n \"number\",\n + \ \"null\"\n ]\n }\n },\n \"values_numeric\": {\n + \ \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"type\": + \"number\"\n }\n },\n \"values\": {\n \"type\": \"array\",\n + \ \"minItems\": 1,\n \"items\": {\n \"oneOf\": [\n {\n + \ \"type\": \"number\"\n },\n {\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"step\": {\n \"type\": + [\n \"number\",\n \"null\"\n ]\n },\n \"unit\": {\n + \ \"type\": \"string\"\n },\n \"reference_system_spatial\": {\n + \ \"type\": [\n \"string\",\n \"number\",\n \"object\"\n + \ ],\n \"default\": 4326\n },\n \"description\": {\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '571' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '7526' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:01 GMT + ETag: + - '"65147dc1-1d66"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - dbeda363e99fb6398524c82f7ecbae880092c963 + X-GitHub-Request-Id: + - DF4C:7B4C:2A5E4E:3A5A00:65149ABD + X-Served-By: + - cache-lga21957-LGA + X-Timer: + - S1695849721.000171,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json#\",\n + \ \"title\": \"STAC Collection Specification\",\n \"description\": \"This + object represents Collections in a SpatioTemporal Asset Catalog.\",\n \"allOf\": + [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"keywords\": + {\n \"title\": \"Keywords\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n + \ \"providers\": {\n \"type\": \"array\",\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"title\": + \"Organization name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n },\n \"extent\": + {\n \"title\": \"Extents\",\n \"type\": \"object\",\n \"required\": + [\n \"spatial\",\n \"temporal\"\n ],\n \"properties\": + {\n \"spatial\": {\n \"title\": \"Spatial extent object\",\n + \ \"type\": \"object\",\n \"required\": [\n \"bbox\"\n + \ ],\n \"properties\": {\n \"bbox\": + {\n \"title\": \"Spatial extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Spatial extent\",\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\":4,\n + \ \"maxItems\":4\n },\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '572' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5346' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:01 GMT + ETag: + - '"65147dc1-14e2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 1ec5ecaf5ce75cdebc720a45291c1ad81abf2547 + X-GitHub-Request-Id: + - DC8C:6FEB:26F7FB:34E32D:6514878E + X-Served-By: + - cache-lga21938-LGA + X-Timer: + - S1695849721.116219,VS0,VE2 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '572' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:01 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 3f8a264b3efb5f268a8197d5f6486f63b03b609d + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21972-LGA + X-Timer: + - S1695849721.224561,VS0,VE1 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/eo/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/eo/json-schema/schema.json#\",\n + \ \"title\": \"EO Extension\",\n \"description\": \"STAC EO Extension to + a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/eo\"\n }\n ],\n \"definitions\": + {\n \"eo\": {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"stac_extensions\": {\n \"type\": \"array\",\n \"contains\": + {\n \"enum\": [\n \"eo\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/eo/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:bands\": {\n \"$ref\": + \"#/definitions/bands\"\n },\n \"eo:cloud_cover\": {\n + \ \"title\": \"Cloud Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n }\n + \ }\n },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"eo:bands\": {\n \"$ref\": + \"#/definitions/bands\"\n }\n }\n }\n }\n + \ }\n },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\"\n },\n + \ \"center_wavelength\": {\n \"title\": \"Center Wavelength\",\n + \ \"type\": \"number\"\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '571' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2053' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:01 GMT + ETag: + - '"65147dc1-805"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 49fa390b2f7bffe607288dbef1739c9ea4c644fb + X-GitHub-Request-Id: + - C5E4:3891:21EDA0:302569:65149ABD + X-Served-By: + - cache-lga21959-LGA + X-Timer: + - S1695849721.334962,VS0,VE6 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK - request: body: null headers: @@ -114,7 +1090,7 @@ interactions: Access-Control-Allow-Origin: - '*' Age: - - '0' + - '569' Cache-Control: - max-age=600 Connection: @@ -124,11 +1100,11 @@ interactions: Content-Type: - application/json; charset=utf-8 Date: - - Fri, 22 Sep 2023 19:14:42 GMT + - Wed, 27 Sep 2023 21:22:01 GMT ETag: - - '"647f85f4-1c4b"' + - '"65147dc1-1c4b"' Last-Modified: - - Tue, 06 Jun 2023 19:16:04 GMT + - Wed, 27 Sep 2023 19:08:49 GMT Server: - GitHub.com Vary: @@ -136,19 +1112,19 @@ interactions: Via: - 1.1 varnish X-Cache: - - MISS + - HIT X-Cache-Hits: - - '0' + - '1' X-Fastly-Request-ID: - - 31111220e19c8d5a3370bf375f824d48336a4cbe + - 4a714d177053ce798b79eb01073dd56e943675fd X-GitHub-Request-Id: - - 5C08:466F:C16E50:10CB7A7:650DE7A2 + - 1EDE:56AD:23A49C:3213A4:65149AC0 X-Served-By: - - cache-den8257-DEN + - cache-lga21953-LGA X-Timer: - - S1695410082.355044,VS0,VE60 + - S1695849721.470262,VS0,VE10 expires: - - Fri, 22 Sep 2023 19:24:42 GMT + - Wed, 27 Sep 2023 21:22:32 GMT x-origin-cache: - HIT x-proxy-cache: diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example99].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example99].yaml new file mode 100644 index 000000000..6e3554185 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example99].yaml @@ -0,0 +1,974 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/item.json#\",\n + \ \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": \"This + object represents the metadata for an item in a SpatioTemporal Asset Catalog.\",\n + \ \"allOf\": [\n {\n \"$ref\": \"#/definitions/core\"\n }\n ],\n + \ \"definitions\": {\n \"common_metadata\": {\n \"allOf\": [\n {\n + \ \"$ref\": \"basics.json\"\n },\n {\n \"$ref\": + \"datetime.json\"\n },\n {\n \"$ref\": \"instrument.json\"\n + \ },\n {\n \"$ref\": \"licensing.json\"\n },\n + \ {\n \"$ref\": \"provider.json\"\n }\n ]\n },\n + \ \"core\": {\n \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"oneOf\": [\n {\n \"type\": + \"object\",\n \"required\": [\n \"geometry\",\n + \ \"bbox\"\n ],\n \"properties\": + {\n \"geometry\": {\n \"$ref\": \"https://geojson.org/schema/Geometry.json\"\n + \ },\n \"bbox\": {\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\": + 4,\n \"maxItems\": 4\n },\n {\n + \ \"minItems\": 6,\n \"maxItems\": + 6\n }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n },\n {\n \"type\": \"object\",\n + \ \"required\": [\n \"geometry\"\n ],\n + \ \"properties\": {\n \"geometry\": {\n \"type\": + \"null\"\n },\n \"bbox\": {\n \"not\": + {}\n }\n }\n }\n ]\n },\n + \ {\n \"type\": \"object\",\n \"required\": [\n \"stac_version\",\n + \ \"id\",\n \"links\",\n \"assets\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"links\": {\n \"title\": \"Item links\",\n \"description\": + \"Links to item relations\",\n \"type\": \"array\",\n \"items\": + {\n \"$ref\": \"#/definitions/link\"\n }\n },\n + \ \"assets\": {\n \"$ref\": \"#/definitions/assets\"\n + \ },\n \"properties\": {\n \"$ref\": \"#/definitions/common_metadata\"\n + \ },\n \"collection\": {\n \"title\": \"Collection + ID\",\n \"description\": \"The ID of the STAC Collection this + Item references to.\",\n \"type\": \"string\"\n }\n + \ }\n }\n ]\n },\n \"link\": {\n \"type\": + \"object\",\n \"required\": [\n \"rel\",\n \"href\"\n ],\n + \ \"properties\": {\n \"href\": {\n \"title\": \"Link + reference\",\n \"type\": \"string\"\n },\n \"rel\": + {\n \"title\": \"Link relation type\",\n \"type\": \"string\"\n + \ },\n \"type\": {\n \"title\": \"Link type\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Link + title\",\n \"type\": \"string\"\n },\n \"created\": + {\n \"$ref\": \"datetime.json#/definitions/created\"\n },\n + \ \"updated\": {\n \"$ref\": \"datetime.json#/definitions/updated\"\n + \ }\n }\n },\n \"assets\": {\n \"title\": \"Asset links\",\n + \ \"description\": \"Links to assets\",\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/asset\"\n + \ }\n },\n \"asset\": {\n \"type\": \"object\",\n \"required\": + [\n \"href\"\n ],\n \"properties\": {\n \"href\": + {\n \"title\": \"Asset reference\",\n \"type\": \"string\"\n + \ },\n \"title\": {\n \"title\": \"Asset title\",\n + \ \"type\": \"string\"\n },\n \"description\": {\n \"title\": + \"Asset description\",\n \"type\": \"string\"\n },\n \"type\": + {\n \"title\": \"Asset type\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": \"Asset roles\",\n + \ \"type\": \"array\",\n \"items\": {\n \"type\": + \"string\"\n }\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '16' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5244' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:01 GMT + ETag: + - '"65147dc1-147c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 12ae40d87e6edf3f07ea7420639b30d9834396b2 + X-GitHub-Request-Id: + - AB30:4783:1F4627:2B8068:6514854D + X-Served-By: + - cache-lga21935-LGA + X-Timer: + - S1695849722.619558,VS0,VE3 + expires: + - Wed, 27 Sep 2023 19:51:02 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/basics.json#\",\n + \ \"title\": \"Basic Descriptive Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"title\": {\n \"title\": \"Item Title\",\n \"description\": + \"A human-readable title describing the Item.\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Item Description\",\n \"description\": + \"Detailed multi-line description to fully explain the Item.\",\n \"type\": + \"string\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '16' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '540' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:01 GMT + ETag: + - '"65147dc1-21c"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 3808326f27a7cfb523c7f1ca95da27a0f50a1d6f + X-GitHub-Request-Id: + - 5360:5029:1F4534:2B5CD9:6514854E + X-Served-By: + - cache-lga21956-LGA + X-Timer: + - S1695849722.742350,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/datetime.json#\",\n + \ \"title\": \"Date and Time Fields\",\n \"type\": \"object\",\n \"allOf\": + [\n {\n \"properties\": {\n \"created\": {\n \"$ref\": + \"#/definitions/created\"\n },\n \"updated\": {\n \"$ref\": + \"#/definitions/updated\"\n }\n }\n },\n {\n \"anyOf\": + [\n {\n \"required\": [\n \"datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"$ref\": + \"#/definitions/datetime\"\n },\n \"start_datetime\": + {\n \"$ref\": \"#/definitions/start_datetime\"\n }, + \n \"end_datetime\": {\n \"$ref\": \"#/definitions/end_datetime\"\n + \ }\n },\n \"dependencies\": {\n \"start_datetime\": + {\n \"required\": [\n \"end_datetime\"\n ]\n + \ },\n \"end_datetime\": {\n \"required\": + [\n \"start_datetime\"\n ]\n }\n }\n + \ },\n {\n \"required\": [\n \"datetime\",\n + \ \"start_datetime\",\n \"end_datetime\"\n ],\n + \ \"properties\": {\n \"datetime\": {\n \"oneOf\": + [\n {\n \"$ref\": \"#/definitions/datetime\"\n + \ },\n {\n \"type\": [\"null\"],\n + \ \"const\": null\n }\n ]\n },\n + \ \"start_datetime\": {\n \"$ref\": \"#/definitions/start_datetime\"\n + \ }, \n \"end_datetime\": {\n \"$ref\": + \"#/definitions/end_datetime\"\n }\n }\n }\n ]\n + \ }\n ],\n \"definitions\": {\n \"datetime\": {\n \"title\": \"Date + and Time\",\n \"description\": \"The searchable date/time of the assets, + in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"start_datetime\": {\n \"title\": \"Start + Date and Time\",\n \"description\": \"The searchable start date/time + of the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": \"string\",\n + \ \"format\": \"date-time\"\n }, \n \"end_datetime\": {\n \"title\": + \"End Date and Time\", \n \"description\": \"The searchable end date/time + of the assets, in UTC (Formatted in RFC 3339) \", \n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n \"created\": {\n + \ \"title\": \"Creation Time\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": \"Last Update + Time\",\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n + \ }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '16' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2690' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:01 GMT + ETag: + - '"65147dc1-a82"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 7dfaf94613cced477186d0d2bded0462d23a93f1 + X-GitHub-Request-Id: + - 3CD0:6E26:1C4920:284DE3:6514854F + X-Served-By: + - cache-lga21944-LGA + X-Timer: + - S1695849722.854667,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/instrument.json#\",\n + \ \"title\": \"Instrument Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"platform\": {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"instruments\": {\n \"title\": \"Instruments\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n + \ \"constellation\": {\n \"title\": \"Constellation\",\n \"type\": + \"string\"\n },\n \"mission\": {\n \"title\": \"Mission\",\n \"type\": + \"string\"\n },\n \"gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '16' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '674' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:01 GMT + ETag: + - '"65147dc1-2a2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 2115878ca4b681e86c24bc13e5f2c63b675970f0 + X-GitHub-Request-Id: + - 86E8:6B32:1B76C5:2793AB:65148543 + X-Served-By: + - cache-lga21944-LGA + X-Timer: + - S1695849722.981125,VS0,VE2 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/licensing.json#\",\n + \ \"title\": \"Licensing Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"license\": {\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '16' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '309' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:02 GMT + ETag: + - '"65147dc1-135"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 86508fa609509709633c4d9d242c6ce73ecd0223 + X-GitHub-Request-Id: + - 4CDE:3891:1D619A:2926C0:6514854F + X-Served-By: + - cache-lga21962-LGA + X-Timer: + - S1695849722.092279,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/item-spec/json-schema/provider.json#\",\n + \ \"title\": \"Provider Fields\",\n \"type\": \"object\",\n \"properties\": + {\n \"providers\": {\n \"title\": \"Providers\",\n \"type\": + \"array\",\n \"items\": {\n \"properties\": {\n \"name\": + {\n \"title\": \"Organization name\",\n \"type\": \"string\"\n + \ },\n \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": \"array\",\n + \ \"items\": {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n \"processor\",\n + \ \"host\"\n ]\n }\n },\n \"url\": + {\n \"title\": \"Organization homepage\",\n \"type\": + \"string\",\n \"format\": \"url\"\n }\n }\n }\n + \ }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '16' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '1038' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:02 GMT + ETag: + - '"65147dc1-40e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - fbc85683bb71901379d4115f97a996b875c999e6 + X-GitHub-Request-Id: + - F08E:5657:1CFE0E:29014D:6514854F + X-Served-By: + - cache-lga21953-LGA + X-Timer: + - S1695849722.196740,VS0,VE1 + expires: + - Wed, 27 Sep 2023 19:51:03 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/eo/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/eo/json-schema/schema.json#\",\n + \ \"title\": \"EO Extension\",\n \"description\": \"STAC EO Extension to + a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/eo\"\n }\n ],\n \"definitions\": + {\n \"eo\": {\n \"type\": \"object\",\n \"required\": [\n \"stac_extensions\",\n + \ \"properties\",\n \"assets\"\n ],\n \"properties\": + {\n \"stac_extensions\": {\n \"type\": \"array\",\n \"contains\": + {\n \"enum\": [\n \"eo\",\n \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/eo/json-schema/schema.json\"\n + \ ]\n }\n },\n \"properties\": {\n \"type\": + \"object\",\n \"properties\": {\n \"eo:bands\": {\n \"$ref\": + \"#/definitions/bands\"\n },\n \"eo:cloud_cover\": {\n + \ \"title\": \"Cloud Cover\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 100\n }\n + \ }\n },\n \"assets\": {\n \"type\": \"object\",\n + \ \"additionalProperties\": {\n \"type\": \"object\",\n + \ \"properties\": {\n \"eo:bands\": {\n \"$ref\": + \"#/definitions/bands\"\n }\n }\n }\n }\n + \ }\n },\n \"bands\": {\n \"title\": \"Bands\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of the band\",\n \"type\": + \"string\"\n },\n \"common_name\": {\n \"title\": + \"Common Name of the band\",\n \"type\": \"string\"\n },\n + \ \"center_wavelength\": {\n \"title\": \"Center Wavelength\",\n + \ \"type\": \"number\"\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\"\n }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '572' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2053' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:02 GMT + ETag: + - '"65147dc1-805"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 60d54d3bbbb4797ab0af4dfacafc040838d31822 + X-GitHub-Request-Id: + - C5E4:3891:21EDA0:302569:65149ABD + X-Served-By: + - cache-lga21965-LGA + X-Timer: + - S1695849722.299156,VS0,VE2 + expires: + - Wed, 27 Sep 2023 21:22:30 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/extensions/tiled-assets/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/tiled-assets/json-schema/schema.json#\",\n + \ \"title\": \"Tiled Assets Extension\",\n \"description\": \"Tiled Assets + Extension to a STAC Item\",\n \"oneOf\": [\n {\n \"allOf\": [\n {\n + \ \"$ref\": \"../../../item-spec/json-schema/item.json\"\n },\n + \ {\n \"$ref\": \"#/definitions/stac_extensions\"\n },\n + \ {\n \"$ref\": \"#/definitions/item-tiles\"\n }\n ]\n + \ }, {\n \"allOf\": [\n {\n \"$ref\": \"../../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/stac_extensions\"\n + \ },\n {\n \"$ref\": \"#/definitions/catalog-collection-tiles\"\n + \ }\n ]\n }, {\n \"allOf\": [\n {\n \"$ref\": + \"../../../collection-spec/json-schema/collection.json\"\n },\n {\n + \ \"$ref\": \"#/definitions/stac_extensions\"\n },\n {\n + \ \"$ref\": \"#/definitions/catalog-collection-tiles\"\n }\n + \ ]\n }\n ],\n \"definitions\": {\n \"stac_extensions\": {\n \"type\": + \"object\",\n \"required\": [\n \"stac_extensions\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"type\": + \"array\",\n \"contains\": {\n \"enum\": [\n \"tiled-assets\",\n + \ \"https://schemas.stacspec.org/v1.0.0-beta.2/extensions/tiled-assets/json-schema/schema.json\"\n + \ ]\n }\n }\n }\n },\n \"catalog-collection-tiles\": + {\n \"title\": \"Tile matrix additions to STAC Collections and Catalogs\",\n + \ \"description\": \"Allows the definition of tile matrix sets on a Collection + or Catalog.\",\n \"type\": \"object\",\n \"required\": [\n \"tiles:tile_matrix_set\"\n + \ ],\n \"properties\": {\n \"tiles:tile_matrix_set\": {\n + \ \"$ref\": \"#/definitions/tile_matrix_set\"\n }\n }\n + \ },\n \"item-tiles\": {\n \"type\": \"object\",\n \"required\": + [\n \"properties\",\n \"asset_templates\"\n ],\n \"properties\": + {\n \"properties\": {\n \"type\": \"object\",\n \"required\": + [],\n \"properties\": {\n \"tiles:tile_matrix_set\": {\n + \ \"$ref\": \"#/definitions/tile_matrix_set\"\n },\n + \ \"tiles:tile_matrix_links\": {\n \"title\": \"A map + of tile matrix identifier to its definition with possible limits.\",\n \"type\": + \"object\",\n \"patternProperties\": {\n \"[a-zA-Z0-9]+\": + {\n \"$ref\": \"#/definitions/tile_matrix_link\"\n }\n + \ }\n }\n }\n },\n \"asset_templates\": + {\n \"title\": \"Asset template links\",\n \"description\": + \"Links to assets templates. These are regular assets that may have template + arguments in their href property.\",\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"$ref\": \"../../../item-spec/json-schema/item.json#/definitions/asset\"\n + \ }\n }\n }\n },\n \"tile_matrix_set\": {\n \"$ref\": + \"http://schemas.opengis.net/tms/1.0/json/tms-schema.json\"\n },\n \"tile_matrix_link\": + {\n \"type\": \"object\",\n \"oneOf\": [\n { \"required\": + [\"url\"] },\n { \"required\": [\"well_known_scale_set\"] }\n ],\n + \ \"properties\": {\n \"url\": {\n \"type\": \"string\",\n + \ \"description\": \"The URL to access the linked tile matrix set.\"\n + \ },\n \"well_known_scale_set\": {\n \"type\": \"string\",\n + \ \"description\": \"The name of a Well Known Scale Set.\",\n \"enum\": + [\n \"GlobalCRS84Scale\",\n \"GlobalCRS84Pixel\",\n + \ \"GoogleCRS84Quad\",\n \"WorldMercatorWGS84\"\n ]\n + \ },\n \"limits\": {\n \"type\": \"object\",\n \"description\": + \"Optional limits for each tile matrix. Keys in this mapping must be all be + valid tile matrix identifiers of the reference tile matrix set.\",\n \"additionalProperties\": + {\n \"$ref\": \"#/definitions/tile_matrix_limits\"\n }\n + \ },\n \"pixel_buffer\": {\n \"type\": \"object\",\n + \ \"description\": \"An optional pixel buffer description object per + tile matrix. By default, no pixel buffers are used. Keys in this mapping must + be all be valid tile matrix identifiers of the reference tile matrix set.\",\n + \ \"additionalProperties\": {\n \"$ref\": \"#/definitions/pixel_buffer\"\n + \ }\n }\n }\n },\n \"tile_matrix_limits\": {\n \"type\": + \"object\",\n \"description\": \"This object allows to specify subset + region of the source tileset. This concept is modelled after the TileMatrixSetLimits2D + requirement class.\",\n \"properties\": {\n \"min_tile_row\": + {\n \"type\": \"integer\",\n \"description\": \"Minimum + tile row index valid for this layer. If not specified it uses the the one + from the referenced tile matrix.\"\n },\n \"max_tile_row\": + {\n \"type\": \"integer\",\n \"description\": \"Maximum + tile row index valid for this layer. If not specified it uses the the one + from the referenced tile matrix.\"\n },\n \"min_tile_col\": + {\n \"type\": \"integer\",\n \"description\": \"Minimum + tile column index valid for this layer. If not specified it uses the the one + from the referenced tile matrix.\"\n },\n \"max_tile_col\": + {\n \"type\": \"integer\",\n \"description\": \"Maximum + tile column index valid for this layer. If not specified it uses the the one + from the referenced tile matrix.\"\n }\n }\n },\n \"pixel_buffer\": + {\n \"type\": \"object\",\n \"properties\": {\n \"top\": + {\n \"type\": \"integer\",\n \"description\": \"The size + of the pixel-buffer in the top border of the image. Default is `0`.\",\n \"minimum\": + 0\n },\n \"left\": {\n \"type\": \"integer\",\n \"description\": + \"The size of the pixel-buffer in the left border of the image. Default is + `0`.\",\n \"minimum\": 0\n },\n \"bottom\": {\n \"type\": + \"integer\",\n \"description\": \"The size of the pixel-buffer in + the bottom border of the image. Default is `0`.\",\n \"minimum\": + 0\n },\n \"right\": {\n \"type\": \"integer\",\n \"description\": + \"The size of the pixel-buffer in the right border of the image. Default is + `0`.\",\n \"minimum\": 0\n },\n \"border_top\": {\n + \ \"type\": \"boolean\",\n \"description\": \"Whether or + not the pixelbuffer is included images on the top border of the first tile + row. Default is `true`.\"\n },\n \"border_left\": {\n \"type\": + \"boolean\",\n \"description\": \"Whether or not the pixelbuffer + is included images on the left border of the first tile column. Default is + `true`.\"\n },\n \"border_bottom\": {\n \"type\": \"boolean\",\n + \ \"description\": \"Whether or not the pixelbuffer is included images + on the bottom border of the last tile row. Default is `true`.\"\n },\n + \ \"border_right\": {\n \"type\": \"boolean\",\n \"description\": + \"Whether or not the pixelbuffer is included images on the right border of + the last tile row. Default is `true`.\"\n }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '570' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '7243' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:02 GMT + ETag: + - '"65147dc1-1c4b"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - 011ff20d45449748a58bb5f198795b0d8cafe82b + X-GitHub-Request-Id: + - 1EDE:56AD:23A49C:3213A4:65149AC0 + X-Served-By: + - cache-lga21962-LGA + X-Timer: + - S1695849722.406776,VS0,VE1 + expires: + - Wed, 27 Sep 2023 21:22:32 GMT + x-origin-cache: + - HIT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/catalog-spec/json-schema/catalog.json#\",\n + \ \"title\": \"STAC Catalog Specification\",\n \"description\": \"This object + represents Catalogs in a SpatioTemporal Asset Catalog.\",\n \"allOf\": [\n + \ {\n \"$ref\": \"#/definitions/catalog\"\n }\n ],\n \"definitions\": + {\n \"catalog\": {\n \"title\": \"Catalog\",\n \"type\": \"object\",\n + \ \"required\": [\n \"stac_version\",\n \"id\",\n \"description\",\n + \ \"links\"\n ],\n \"properties\": {\n \"stac_version\": + {\n \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"1.0.0-beta.2\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": \"array\",\n + \ \"uniqueItems\": true,\n \"items\": {\n \"anyOf\": + [\n {\n \"title\": \"Reference to a JSON Schema\",\n + \ \"type\": \"string\",\n \"format\": \"uri\"\n + \ },\n {\n \"title\": \"Reference + to a core extension\",\n \"type\": \"string\"\n }\n + \ ]\n }\n },\n \"id\": {\n \"title\": + \"Identifier\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Title\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Description\",\n \"type\": + \"string\"\n },\n \"links\": {\n \"title\": \"Links\",\n + \ \"type\": \"array\",\n \"items\": {\n \"$ref\": + \"#/definitions/link\"\n }\n }\n }\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '574' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '2126' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:02 GMT + ETag: + - '"65147dc1-84e"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Fastly-Request-ID: + - f3bb121f2b5a81a6f9a06bc236a10caa685b8f77 + X-GitHub-Request-Id: + - B38E:8027:25BC98:33E9C0:6514878E + X-Served-By: + - cache-lga21950-LGA + X-Timer: + - S1695849723.528254,VS0,VE2 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - schemas.stacspec.org + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"https://schemas.stacspec.org/v1.0.0-beta.2/collection-spec/json-schema/collection.json#\",\n + \ \"title\": \"STAC Collection Specification\",\n \"description\": \"This + object represents Collections in a SpatioTemporal Asset Catalog.\",\n \"allOf\": + [\n {\n \"$ref\": \"../../catalog-spec/json-schema/catalog.json\"\n + \ },\n {\n \"$ref\": \"#/definitions/collection\"\n }\n ],\n + \ \"definitions\": {\n \"collection\": {\n \"title\": \"STAC Collection\",\n + \ \"description\": \"These are the fields specific to a STAC Collection. + All other fields are inherited from STAC Catalog.\",\n \"type\": \"object\",\n + \ \"required\": [\n \"license\",\n \"extent\"\n ],\n + \ \"properties\": {\n \"stac_extensions\": {\n \"title\": + \"STAC extensions\",\n \"type\": \"array\",\n \"uniqueItems\": + true,\n \"items\": {\n \"anyOf\": [\n {\n + \ \"title\": \"Reference to a JSON Schema\",\n \"type\": + \"string\",\n \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\"\n }\n ]\n }\n },\n \"keywords\": + {\n \"title\": \"Keywords\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\"\n }\n },\n \"license\": + {\n \"title\": \"Collection License Name\",\n \"type\": + \"string\",\n \"pattern\": \"^[\\\\w\\\\-\\\\.\\\\+]+$\"\n },\n + \ \"providers\": {\n \"type\": \"array\",\n \"items\": + {\n \"properties\": {\n \"name\": {\n \"title\": + \"Organization name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": \"Organization + description\",\n \"type\": \"string\"\n },\n \"roles\": + {\n \"title\": \"Organization roles\",\n \"type\": + \"array\",\n \"items\": {\n \"type\": \"string\",\n + \ \"enum\": [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n ]\n + \ }\n },\n \"url\": {\n \"title\": + \"Organization homepage\",\n \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n },\n \"extent\": + {\n \"title\": \"Extents\",\n \"type\": \"object\",\n \"required\": + [\n \"spatial\",\n \"temporal\"\n ],\n \"properties\": + {\n \"spatial\": {\n \"title\": \"Spatial extent object\",\n + \ \"type\": \"object\",\n \"required\": [\n \"bbox\"\n + \ ],\n \"properties\": {\n \"bbox\": + {\n \"title\": \"Spatial extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Spatial extent\",\n \"type\": + \"array\",\n \"oneOf\": [\n {\n \"minItems\":4,\n + \ \"maxItems\":4\n },\n {\n + \ \"minItems\":6,\n \"maxItems\":6\n + \ }\n ],\n \"items\": + {\n \"type\": \"number\"\n }\n }\n + \ }\n }\n },\n \"temporal\": + {\n \"title\": \"Temporal extent object\",\n \"type\": + \"object\",\n \"required\": [\n \"interval\"\n + \ ],\n \"properties\": {\n \"interval\": + {\n \"title\": \"Temporal extents\",\n \"type\": + \"array\",\n \"minItems\": 1,\n \"items\": + {\n \"title\": \"Temporal extent\",\n \"type\": + \"array\",\n \"minItems\": 2,\n \"maxItems\": + 2,\n \"items\": {\n \"type\": [\n + \ \"string\",\n \"null\"\n ],\n + \ \"format\": \"date-time\"\n }\n }\n + \ }\n }\n }\n }\n },\n + \ \"summaries\": {\n \"type\": \"object\",\n \"additionalProperties\": + {\n \"oneOf\": [\n {\n \"title\": \"Stats\",\n + \ \"type\": \"object\",\n \"required\": [\n \"min\",\n + \ \"max\"\n ],\n \"properties\": + {\n \"min\": {\n \"title\": \"Minimum + value\",\n \"type\": [\"number\", \"string\"]\n },\n + \ \"max\": {\n \"title\": \"Maximum value\",\n + \ \"type\": [\"number\", \"string\"]\n }\n + \ }\n },\n {\n \"title\": + \"Set of values\",\n \"type\": \"array\",\n \"minItems\": + 1,\n \"items\": {\n \"description\": \"Any + data type could occur.\"\n }\n }\n ]\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Age: + - '573' + Cache-Control: + - max-age=600 + Connection: + - close + Content-Length: + - '5346' + Content-Type: + - application/json; charset=utf-8 + Date: + - Wed, 27 Sep 2023 21:22:02 GMT + ETag: + - '"65147dc1-14e2"' + Last-Modified: + - Wed, 27 Sep 2023 19:08:49 GMT + Server: + - GitHub.com + Vary: + - Accept-Encoding + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '2' + X-Fastly-Request-ID: + - 0b3979c0b0fbabc72511f584f967e50583d5db7f + X-GitHub-Request-Id: + - DC8C:6FEB:26F7FB:34E32D:6514878E + X-Served-By: + - cache-lga21947-LGA + X-Timer: + - S1695849723.634202,VS0,VE0 + expires: + - Wed, 27 Sep 2023 20:00:38 GMT + x-proxy-cache: + - MISS + status: + code: 200 + message: OK +version: 1 diff --git a/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example9].yaml b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example9].yaml new file mode 100644 index 000000000..89641a964 --- /dev/null +++ b/tests/validation/cassettes/test_validate/TestValidate.test_validate_examples[example9].yaml @@ -0,0 +1,257 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/item-spec/json-schema/item.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"item.json#\",\n \"title\": \"STAC Item\",\n \"type\": \"object\",\n \"description\": + \"This object represents the metadata for an item in a SpatioTemporal Asset + Catalog.\",\n \"additionalProperties\": true,\n \"allOf\": [\n {\n \"$ref\": + \"#/definitions/core\"\n }\n ],\n \"definitions\": {\n \"core\": {\n + \ \"allOf\": [\n {\n \"$ref\": \"https://geojson.org/schema/Feature.json\"\n + \ },\n {\n \"type\": \"object\",\n \"required\": + [\n \"stac_version\",\n \"id\",\n \"links\",\n + \ \"assets\",\n \"bbox\",\n \"properties\"\n + \ ],\n \"properties\": {\n \"stac_version\": {\n + \ \"title\": \"STAC version\",\n \"type\": \"string\",\n + \ \"const\": \"0.8.1\"\n },\n \"stac_extensions\": + {\n \"title\": \"STAC extensions\",\n \"type\": + \"array\",\n \"uniqueItems\": true,\n \"items\": + {\n \"anyOf\": [\n {\n \"title\": + \"Reference to a JSON Schema\",\n \"type\": \"string\",\n + \ \"format\": \"uri\"\n },\n {\n + \ \"title\": \"Reference to a core extension\",\n \"type\": + \"string\",\n \"enum\": [\n \"checksum\",\n + \ \"cube\",\n \"datetime-range\",\n + \ \"eo\",\n \"label\",\n \"pointcloud\",\n + \ \"sar\",\n \"scientific\"\n ]\n + \ }\n ]\n }\n },\n + \ \"id\": {\n \"title\": \"Provider ID\",\n \"description\": + \"Provider item ID\",\n \"type\": \"string\"\n },\n + \ \"bbox\": {\n \"type\": \"array\",\n \"minItems\": + 4,\n \"items\": {\n \"type\": \"number\"\n }\n + \ },\n \"links\": {\n \"title\": \"Item + links\",\n \"description\": \"Links to item relations\",\n \"type\": + \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/link\"\n + \ }\n },\n \"assets\": {\n \"title\": + \"Asset links\",\n \"description\": \"Links to assets\",\n \"type\": + \"object\",\n \"patternProperties\": {\n \".+\": + {\n \"$ref\": \"#/definitions/asset\"\n }\n + \ },\n \"additionalProperties\": false\n },\n + \ \"properties\": {\n \"type\": \"object\",\n \"required\": + [\n \"datetime\"\n ],\n \"properties\": + {\n \"datetime\": {\n \"title\": \"Date and + Time\",\n \"description\": \"The searchable date/time of + the assets, in UTC (Formatted in RFC 3339) \",\n \"type\": + \"string\",\n \"format\": \"date-time\"\n },\n + \ \"title\": {\n \"title\": \"Item Title\",\n + \ \"description\": \"A human-readable title describing the + item.\",\n \"type\": \"string\"\n },\n \"license\": + {\n \"title\": \"Item Licenses\",\n \"type\": + \"string\"\n },\n \"providers\": {\n \"type\": + \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Organization + name\",\n \"type\": \"string\"\n },\n + \ \"description\": {\n \"title\": + \"Provider description\",\n \"type\": \"string\"\n + \ },\n \"roles\": {\n \"title\": + \"Organization roles\",\n \"type\": \"array\",\n \"items\": + {\n \"type\": \"string\",\n \"enum\": + [\n \"producer\",\n \"licensor\",\n + \ \"processor\",\n \"host\"\n + \ ]\n }\n },\n + \ \"url\": {\n \"title\": \"Homepage\",\n + \ \"type\": \"string\",\n \"format\": + \"url\"\n }\n }\n }\n + \ },\n \"created\": {\n \"title\": + \"Metadata created at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n },\n \"updated\": {\n \"title\": + \"Metadata updated at\",\n \"type\": \"string\",\n \"format\": + \"date-time\"\n }\n }\n },\n \"collection\": + {\n \"title\": \"Collection ID\",\n \"description\": + \"The ID of the STAC Collection this Item references to.\",\n \"type\": + \"string\"\n }\n }\n }\n ]\n },\n \"link\": + {\n \"type\": \"object\",\n \"required\": [\n \"rel\",\n + \ \"href\"\n ],\n \"properties\": {\n \"href\": {\n + \ \"title\": \"Link reference\",\n \"type\": \"string\"\n + \ },\n \"rel\": {\n \"title\": \"Link relation type\",\n + \ \"type\": \"string\"\n },\n \"type\": {\n \"title\": + \"Link type\",\n \"type\": \"string\"\n },\n \"title\": + {\n \"title\": \"Link title\",\n \"type\": \"string\"\n + \ }\n }\n },\n \"asset\": {\n \"type\": \"object\",\n + \ \"required\": [\n \"href\"\n ],\n \"properties\": {\n + \ \"href\": {\n \"title\": \"Asset reference\",\n \"type\": + \"string\"\n },\n \"title\": {\n \"title\": \"Asset + title\",\n \"type\": \"string\"\n },\n \"type\": {\n + \ \"title\": \"Asset type\",\n \"type\": \"string\"\n }\n + \ }\n }\n }\n}\n" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '6074' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:20:57 GMT + ETag: + - '"4e24763d74f0d463b0cb6c63fc099e0b59447c7a049b93ffda4c6eb9eb54ae95"' + Expires: + - Wed, 27 Sep 2023 21:25:57 GMT + Source-Age: + - '2' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - dfa06c25dda433e5b6783b5a182088eb93b957d9 + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 2630:09BA:1F7C:2D49:65149AB0 + X-Served-By: + - cache-lga21972-LGA + X-Timer: + - S1695849658.909523,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - raw.githubusercontent.com + User-Agent: + - Python-urllib/3.11 + method: GET + uri: https://raw.githubusercontent.com/radiantearth/stac-spec/v0.8.1/extensions/eo/json-schema/schema.json + response: + body: + string: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": + \"schema.json#\",\n \"title\": \"EO Extension\",\n \"description\": \"STAC + EO Extension to a STAC Item.\",\n \"allOf\": [\n {\n \"$ref\": \"../../../item-spec/json-schema/item.json#/definitions/core\"\n + \ },\n {\n \"$ref\": \"#/definitions/eo\"\n }\n ],\n \"definitions\": + {\n \"eo\": {\n \"type\": \"object\",\n \"required\": [\n \"properties\"\n + \ ],\n \"properties\": {\n \"properties\": {\n \"type\": + \"object\",\n \"required\": [\n \"eo:gsd\",\n \"eo:platform\",\n + \ \"eo:instrument\",\n \"eo:bands\"\n ],\n \"properties\": + {\n \"eo:gsd\": {\n \"title\": \"Ground Sample Distance\",\n + \ \"type\": \"number\"\n },\n \"eo:platform\": + {\n \"title\": \"Platform\",\n \"type\": \"string\"\n + \ },\n \"eo:constellation\": {\n \"title\": + \"Constellation\",\n \"type\": \"string\"\n },\n \"eo:instrument\": + {\n \"title\": \"Instrument\",\n \"type\": \"string\"\n + \ },\n \"eo:bands\": {\n \"title\": \"Bands\",\n + \ \"type\": \"array\",\n \"items\": {\n \"properties\": + {\n \"name\": {\n \"title\": \"Name of + the band\",\n \"type\": \"string\"\n },\n + \ \"common_name\": {\n \"title\": \"Common + Name of the band\",\n \"type\": \"string\"\n },\n + \ \"gsd\": {\n \"title\": \"Ground Sample + Distance\",\n \"type\": \"number\"\n },\n + \ \"accuracy\": {\n \"title\": \"Accuracy\",\n + \ \"type\": \"number\"\n },\n \"center_wavelength\": + {\n \"title\": \"Center Wavelength\",\n \"type\": + \"number\"\n },\n \"full_width_half_max\": + {\n \"title\": \"Full Width Half Max (FWHM)\",\n \"type\": + \"number\"\n }\n }\n }\n },\n + \ \"eo:epsg\": {\n \"title\": \"EPSG code\",\n \"type\": + [\n \"integer\",\n \"null\"\n ]\n + \ },\n \"eo:cloud_cover\": {\n \"title\": + \"Cloud Cover\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 100\n },\n \"eo:off_nadir\": + {\n \"title\": \"Off Nadir\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n },\n + \ \"eo:azimuth\": {\n \"title\": \"Azimuth\",\n \"type\": + \"number\",\n \"minimum\": 0,\n \"maximum\": 360\n + \ },\n \"eo:sun_azimuth\": {\n \"title\": + \"Sun Azimuth\",\n \"type\": \"number\",\n \"minimum\": + 0,\n \"maximum\": 360\n },\n \"eo:sun_elevation\": + {\n \"title\": \"Sun Elevation\",\n \"type\": \"number\",\n + \ \"minimum\": 0,\n \"maximum\": 90\n }\n + \ }\n }\n }\n }\n }\n}" + headers: + Accept-Ranges: + - bytes + Access-Control-Allow-Origin: + - '*' + Cache-Control: + - max-age=300 + Connection: + - close + Content-Length: + - '3245' + Content-Security-Policy: + - default-src 'none'; style-src 'unsafe-inline'; sandbox + Content-Type: + - text/plain; charset=utf-8 + Cross-Origin-Resource-Policy: + - cross-origin + Date: + - Wed, 27 Sep 2023 21:20:58 GMT + ETag: + - '"c8576d5ea3fcee4039dcddbdcf9e59fed3f3086419a33aa96f18f4617203b76d"' + Expires: + - Wed, 27 Sep 2023 21:25:58 GMT + Source-Age: + - '2' + Strict-Transport-Security: + - max-age=31536000 + Vary: + - Authorization,Accept-Encoding,Origin + Via: + - 1.1 varnish + X-Cache: + - HIT + X-Cache-Hits: + - '1' + X-Content-Type-Options: + - nosniff + X-Fastly-Request-ID: + - 5f7a1cca10647b1c32c15c613e8178a0fdc66faa + X-Frame-Options: + - deny + X-GitHub-Request-Id: + - 6F72:822A:2999:3A71:65149AAF + X-Served-By: + - cache-lga21920-LGA + X-Timer: + - S1695849658.021226,VS0,VE1 + X-XSS-Protection: + - 1; mode=block + status: + code: 200 + message: OK +version: 1