unesco-data-ai's picture
Deploy v0.2.0 [dev]
74bb86d verified
{
"openapi": "3.0.3",
"info": {
"title": "UNESCO Datahub Explore API",
"version": "v2.1",
"description": "UNESCO Datahub API for accessing datasets, records, and exports from data.unesco.org"
},
"servers": [
{
"url": "https://data.unesco.org/api/explore/v2.1"
}
],
"security": [
{
"apikey": []
}
],
"tags": [
{
"name": "Catalog",
"description": "API to enumerate datasets"
},
{
"name": "Dataset",
"description": "API to work on records"
}
],
"paths": {
"/catalog/datasets": {
"get": {
"summary": "Query catalog datasets",
"operationId": "getDatasets",
"tags": ["Catalog"],
"description": "Retrieve available datasets from UNESCO Datahub.",
"parameters": [
{
"name": "select",
"in": "query",
"description": "Select specific fields or expressions",
"schema": {"type": "string"}
},
{
"name": "where",
"in": "query",
"description": "Filter expression using ODSQL",
"schema": {"type": "string"}
},
{
"name": "order_by",
"in": "query",
"description": "Sort order (e.g., 'modified desc')",
"schema": {"type": "string"}
},
{
"name": "limit",
"in": "query",
"description": "Number of items to return (max 100)",
"schema": {"type": "integer", "default": 10, "maximum": 100}
},
{
"name": "offset",
"in": "query",
"description": "Index of first item to return",
"schema": {"type": "integer", "default": 0}
},
{
"name": "refine",
"in": "query",
"description": "Facet refinement (e.g., 'theme:Education')",
"schema": {"type": "array", "items": {"type": "string"}}
},
{
"name": "lang",
"in": "query",
"description": "Language code",
"schema": {"type": "string", "enum": ["en", "fr", "es", "ar", "ru", "zh"], "default": "en"}
}
],
"responses": {
"200": {
"description": "A list of available datasets",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DatasetsResponse"
}
}
}
}
}
}
},
"/catalog/datasets/{dataset_id}": {
"get": {
"summary": "Get dataset information",
"operationId": "getDataset",
"tags": ["Catalog"],
"description": "Returns detailed information about a specific dataset including metadata and field schema.",
"parameters": [
{
"name": "dataset_id",
"in": "path",
"required": true,
"description": "The dataset identifier",
"schema": {"type": "string"}
},
{
"name": "lang",
"in": "query",
"description": "Language code",
"schema": {"type": "string", "default": "en"}
}
],
"responses": {
"200": {
"description": "Dataset details",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Dataset"
}
}
}
}
}
}
},
"/catalog/datasets/{dataset_id}/records": {
"get": {
"summary": "Query dataset records",
"operationId": "getRecords",
"tags": ["Dataset"],
"description": "Perform a query on dataset records with filtering, sorting, and aggregation.",
"parameters": [
{
"name": "dataset_id",
"in": "path",
"required": true,
"description": "The dataset identifier",
"schema": {"type": "string"}
},
{
"name": "select",
"in": "query",
"description": "Select specific fields (e.g., 'country,year,value')",
"schema": {"type": "string"}
},
{
"name": "where",
"in": "query",
"description": "Filter expression using ODSQL (e.g., \"country = 'France'\")",
"schema": {"type": "string"}
},
{
"name": "group_by",
"in": "query",
"description": "Group by expression for aggregations",
"schema": {"type": "string"}
},
{
"name": "order_by",
"in": "query",
"description": "Sort order (e.g., 'value desc')",
"schema": {"type": "string"}
},
{
"name": "limit",
"in": "query",
"description": "Number of records to return (max 100)",
"schema": {"type": "integer", "default": 10, "maximum": 100}
},
{
"name": "offset",
"in": "query",
"description": "Index of first record to return",
"schema": {"type": "integer", "default": 0}
},
{
"name": "refine",
"in": "query",
"description": "Facet refinement",
"schema": {"type": "array", "items": {"type": "string"}}
}
],
"responses": {
"200": {
"description": "Records response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RecordsResponse"
}
}
}
}
}
}
},
"/catalog/datasets/{dataset_id}/facets": {
"get": {
"summary": "List dataset facets",
"operationId": "getRecordsFacets",
"tags": ["Dataset"],
"description": "Enumerates facet values for records. Useful for guided navigation and filtering.",
"parameters": [
{
"name": "dataset_id",
"in": "path",
"required": true,
"description": "The dataset identifier",
"schema": {"type": "string"}
},
{
"name": "facet",
"in": "query",
"description": "Facet field to enumerate (e.g., 'country', 'year')",
"schema": {"type": "array", "items": {"type": "string"}}
},
{
"name": "where",
"in": "query",
"description": "Filter expression",
"schema": {"type": "string"}
}
],
"responses": {
"200": {
"description": "Facets enumeration",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FacetsResponse"
}
}
}
}
}
}
},
"/catalog/facets": {
"get": {
"summary": "List catalog facets",
"operationId": "get_datasets_facets",
"tags": ["Catalog"],
"description": "Enumerate facet values for datasets (themes, publishers, etc.)",
"parameters": [
{
"name": "facet",
"in": "query",
"description": "Facet field to enumerate (e.g., 'theme', 'publisher')",
"schema": {"type": "array", "items": {"type": "string"}}
}
],
"responses": {
"200": {
"description": "Catalog facets",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FacetsResponse"
}
}
}
}
}
}
},
"/catalog/datasets/{dataset_id}/exports/{format}": {
"get": {
"summary": "Export dataset",
"operationId": "exportRecords",
"tags": ["Dataset"],
"description": "Export a dataset in various formats (csv, json, xlsx, parquet).",
"parameters": [
{
"name": "dataset_id",
"in": "path",
"required": true,
"description": "The dataset identifier",
"schema": {"type": "string"}
},
{
"name": "format",
"in": "path",
"required": true,
"description": "Export format",
"schema": {"type": "string", "enum": ["csv", "json", "xlsx", "parquet", "geojson"]}
},
{
"name": "where",
"in": "query",
"description": "Filter expression",
"schema": {"type": "string"}
},
{
"name": "limit",
"in": "query",
"description": "Number of records to export (-1 for all)",
"schema": {"type": "integer", "default": -1}
}
],
"responses": {
"200": {
"description": "Export file",
"content": {
"application/octet-stream": {
"schema": {"type": "string", "format": "binary"}
}
}
}
}
}
},
"/catalog/datasets/{dataset_id}/records/{record_id}": {
"get": {
"summary": "Get a single record",
"operationId": "getRecord",
"tags": ["Dataset"],
"description": "Reads a single dataset record by its identifier.",
"parameters": [
{
"name": "dataset_id",
"in": "path",
"required": true,
"description": "The dataset identifier",
"schema": {"type": "string"}
},
{
"name": "record_id",
"in": "path",
"required": true,
"description": "The record identifier",
"schema": {"type": "string"}
}
],
"responses": {
"200": {
"description": "Single record",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Record"
}
}
}
}
}
}
}
},
"components": {
"securitySchemes": {
"apikey": {
"type": "apiKey",
"description": "API key for authenticated requests",
"name": "apikey",
"in": "query"
}
},
"schemas": {
"DatasetsResponse": {
"type": "object",
"properties": {
"total_count": {"type": "integer"},
"results": {
"type": "array",
"items": {"$ref": "#/components/schemas/Dataset"}
}
}
},
"Dataset": {
"type": "object",
"properties": {
"dataset_id": {"type": "string"},
"metas": {
"type": "object",
"properties": {
"default": {
"type": "object",
"properties": {
"title": {"type": "string"},
"description": {"type": "string"},
"theme": {"type": "array", "items": {"type": "string"}},
"keyword": {"type": "array", "items": {"type": "string"}},
"publisher": {"type": "string"},
"modified": {"type": "string"},
"records_count": {"type": "integer"}
}
}
}
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"label": {"type": "string"},
"type": {"type": "string"},
"description": {"type": "string"}
}
}
},
"has_records": {"type": "boolean"}
}
},
"RecordsResponse": {
"type": "object",
"properties": {
"total_count": {"type": "integer"},
"results": {
"type": "array",
"items": {"$ref": "#/components/schemas/Record"}
}
}
},
"Record": {
"type": "object",
"properties": {
"_id": {"type": "string"},
"_timestamp": {"type": "string"}
},
"additionalProperties": true
},
"FacetsResponse": {
"type": "object",
"properties": {
"facets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"facets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"value": {"type": "string"},
"count": {"type": "integer"}
}
}
}
}
}
}
}
}
}
}
}