{"openapi": "3.1.0", "info": {"title": "Island Frequency public read-only API", "version": "1.0.0", "description": "Anonymous GET APIs for published content and catalogue metadata. No administration or write operations."}, "servers": [{"url": "https://ccs.tw"}], "paths": {"/api/public/opendata/": {"get": {"operationId": "get_api_public_opendata", "summary": "GET /api/public/opendata/", "security": [], "x-required-scope": null, "parameters": [{"name": "page", "in": "query", "schema": {"type": "integer", "minimum": 1}}, {"name": "page_size", "in": "query", "schema": {"type": "integer", "minimum": 1, "maximum": 100}}, {"name": "q", "in": "query", "schema": {"type": "string", "maxLength": 200}}, {"name": "lang", "in": "query", "schema": {"type": "string", "enum": ["zh-Hant", "en", "ja"]}}, {"name": "theme", "in": "query", "schema": {"type": "string", "enum": ["energy", "environment", "ocean", "boundary", "transport", "hazard", "land", "health", "other"]}}, {"name": "format", "in": "query", "schema": {"type": "string", "enum": ["json", "csv", "xml", "geotiff", "xlsx", "xls", "zip", "geojson", "shp", "kml", "csv_coord", "xml_coord", "wms", "wmts"]}}, {"name": "agency", "in": "query", "schema": {"type": "string"}}, {"name": "platform", "in": "query", "schema": {"type": "string"}}, {"name": "coord_system", "in": "query", "schema": {"type": "string", "enum": ["TWD97", "TWD67", "WGS84", "TWD97/WGS84", "TWD97/TWD67", "latlon_unspecified", "unknown"]}}, {"name": "recommended", "in": "query", "schema": {"type": "boolean"}}, {"name": "link_ok", "in": "query", "schema": {"type": "boolean"}}, {"name": "updated_since", "in": "query", "schema": {"type": ["string", "null"], "format": "date-time"}}, {"name": "If-None-Match", "in": "header", "schema": {"type": "string"}}, {"name": "category", "in": "query", "schema": {"type": "string", "maxLength": 100}}, {"name": "formats", "in": "query", "schema": {"type": "string", "description": "Comma-separated format OR. Mutually exclusive with format."}}, {"name": "map_ready", "in": "query", "schema": {"type": "boolean"}}, {"name": "bbox", "in": "query", "schema": {"type": "string", "description": "WGS84 west,south,east,north; mutually exclusive with point/county."}}, {"name": "point", "in": "query", "schema": {"type": "string", "description": "WGS84 longitude,latitude"}}, {"name": "county", "in": "query", "schema": {"type": "string"}}, {"name": "spatial_mode", "in": "query", "schema": {"enum": ["verified", "include_inferred"]}}, {"name": "spatial_group", "in": "query", "schema": {"enum": ["local", "national", "unknown"]}}], "responses": {"200": {"description": "Successful operation", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OpenDataPage"}}}, "headers": {"ETag": {"schema": {"type": "string"}}, "X-Request-ID": {"schema": {"type": "string", "format": "uuid"}}}}, "400": {"description": "Invalid request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "401": {"description": "Invalid or expired Bearer token", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "403": {"description": "Missing scope, blocked write or forbidden method", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "404": {"description": "Object not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "409": {"description": "Conflict or idempotency mismatch", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "422": {"description": "Field validation failed", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Per-scope rate limit exceeded", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "304": {"description": "Unchanged representation; empty body"}}}}, "/api/public/opendata/{id}/": {"get": {"operationId": "get_api_public_opendata_id", "summary": "GET /api/public/opendata/{id}/", "security": [], "x-required-scope": null, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer", "minimum": 1}}, {"name": "q", "in": "query", "schema": {"type": "string", "maxLength": 200}}, {"name": "lang", "in": "query", "schema": {"type": "string", "enum": ["zh-Hant", "en", "ja"]}}, {"name": "theme", "in": "query", "schema": {"type": "string", "enum": ["energy", "environment", "ocean", "boundary", "transport", "hazard", "land", "health", "other"]}}, {"name": "format", "in": "query", "schema": {"type": "string", "enum": ["json", "csv", "xml", "geotiff", "xlsx", "xls", "zip", "geojson", "shp", "kml", "csv_coord", "xml_coord", "wms", "wmts"]}}, {"name": "agency", "in": "query", "schema": {"type": "string"}}, {"name": "platform", "in": "query", "schema": {"type": "string"}}, {"name": "coord_system", "in": "query", "schema": {"type": "string", "enum": ["TWD97", "TWD67", "WGS84", "TWD97/WGS84", "TWD97/TWD67", "latlon_unspecified", "unknown"]}}, {"name": "recommended", "in": "query", "schema": {"type": "boolean"}}, {"name": "link_ok", "in": "query", "schema": {"type": "boolean"}}, {"name": "updated_since", "in": "query", "schema": {"type": ["string", "null"], "format": "date-time"}}, {"name": "If-None-Match", "in": "header", "schema": {"type": "string"}}], "responses": {"200": {"description": "Successful operation", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OpenDataDataset"}}}, "headers": {"ETag": {"schema": {"type": "string"}}, "X-Request-ID": {"schema": {"type": "string", "format": "uuid"}}}}, "400": {"description": "Invalid request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "401": {"description": "Invalid or expired Bearer token", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "403": {"description": "Missing scope, blocked write or forbidden method", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "404": {"description": "Object not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "409": {"description": "Conflict or idempotency mismatch", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "422": {"description": "Field validation failed", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Per-scope rate limit exceeded", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "304": {"description": "Unchanged representation; empty body"}}}}, "/api/public/opendata/platforms/": {"get": {"operationId": "get_api_public_opendata_platforms", "summary": "GET /api/public/opendata/platforms/", "security": [], "x-required-scope": null, "parameters": [{"name": "q", "in": "query", "schema": {"type": "string", "maxLength": 200}}, {"name": "lang", "in": "query", "schema": {"type": "string", "enum": ["zh-Hant", "en", "ja"]}}, {"name": "theme", "in": "query", "schema": {"type": "string", "enum": ["energy", "environment", "ocean", "boundary", "transport", "hazard", "land", "health", "other"]}}, {"name": "format", "in": "query", "schema": {"type": "string", "enum": ["json", "csv", "xml", "geotiff", "xlsx", "xls", "zip", "geojson", "shp", "kml", "csv_coord", "xml_coord", "wms", "wmts"]}}, {"name": "agency", "in": "query", "schema": {"type": "string"}}, {"name": "platform", "in": "query", "schema": {"type": "string"}}, {"name": "coord_system", "in": "query", "schema": {"type": "string", "enum": ["TWD97", "TWD67", "WGS84", "TWD97/WGS84", "TWD97/TWD67", "latlon_unspecified", "unknown"]}}, {"name": "recommended", "in": "query", "schema": {"type": "boolean"}}, {"name": "link_ok", "in": "query", "schema": {"type": "boolean"}}, {"name": "updated_since", "in": "query", "schema": {"type": ["string", "null"], "format": "date-time"}}, {"name": "If-None-Match", "in": "header", "schema": {"type": "string"}}, {"name": "page", "in": "query", "schema": {"type": "integer", "minimum": 1}}, {"name": "page_size", "in": "query", "schema": {"type": "integer", "minimum": 1, "maximum": 100}}], "responses": {"200": {"description": "Successful operation", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OpenDataPlatformPage"}}}, "headers": {"ETag": {"schema": {"type": "string"}}, "X-Request-ID": {"schema": {"type": "string", "format": "uuid"}}}}, "400": {"description": "Invalid request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "401": {"description": "Invalid or expired Bearer token", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "403": {"description": "Missing scope, blocked write or forbidden method", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "404": {"description": "Object not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "409": {"description": "Conflict or idempotency mismatch", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "422": {"description": "Field validation failed", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Per-scope rate limit exceeded", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "304": {"description": "Unchanged representation; empty body"}}}}, "/api/public/opendata/layers/": {"get": {"operationId": "get_api_public_opendata_layers", "summary": "GET /api/public/opendata/layers/", "security": [], "x-required-scope": null, "parameters": [{"name": "q", "in": "query", "schema": {"type": "string", "maxLength": 200}}, {"name": "lang", "in": "query", "schema": {"type": "string", "enum": ["zh-Hant", "en", "ja"]}}, {"name": "theme", "in": "query", "schema": {"type": "string", "enum": ["energy", "environment", "ocean", "boundary", "transport", "hazard", "land", "health", "other"]}}, {"name": "format", "in": "query", "schema": {"type": "string", "enum": ["json", "csv", "xml", "geotiff", "xlsx", "xls", "zip", "geojson", "shp", "kml", "csv_coord", "xml_coord", "wms", "wmts"]}}, {"name": "agency", "in": "query", "schema": {"type": "string"}}, {"name": "platform", "in": "query", "schema": {"type": "string"}}, {"name": "coord_system", "in": "query", "schema": {"type": "string", "enum": ["TWD97", "TWD67", "WGS84", "TWD97/WGS84", "TWD97/TWD67", "latlon_unspecified", "unknown"]}}, {"name": "recommended", "in": "query", "schema": {"type": "boolean"}}, {"name": "link_ok", "in": "query", "schema": {"type": "boolean"}}, {"name": "updated_since", "in": "query", "schema": {"type": ["string", "null"], "format": "date-time"}}, {"name": "If-None-Match", "in": "header", "schema": {"type": "string"}}], "responses": {"200": {"description": "Successful operation", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OpenDataLayers"}}}, "headers": {"ETag": {"schema": {"type": "string"}}, "X-Request-ID": {"schema": {"type": "string", "format": "uuid"}}}}, "400": {"description": "Invalid request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "401": {"description": "Invalid or expired Bearer token", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "403": {"description": "Missing scope, blocked write or forbidden method", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "404": {"description": "Object not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "409": {"description": "Conflict or idempotency mismatch", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "422": {"description": "Field validation failed", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Per-scope rate limit exceeded", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "304": {"description": "Unchanged representation; empty body"}}, "description": "Curated enabled map layers. Public HTTPS WMTS only; no credentials or remote proxy. Observe provider terms. Versioned layers URL state is a frontend convention."}}, "/api/public/opendata/facets/": {"get": {"operationId": "get_api_public_opendata_facets", "summary": "GET /api/public/opendata/facets/", "security": [], "x-required-scope": null, "parameters": [{"name": "q", "in": "query", "schema": {"type": "string", "maxLength": 200}}, {"name": "lang", "in": "query", "schema": {"type": "string", "enum": ["zh-Hant", "en", "ja"]}}, {"name": "theme", "in": "query", "schema": {"type": "string", "enum": ["energy", "environment", "ocean", "boundary", "transport", "hazard", "land", "health", "other"]}}, {"name": "format", "in": "query", "schema": {"type": "string", "enum": ["json", "csv", "xml", "geotiff", "xlsx", "xls", "zip", "geojson", "shp", "kml", "csv_coord", "xml_coord", "wms", "wmts"]}}, {"name": "agency", "in": "query", "schema": {"type": "string"}}, {"name": "platform", "in": "query", "schema": {"type": "string"}}, {"name": "coord_system", "in": "query", "schema": {"type": "string", "enum": ["TWD97", "TWD67", "WGS84", "TWD97/WGS84", "TWD97/TWD67", "latlon_unspecified", "unknown"]}}, {"name": "recommended", "in": "query", "schema": {"type": "boolean"}}, {"name": "link_ok", "in": "query", "schema": {"type": "boolean"}}, {"name": "updated_since", "in": "query", "schema": {"type": ["string", "null"], "format": "date-time"}}, {"name": "If-None-Match", "in": "header", "schema": {"type": "string"}}, {"name": "category", "in": "query", "schema": {"type": "string", "maxLength": 100}}, {"name": "formats", "in": "query", "schema": {"type": "string", "description": "Comma-separated format OR. Mutually exclusive with format."}}, {"name": "map_ready", "in": "query", "schema": {"type": "boolean"}}, {"name": "bbox", "in": "query", "schema": {"type": "string", "description": "WGS84 west,south,east,north; mutually exclusive with point/county."}}, {"name": "point", "in": "query", "schema": {"type": "string", "description": "WGS84 longitude,latitude"}}, {"name": "county", "in": "query", "schema": {"type": "string"}}, {"name": "spatial_mode", "in": "query", "schema": {"enum": ["verified", "include_inferred"]}}, {"name": "spatial_group", "in": "query", "schema": {"enum": ["local", "national", "unknown"]}}], "responses": {"200": {"description": "Successful operation", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OpenDataFacets"}}}, "headers": {"ETag": {"schema": {"type": "string"}}, "X-Request-ID": {"schema": {"type": "string", "format": "uuid"}}}}, "400": {"description": "Invalid request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "401": {"description": "Invalid or expired Bearer token", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "403": {"description": "Missing scope, blocked write or forbidden method", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "404": {"description": "Object not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "409": {"description": "Conflict or idempotency mismatch", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "422": {"description": "Field validation failed", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Per-scope rate limit exceeded", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "304": {"description": "Unchanged representation; empty body"}}}}, "/api/public/opendata/records/": {"get": {"operationId": "get_api_public_opendata_records", "summary": "GET /api/public/opendata/records/", "security": [], "x-required-scope": null, "parameters": [{"name": "q", "in": "query", "schema": {"type": "string"}}, {"name": "lang", "in": "query", "schema": {"type": "string", "enum": ["zh-Hant", "en", "ja"]}}, {"name": "bbox", "in": "query", "schema": {"type": "string"}}, {"name": "datetime", "in": "query", "schema": {"type": "string"}}, {"name": "limit", "in": "query", "schema": {"type": "integer", "minimum": 1, "maximum": 100}}, {"name": "offset", "in": "query", "schema": {"type": "integer", "minimum": 0}}, {"name": "f", "in": "query", "schema": {"type": "string", "enum": ["json", "html"]}}], "responses": {"200": {"description": "Successful operation", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Object"}}}, "headers": {"ETag": {"schema": {"type": "string"}}, "X-Request-ID": {"schema": {"type": "string", "format": "uuid"}}}}, "400": {"description": "Invalid request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "401": {"description": "Invalid or expired Bearer token", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "403": {"description": "Missing scope, blocked write or forbidden method", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "404": {"description": "Object not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "409": {"description": "Conflict or idempotency mismatch", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "422": {"description": "Field validation failed", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Per-scope rate limit exceeded", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "304": {"description": "Unchanged representation; empty body"}}}}, "/api/public/opendata/records/conformance/": {"get": {"operationId": "get_api_public_opendata_records_conformance", "summary": "GET /api/public/opendata/records/conformance/", "security": [], "x-required-scope": null, "parameters": [{"name": "q", "in": "query", "schema": {"type": "string"}}, {"name": "lang", "in": "query", "schema": {"type": "string", "enum": ["zh-Hant", "en", "ja"]}}, {"name": "bbox", "in": "query", "schema": {"type": "string"}}, {"name": "datetime", "in": "query", "schema": {"type": "string"}}, {"name": "limit", "in": "query", "schema": {"type": "integer", "minimum": 1, "maximum": 100}}, {"name": "offset", "in": "query", "schema": {"type": "integer", "minimum": 0}}, {"name": "f", "in": "query", "schema": {"type": "string", "enum": ["json", "html"]}}], "responses": {"200": {"description": "Successful operation", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Object"}}}, "headers": {"ETag": {"schema": {"type": "string"}}, "X-Request-ID": {"schema": {"type": "string", "format": "uuid"}}}}, "400": {"description": "Invalid request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "401": {"description": "Invalid or expired Bearer token", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "403": {"description": "Missing scope, blocked write or forbidden method", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "404": {"description": "Object not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "409": {"description": "Conflict or idempotency mismatch", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "422": {"description": "Field validation failed", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Per-scope rate limit exceeded", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "304": {"description": "Unchanged representation; empty body"}}}}, "/api/public/opendata/records/collections/": {"get": {"operationId": "get_api_public_opendata_records_collections", "summary": "GET /api/public/opendata/records/collections/", "security": [], "x-required-scope": null, "parameters": [{"name": "q", "in": "query", "schema": {"type": "string"}}, {"name": "lang", "in": "query", "schema": {"type": "string", "enum": ["zh-Hant", "en", "ja"]}}, {"name": "bbox", "in": "query", "schema": {"type": "string"}}, {"name": "datetime", "in": "query", "schema": {"type": "string"}}, {"name": "limit", "in": "query", "schema": {"type": "integer", "minimum": 1, "maximum": 100}}, {"name": "offset", "in": "query", "schema": {"type": "integer", "minimum": 0}}, {"name": "f", "in": "query", "schema": {"type": "string", "enum": ["json", "html"]}}], "responses": {"200": {"description": "Successful operation", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Object"}}}, "headers": {"ETag": {"schema": {"type": "string"}}, "X-Request-ID": {"schema": {"type": "string", "format": "uuid"}}}}, "400": {"description": "Invalid request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "401": {"description": "Invalid or expired Bearer token", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "403": {"description": "Missing scope, blocked write or forbidden method", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "404": {"description": "Object not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "409": {"description": "Conflict or idempotency mismatch", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "422": {"description": "Field validation failed", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Per-scope rate limit exceeded", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "304": {"description": "Unchanged representation; empty body"}}}}, "/api/public/opendata/records/collections/{collection_id}/": {"get": {"operationId": "get_api_public_opendata_records_collections_collection_id", "summary": "GET /api/public/opendata/records/collections/{collection_id}/", "security": [], "x-required-scope": null, "parameters": [{"name": "collection_id", "in": "path", "required": true, "schema": {"type": "string"}}, {"name": "q", "in": "query", "schema": {"type": "string"}}, {"name": "lang", "in": "query", "schema": {"type": "string", "enum": ["zh-Hant", "en", "ja"]}}, {"name": "bbox", "in": "query", "schema": {"type": "string"}}, {"name": "datetime", "in": "query", "schema": {"type": "string"}}, {"name": "limit", "in": "query", "schema": {"type": "integer", "minimum": 1, "maximum": 100}}, {"name": "offset", "in": "query", "schema": {"type": "integer", "minimum": 0}}, {"name": "f", "in": "query", "schema": {"type": "string", "enum": ["json", "html"]}}], "responses": {"200": {"description": "Successful operation", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Object"}}}, "headers": {"ETag": {"schema": {"type": "string"}}, "X-Request-ID": {"schema": {"type": "string", "format": "uuid"}}}}, "400": {"description": "Invalid request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "401": {"description": "Invalid or expired Bearer token", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "403": {"description": "Missing scope, blocked write or forbidden method", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "404": {"description": "Object not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "409": {"description": "Conflict or idempotency mismatch", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "422": {"description": "Field validation failed", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Per-scope rate limit exceeded", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "304": {"description": "Unchanged representation; empty body"}}}}, "/api/public/opendata/records/collections/{collection_id}/items/": {"get": {"operationId": "get_api_public_opendata_records_collections_collection_id_items", "summary": "GET /api/public/opendata/records/collections/{collection_id}/items/", "security": [], "x-required-scope": null, "parameters": [{"name": "collection_id", "in": "path", "required": true, "schema": {"type": "string"}}, {"name": "q", "in": "query", "schema": {"type": "string"}}, {"name": "lang", "in": "query", "schema": {"type": "string", "enum": ["zh-Hant", "en", "ja"]}}, {"name": "bbox", "in": "query", "schema": {"type": "string"}}, {"name": "datetime", "in": "query", "schema": {"type": "string"}}, {"name": "limit", "in": "query", "schema": {"type": "integer", "minimum": 1, "maximum": 100}}, {"name": "offset", "in": "query", "schema": {"type": "integer", "minimum": 0}}, {"name": "f", "in": "query", "schema": {"type": "string", "enum": ["json", "html"]}}, {"name": "category", "in": "query", "schema": {"type": "string", "maxLength": 100}}, {"name": "formats", "in": "query", "schema": {"type": "string", "description": "Comma-separated format OR. Mutually exclusive with format."}}, {"name": "map_ready", "in": "query", "schema": {"type": "boolean"}}, {"name": "point", "in": "query", "schema": {"type": "string", "description": "WGS84 longitude,latitude"}}, {"name": "county", "in": "query", "schema": {"type": "string"}}, {"name": "spatial_mode", "in": "query", "schema": {"enum": ["verified", "include_inferred"]}}, {"name": "spatial_group", "in": "query", "schema": {"enum": ["local", "national", "unknown"]}}], "responses": {"200": {"description": "Successful operation", "content": {"application/geo+json": {"schema": {"$ref": "#/components/schemas/OpenDataRecordPage"}}}, "headers": {"ETag": {"schema": {"type": "string"}}, "X-Request-ID": {"schema": {"type": "string", "format": "uuid"}}}}, "400": {"description": "Invalid request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "401": {"description": "Invalid or expired Bearer token", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "403": {"description": "Missing scope, blocked write or forbidden method", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "404": {"description": "Object not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "409": {"description": "Conflict or idempotency mismatch", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "422": {"description": "Field validation failed", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Per-scope rate limit exceeded", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "304": {"description": "Unchanged representation; empty body"}}}}, "/api/public/opendata/records/collections/{collection_id}/items/{id}/": {"get": {"operationId": "get_api_public_opendata_records_collections_collection_id_items_id", "summary": "GET /api/public/opendata/records/collections/{collection_id}/items/{id}/", "security": [], "x-required-scope": null, "parameters": [{"name": "collection_id", "in": "path", "required": true, "schema": {"type": "string"}}, {"name": "id", "in": "path", "required": true, "schema": {"type": "integer", "minimum": 1}}, {"name": "q", "in": "query", "schema": {"type": "string"}}, {"name": "lang", "in": "query", "schema": {"type": "string", "enum": ["zh-Hant", "en", "ja"]}}, {"name": "bbox", "in": "query", "schema": {"type": "string"}}, {"name": "datetime", "in": "query", "schema": {"type": "string"}}, {"name": "limit", "in": "query", "schema": {"type": "integer", "minimum": 1, "maximum": 100}}, {"name": "offset", "in": "query", "schema": {"type": "integer", "minimum": 0}}, {"name": "f", "in": "query", "schema": {"type": "string", "enum": ["json", "html"]}}], "responses": {"200": {"description": "Successful operation", "content": {"application/geo+json": {"schema": {"$ref": "#/components/schemas/OpenDataRecord"}}}, "headers": {"ETag": {"schema": {"type": "string"}}, "X-Request-ID": {"schema": {"type": "string", "format": "uuid"}}}}, "400": {"description": "Invalid request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "401": {"description": "Invalid or expired Bearer token", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "403": {"description": "Missing scope, blocked write or forbidden method", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "404": {"description": "Object not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "409": {"description": "Conflict or idempotency mismatch", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "422": {"description": "Field validation failed", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Per-scope rate limit exceeded", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "304": {"description": "Unchanged representation; empty body"}}}}, "/api/public/opendata/{id}/resource/": {"get": {"operationId": "get_api_public_opendata_id_resource", "summary": "GET /api/public/opendata/{id}/resource/", "security": [], "x-required-scope": null, "parameters": [{"name": "id", "in": "path", "required": true, "schema": {"type": "integer", "minimum": 1}}], "responses": {"200": {"description": "Successful operation", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GovernmentResource"}}}, "headers": {"ETag": {"schema": {"type": "string"}}, "X-Request-ID": {"schema": {"type": "string", "format": "uuid"}}}}, "400": {"description": "Invalid request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "401": {"description": "Invalid or expired Bearer token", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "403": {"description": "Missing scope, blocked write or forbidden method", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "404": {"description": "Object not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "409": {"description": "Conflict or idempotency mismatch", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "422": {"description": "Field validation failed", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "429": {"description": "Per-scope rate limit exceeded", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}, "304": {"description": "Unchanged representation; empty body"}}}}, "/api/public/articles/": {"get": {"summary": "Published article discovery", "security": [], "parameters": [{"name": "lang", "in": "query", "schema": {"type": "string", "enum": ["zh-Hant", "en", "ja"]}}, {"name": "q", "in": "query", "schema": {"type": "string"}}, {"name": "type", "in": "query", "schema": {"enum": ["note", "news"]}}, {"name": "topic", "in": "query", "schema": {"type": "string"}}, {"name": "updated_since", "in": "query", "schema": {"type": ["string", "null"], "format": "date-time"}}, {"name": "page", "in": "query", "schema": {"type": "integer", "minimum": 1}}, {"name": "page_size", "in": "query", "schema": {"type": "integer", "maximum": 100, "minimum": 1}}], "responses": {"200": {"description": "Published content only; missing translations explicitly fall back to the source language.", "content": {"application/json": {"schema": {"type": "object"}}}}}}}, "/api/public/articles/{slug}/": {"get": {"summary": "Published article discovery", "security": [], "parameters": [{"name": "lang", "in": "query", "schema": {"type": "string", "enum": ["zh-Hant", "en", "ja"]}}, {"name": "slug", "in": "path", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"description": "Published content only; missing translations explicitly fall back to the source language.", "content": {"application/json": {"schema": {"type": "object"}}}}}}}}, "components": {"schemas": {"Error": {"type": "object", "properties": {"error": {"type": "object", "properties": {"code": {"type": "string"}, "message": {"type": "string"}, "fields": {"type": "object", "properties": {}, "additionalProperties": true}, "request_id": {"type": "string", "format": "uuid"}, "current": {"type": "object", "properties": {}, "additionalProperties": true}}, "additionalProperties": true, "required": ["code", "message", "fields", "request_id"]}}, "additionalProperties": true, "required": ["error"]}, "GovernmentResource": {"type": "object", "properties": {"dataset_id": {"type": "integer", "minimum": 1}, "status": {"enum": ["fresh", "stale", "unavailable"]}, "data": {"type": ["object", "array", "null"]}, "fetched_at": {"type": ["string", "null"], "format": "date-time"}, "stale": {"type": "boolean"}, "source_unavailable": {"type": "boolean"}, "source": {"type": "object", "properties": {"agency": {"type": "string"}, "url": {"type": "string"}, "license_url": {"type": "string"}}, "additionalProperties": true}}, "additionalProperties": true}, "Object": {"type": "object", "properties": {"etag": {"type": "string"}, "updated_at": {"type": ["string", "null"], "format": "date-time"}}, "additionalProperties": true}, "OpenDataDataset": {"type": "object", "properties": {"name": {"type": "string"}, "description": {"type": "string"}, "agency": {"type": "string"}, "coord_system": {"type": "string"}, "category": {"type": "string", "description": "Original publisher category. Use topics[].slug for category query filtering."}, "update_freq": {"type": "string"}, "dataset_url": {"type": "string"}, "external_id": {"type": "string"}, "link_status": {"type": "string"}, "url": {"type": "string"}, "created_at": {"type": "string"}, "updated_at": {"type": "string"}, "id": {"type": "integer"}, "themes": {"type": "array", "items": {"type": "string"}}, "formats": {"type": "array", "items": {"type": "string"}}, "source_platform": {"$ref": "#/components/schemas/OpenDataPlatform"}, "download_url": {"type": ["string", "null"]}, "license_name": {"type": ["string", "null"]}, "license_url": {"type": ["string", "null"]}, "recommended": {"type": "boolean"}, "recommended_order": {"type": "integer"}, "translation_fallback": {"type": "boolean"}, "http_status": {"type": ["integer", "null"]}, "last_checked": {"type": ["string", "null"], "format": "date-time"}, "bbox": {"type": ["array", "null"], "minItems": 4, "maxItems": 4, "items": {"type": "number"}}, "spatial_coverage": {"type": ["string", "null"]}, "spatial_inferred": {"type": "boolean"}, "bbox_source": {"type": ["string", "null"]}, "cors_ok": {"type": ["boolean", "null"]}, "resource_bytes": {"type": ["integer", "null"], "minimum": 0}, "source_modified_at": {"type": ["string", "null"], "format": "date-time"}, "source_formats": {"type": "string"}, "resource_metadata": {"type": "object"}, "topics": {"type": "array", "items": {"type": "object", "properties": {"slug": {"type": "string"}, "name": {"type": "string"}, "reviewed": {"type": "boolean"}}}}}}, "OpenDataFacets": {"type": "object", "properties": {"topics": {"type": "array", "items": {"$ref": "#/components/schemas/OpenDataTopic"}}, "unclassified": {"type": "integer", "minimum": 0}, "format_counts": {"type": "object", "additionalProperties": {"type": "integer", "minimum": 0}}, "map_ready_available": {"type": "boolean"}, "counties": {"type": "array", "items": {"type": "object", "properties": {"code": {"type": "string"}, "name": {"type": "string"}, "original_name": {"type": "string"}}}}, "spatial_summary": {"type": "object", "properties": {"total": {"type": "integer", "minimum": 0}, "unknown": {"type": "integer", "minimum": 0}, "national_candidates": {"type": "integer", "minimum": 0}, "provided_extent": {"type": "integer", "minimum": 0}, "inferred_extent": {"type": "integer", "minimum": 0}, "mode": {"enum": ["verified", "include_inferred"]}, "group": {"enum": ["local", "national", "unknown"]}, "bbox": {"type": ["array", "null"], "items": {"type": "number"}}, "county_uses_envelope": {"type": "boolean"}}}}}, "OpenDataLayer": {"type": "object", "required": ["id", "name", "kind", "url", "verified_2d", "verified_3d", "checked_at"], "properties": {"id": {"type": "string"}, "name": {"type": "string"}, "kind": {"enum": ["base", "overlay"]}, "group": {"type": "string"}, "protocol": {"enum": ["wmts", "xyz"]}, "url": {"type": "string", "format": "uri", "description": "Approved public tile template; no credentials. Direct provider requests only."}, "min_zoom": {"type": "integer", "minimum": 0}, "max_zoom": {"type": "integer", "minimum": 0}, "tile_size": {"const": 256}, "crs": {"const": "EPSG:3857"}, "matrix_set": {"const": "GoogleMapsCompatible"}, "extent": {"type": "array", "items": {"type": "number"}, "description": "Navigation envelope only; not a measured feature footprint."}, "attribution": {"type": "string"}, "source_url": {"type": "string", "format": "uri"}, "license_url": {"type": "string", "format": "uri"}, "verified_2d": {"type": "boolean"}, "verified_3d": {"type": "boolean"}, "checked_at": {"type": "string", "format": "date-time"}, "revision": {"type": "integer", "minimum": 0}, "dataset_id": {"type": ["integer", "null"]}}}, "OpenDataLayers": {"type": "object", "properties": {"version": {"const": 1}, "max_overlays": {"const": 5}, "results": {"type": "array", "items": {"$ref": "#/components/schemas/OpenDataLayer"}}}}, "OpenDataPage": {"type": "object", "properties": {"results": {"type": "array", "items": {"$ref": "#/components/schemas/OpenDataDataset"}}, "page": {"type": "integer", "minimum": 1}, "page_size": {"type": "integer", "minimum": 1, "maximum": 100}, "total": {"type": "integer"}, "next_page": {"type": ["integer", "null"]}}}, "OpenDataPlatform": {"type": "object", "properties": {"slug": {"type": "string"}, "name": {"type": "string"}, "agency": {"type": "string"}, "url": {"type": "string"}, "region": {"type": "string"}, "description": {"type": "string"}, "formats": {"type": "string"}, "has_api": {"type": "string"}, "student_friendliness": {"type": "string"}, "link_status": {"type": "string"}, "id": {"type": "integer"}, "themes": {"type": "array", "items": {"type": "string"}}, "license_name": {"type": ["string", "null"]}, "license_url": {"type": ["string", "null"]}, "translation_fallback": {"type": "boolean"}}}, "OpenDataPlatformPage": {"type": "object", "properties": {"results": {"type": "array", "items": {"$ref": "#/components/schemas/OpenDataPlatform"}}, "page": {"type": "integer", "minimum": 1}, "page_size": {"type": "integer", "minimum": 1, "maximum": 100}, "total": {"type": "integer"}, "next_page": {"type": ["integer", "null"]}}}, "OpenDataRecord": {"type": "object", "required": ["type", "id", "geometry", "properties", "links"], "properties": {"type": {"const": "Feature"}, "id": {"type": "string"}, "geometry": {"type": ["object", "null"]}, "properties": {"type": "object"}, "links": {"type": "array", "items": {"type": "object"}}}}, "OpenDataRecordPage": {"type": "object", "properties": {"type": {"const": "FeatureCollection"}, "features": {"type": "array", "items": {"$ref": "#/components/schemas/OpenDataRecord"}}, "numberMatched": {"type": "integer"}, "numberReturned": {"type": "integer"}, "links": {"type": "array", "items": {"type": "object"}}}}, "OpenDataTopic": {"type": "object", "properties": {"id": {"type": "integer"}, "slug": {"type": "string"}, "name": {"type": "string"}, "parent_id": {"type": ["integer", "null"]}, "count": {"type": "integer", "minimum": 0}, "order": {"type": "integer", "minimum": 0}}}}}}