{"openapi":"3.0.3","info":{"title":"Observatorio Open Data Reuse · España — API","description":"API pública para acceder a los datasets, portales y métricas MELODA del Observatorio de Reutilización de Datos Abiertos de España.\n\nTodos los endpoints son de solo lectura (GET). No se requiere autenticación.\n\nLas puntuaciones **MELODA** miden la calidad de reutilización en 6 dimensiones (D1-D6):\n- D1 Licencia (0–3)\n- D2 Acceso (0–3)\n- D3 Formato técnico (0–3)\n- D4 Estandarización (0–4)\n- D5 Geolocalización (0–3)\n- D6 Frecuencia de actualización (0–5)\n\nPuntuación total: 0–49 pts · Niveles: `deficient` · `basic` · `good` · `optimum`","version":"1.0.0","contact":{"email":"info@meloda.org","url":"https://meloda.org"},"license":{"name":"CC BY 4.0","url":"https://creativecommons.org/licenses/by/4.0/"}},"servers":[{"url":"https://spain.meloda.org/api/v1","description":"Producción"}],"tags":[{"name":"datasets","description":"Acceso a los datasets catalogados"},{"name":"portals","description":"Información de los portales monitorizados"},{"name":"stats","description":"Estadísticas y métricas MELODA globales"},{"name":"catalog","description":"Exportación en DCAT-AP 2.1 (JSON-LD)"}],"paths":{"/datasets":{"get":{"tags":["datasets"],"summary":"Listar datasets","description":"Devuelve un listado paginado de datasets del catálogo. Los datos corresponden a la última ejecución de harvest de cada portal.","operationId":"listDatasets","parameters":[{"name":"portal_id","in":"query","required":false,"description":"Filtrar por ID de portal (ej: `barcelona`, `datos_gob_es`)","schema":{"type":"string"}},{"name":"q","in":"query","required":false,"description":"Búsqueda de texto libre en título, descripción y etiquetas","schema":{"type":"string"}},{"name":"format","in":"query","required":false,"description":"Filtrar por formato (ej: `CSV`, `JSON`, `SHP`)","schema":{"type":"string"}},{"name":"license","in":"query","required":false,"description":"Filtrar por ID o título de licencia (ej: `cc-by`, `CC-BY 4.0`)","schema":{"type":"string"}},{"name":"has_geo","in":"query","required":false,"description":"Si `true`, solo datasets con cobertura geográfica detectada","schema":{"type":"boolean"}},{"name":"reusability","in":"query","required":false,"description":"Nivel de reutilización MELODA: `optimum`, `good`, `basic`, `deficient`","schema":{"type":"string"}},{"name":"theme","in":"query","required":false,"description":"Filtrar por categoría temática","schema":{"type":"string"}},{"name":"updated_after","in":"query","required":false,"description":"Datasets modificados después de esta fecha (ISO 8601, ej: `2024-01-01`)","schema":{"type":"string"}},{"name":"meloda_min","in":"query","required":false,"description":"Puntuación MELODA mínima (0–49)","schema":{"type":"integer"}},{"name":"meloda_max","in":"query","required":false,"description":"Puntuación MELODA máxima (0–49)","schema":{"type":"integer"}},{"name":"sort","in":"query","required":false,"description":"Ordenación: `harvested_at` (defecto), `date_modified`, `meloda_score`, `title`","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Número de página (desde 1)","schema":{"type":"integer"}},{"name":"page_size","in":"query","required":false,"description":"Resultados por página (1–100, defecto 50)","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetList"}}}}}}},"/datasets/{id}":{"get":{"tags":["datasets"],"summary":"Detalle de dataset","operationId":"getDataset","parameters":[{"name":"id","in":"path","required":true,"description":"ID interno del dataset","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetDetail"}}}},"404":{"description":"Dataset no encontrado"}}}},"/datasets/{id}/resources":{"get":{"tags":["datasets"],"summary":"Recursos (distribuciones) de un dataset","operationId":"getDatasetResources","parameters":[{"name":"id","in":"path","required":true,"description":"ID interno del dataset","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceList"}}}},"404":{"description":"Dataset no encontrado"}}}},"/portals":{"get":{"tags":["portals"],"summary":"Listar portales","description":"Devuelve todos los portales activos con información del último harvest y métricas MELODA agregadas.","operationId":"listPortals","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortalList"}}}}}}},"/portals/{id}":{"get":{"tags":["portals"],"summary":"Detalle de portal","operationId":"getPortal","parameters":[{"name":"id","in":"path","required":true,"description":"ID del portal (ej: `barcelona`, `datos_gob_es`)","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortalDetail"}}}},"404":{"description":"Portal no encontrado"}}}},"/portals/{id}/datasets":{"get":{"tags":["portals"],"summary":"Datasets de un portal","operationId":"getPortalDatasets","parameters":[{"name":"id","in":"path","required":true,"description":"ID del portal","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Página","schema":{"type":"integer"}},{"name":"page_size","in":"query","required":false,"description":"Resultados por página (1–100)","schema":{"type":"integer"}},{"name":"sort","in":"query","required":false,"description":"Ordenación","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetList"}}}},"404":{"description":"Portal no encontrado"}}}},"/stats":{"get":{"tags":["stats"],"summary":"KPIs globales y distribución MELODA","operationId":"getStats","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Stats"}}}}}}},"/catalog.jsonld":{"get":{"tags":["catalog"],"summary":"Exportar catálogo en DCAT-AP 2.1 (JSON-LD)","description":"Devuelve un subconjunto del catálogo en formato DCAT-AP 2.1 con contexto JSON-LD. Incluye extensión `meloda:` con puntuaciones MELODA.","operationId":"getCatalogJsonLd","parameters":[{"name":"portal_id","in":"query","required":false,"description":"Exportar solo un portal concreto","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Número máximo de datasets a incluir (1–500, defecto 100)","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK (application/ld+json)","content":{"application/ld+json":{"schema":{"type":"object"}}}}}}}},"components":{"schemas":{"DatasetList":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"portal_id":{"type":"string"},"portal_name":{"type":"string"},"source_id":{"type":"string"},"url":{"type":"string","format":"uri"},"title":{"type":"string"},"publisher":{"type":"string","nullable":true},"formats":{"type":"array","items":{"type":"string"}},"num_resources":{"type":"integer"},"license_id":{"type":"string","nullable":true},"license_title":{"type":"string","nullable":true},"has_api":{"type":"boolean"},"has_geo":{"type":"boolean"},"theme":{"type":"string","nullable":true},"tags":{"type":"array","items":{"type":"string"}},"update_frequency":{"type":"string","nullable":true},"metadata_created":{"type":"string","format":"date-time","nullable":true},"metadata_modified":{"type":"string","format":"date-time","nullable":true},"harvested_at":{"type":"string","format":"date-time"},"meloda":{"type":"object","properties":{"total":{"type":"integer","description":"Puntuación total MELODA (0–49)"},"reusability":{"type":"string","enum":["optimum","good","basic","deficient"]},"d1_license":{"type":"integer","description":"D1 Licencia (0–3)"},"d2_access":{"type":"integer","description":"D2 Acceso (0–3)"},"d3_format":{"type":"integer","description":"D3 Formato técnico (0–3)"},"d4_standard":{"type":"integer","description":"D4 Estandarización (0–4)"},"d5_geo":{"type":"integer","description":"D5 Geolocalización (0–3)"},"d6_frequency":{"type":"integer","description":"D6 Frecuencia (0–5)"}},"nullable":true}}}},"meta":{"$ref":"#/components/schemas/PaginationMeta"},"links":{"$ref":"#/components/schemas/PaginationLinks"}}},"DatasetDetail":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"portal_id":{"type":"string"},"portal_name":{"type":"string"},"source_id":{"type":"string"},"url":{"type":"string","format":"uri"},"title":{"type":"string"},"publisher":{"type":"string","nullable":true},"formats":{"type":"array","items":{"type":"string"}},"num_resources":{"type":"integer"},"license_id":{"type":"string","nullable":true},"license_title":{"type":"string","nullable":true},"has_api":{"type":"boolean"},"has_geo":{"type":"boolean"},"theme":{"type":"string","nullable":true},"tags":{"type":"array","items":{"type":"string"}},"update_frequency":{"type":"string","nullable":true},"metadata_created":{"type":"string","format":"date-time","nullable":true},"metadata_modified":{"type":"string","format":"date-time","nullable":true},"harvested_at":{"type":"string","format":"date-time"},"meloda":{"type":"object","properties":{"total":{"type":"integer","description":"Puntuación total MELODA (0–49)"},"reusability":{"type":"string","enum":["optimum","good","basic","deficient"]},"d1_license":{"type":"integer","description":"D1 Licencia (0–3)"},"d2_access":{"type":"integer","description":"D2 Acceso (0–3)"},"d3_format":{"type":"integer","description":"D3 Formato técnico (0–3)"},"d4_standard":{"type":"integer","description":"D4 Estandarización (0–4)"},"d5_geo":{"type":"integer","description":"D5 Geolocalización (0–3)"},"d6_frequency":{"type":"integer","description":"D6 Frecuencia (0–5)"}},"nullable":true},"description":{"type":"string","nullable":true},"author":{"type":"string","nullable":true},"maintainer":{"type":"string","nullable":true},"spatial":{"type":"string","nullable":true}}}}},"ResourceList":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"format":{"type":"string"},"url":{"type":"string","format":"uri"},"mimetype":{"type":"string","nullable":true},"size_bytes":{"type":"integer","nullable":true},"is_geo":{"type":"boolean"},"http_check":{"type":"object","nullable":true}}}},"meta":{"type":"object"}}},"PortalList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Portal"}}}},"PortalDetail":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Portal"}}},"Portal":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"url":{"type":"string","format":"uri"},"type":{"type":"string","enum":["ckan","opendatasoft","socrata","arcgis","datos_gob_es"]},"region":{"type":"string","nullable":true},"last_harvest":{"type":"string","format":"date-time","nullable":true},"status":{"type":"string","nullable":true},"health":{"type":"string","enum":["up","down","degraded"],"nullable":true},"datasets_harvested":{"type":"integer","nullable":true},"meloda":{"type":"object","nullable":true}}},"Stats":{"type":"object","properties":{"data":{"type":"object"}}},"PaginationMeta":{"type":"object","properties":{"total":{"type":"integer"},"page":{"type":"integer"},"page_size":{"type":"integer"},"pages":{"type":"integer"}}},"PaginationLinks":{"type":"object","properties":{"self":{"type":"string"},"next":{"type":"string","nullable":true},"prev":{"type":"string","nullable":true}}}}}}