{"id":"79680356-b964-4e79-83ae-1d2afbe519e5","type":"API","name":"Tenerife Open Data Portal API","slug":"tenerife-open-data-portal-api","description":"Access to the Tenerife Open Data Portal API.","free_access_class":"FREE_NO_AUTH","auth_type":"NONE","homepage_url":null,"docs_url":null,"repo_url":"https://datos.tenerife.es/ckan/dataset/46ce21bf-696f-4df5-ab2c-e6640fbe0dad/resource/eb075c33-a26b-4a3a-b9e6-b4b50146d131/download/json_api_swagger.json","status":"ACTIVE","verification_state":"VERIFIED","tags":[],"logo_url":"https://www.google.com/s2/favicons?sz=64&domain=datos.tenerife.es","primary_source_url":"https://datos.tenerife.es/ckan/dataset/46ce21bf-696f-4df5-ab2c-e6640fbe0dad/resource/eb075c33-a26b-4a3a-b9e6-b4b50146d131/download/json_api_swagger.json","extraction_confidence":"0.61","created_at":"2026-06-23T11:01:52.237Z","updated_at":"2026-10-12T20:48:49.057Z","last_verified_at":"2026-10-12T20:13:00.981Z","deprecated_at":null,"ranking_score":55,"last_ranked_at":"2026-10-08T05:36:45.975Z","last_seen_at":null,"last_validated_at":null,"last_uptime_at":null,"search_vector":"'access':6B,18B,79B,89B,101B,162B 'allow':36B 'allows':119B 'an':97B,108B 'analys':64B 'analyses':147B 'and':146B,151B,160B 'api':5A,13B,15B,88A,96B,98B 'applic':62B 'applications':145B 'are':153B 'authent':83B 'authentication':166B 'author':49B 'authority':132B 'avail':43B,75B 'available':126B,158B 'by':127B 'cover':30B 'coverag':67B 'coverage':150B 'covering':113B 'data':3A,11B,23B,28B,57B,86A,94B,106B,111B,140B 'dataset':41B,66B,149B 'datasets':124B 'detail':72B 'detailed':155B 'format':69B 'formats':152B 'free':78B,161B 'govern':54B 'government':137B 'in':156B 'initi':29B 'initiative':112B 'integr':51B 'integration':134B 'into':141B 'is':163B 'island':32B,115B 'it':118B 'local':53B,136B 'made':42B,125B 'maintain':48B 'maintaining':131B 'metadata':76B,159B 'not':154B 'of':116B,121B,135B 'open':2A,10B,22B,27B,85A,93B,105B,110B 'open-data':26B,109B 'or':138B 'parti':61B 'party':144B 'portal':4A,12B,24B,46B,87A,95B,107B,129B 'programmat':17B 'programmatic':100B 'provid':16B,81B 'provided':164B 'providing':99B 'public':39B 'publicly':122B 'publish':40B 'published':123B 'region':56B 'regional':139B 'retriev':37B 'retrieval':120B 's':130B 'specif':65B 'specific':148B 'support':50B 'supporting':133B 'tenerif':1A,9B,21B,34B 'tenerife':84A,92B,104B,117B 'the':91B,103B,114B,128B,157B 'third':60B,143B 'third-parti':59B 'third-party':142B 'to':90B,102B 'without':82B,165B","popularity_score":"0.0000","maintenance_score":"0.5000","institution_id":null,"institution_type":null,"country_code":null,"official_confidence":null,"proof_summary":null,"source_seed_url":null,"is_public_sector":true,"published_at":"2026-06-23T11:01:52.237Z","geographic_scope":"NATIONAL","name_en":null,"description_en":"An API providing programmatic access to the Tenerife Open Data Portal, an open-data initiative covering the island of Tenerife. It allows retrieval of publicly published datasets made available by the portal's maintaining authority, supporting integration of local government or regional data into third-party applications and analyses. Specific dataset coverage and formats are not detailed in the available metadata, and free access is provided without authentication.","native_lang":"en","access_level":"direct","formats":[],"capability_tier":"sample","trust_score":46,"merged_into_entry_id":null,"identity_key":"API|https://datos.tenerife.es/ckan/dataset/46ce21bf-696f-4df5-ab2c-e6640fbe0dad/resource/eb075c33-a26b-4a3a-b9e6-b4b50146d131/download/json_api_swagger.json|tenerife open data portal api","upstream_ref":null,"content_changed_at":null,"title_qualifier":null,"access":{"level":"direct","primary":{"kind":"query","label":"Run verified request","method":"GET","url":"https://datos.tenerife.es/ckan/dataset/46ce21bf-696f-4df5-ab2c-e6640fbe0dad/resource/eb075c33-a26b-4a3a-b9e6-b4b50146d131/download/json_api_swagger.json","source":"probe","runnable":true},"actions":[{"kind":"query","label":"Run verified request","method":"GET","url":"https://datos.tenerife.es/ckan/dataset/46ce21bf-696f-4df5-ab2c-e6640fbe0dad/resource/eb075c33-a26b-4a3a-b9e6-b4b50146d131/download/json_api_swagger.json","source":"probe","runnable":true},{"kind":"query","label":"Devuelve una lista con los conjuntos de datos.","method":"GET","url":"/action/package_list","source":"query_example","runnable":true,"direct":false}],"formats":[]},"maturity":{"entry_id":"79680356-b964-4e79-83ae-1d2afbe519e5","granularity":"entry","granularity_label":"One unit = one catalog entry. A PROXY for the SCOPE.md §4 ladder, which governs source families, not entries: a family with 400 entries moves this reading 400 times as much as a family with one. Never compare or combine with the source_family reading.","level":"profiled","level_index":3,"level_label":"Profiled","meaning":"Schema, dimensions and licence understood","counts_as_coverage":false,"blocked_by":null,"rungs":[{"level":"discovered","level_index":1,"label":"Discovered","meaning":"Source and metadata recorded","evidence":"membership of the named population the ladder is taken over","counts_as_coverage":false,"met":true,"reached":true,"criterion":"TRUE"},{"level":"verified","level_index":2,"label":"Verified","meaning":"Access tested successfully","evidence":"entries.verification_state = 'VERIFIED'","counts_as_coverage":false,"met":true,"reached":true,"criterion":"entries.verification_state = 'VERIFIED'"},{"level":"profiled","level_index":3,"label":"Profiled","meaning":"Schema, dimensions and licence understood","evidence":"a data profile with at least one field (entry_data_profiles.field_count > 0)","counts_as_coverage":false,"met":true,"reached":true,"criterion":"EXISTS (SELECT 1 FROM entry_data_profiles p WHERE p.entry_id = entries.id AND COALESCE(p.field_count, 0) > 0)"},{"level":"executable","level_index":4,"label":"Executable","meaning":"Queries run through Commodity","evidence":"entries.capability_tier = 'live' — today's proxy for \"queryable through us\"","counts_as_coverage":true,"met":false,"reached":false,"criterion":"entries.capability_tier = 'live'"},{"level":"joinable","level_index":5,"label":"Joinable","meaning":"Canonical identifiers and concepts mapped","evidence":"a field link to a canonical identifier whose sampled VALUES match its format","counts_as_coverage":true,"met":false,"reached":false,"criterion":"EXISTS (SELECT 1 FROM entry_field_links efl WHERE efl.entry_id = entries.id AND efl.identifier_id IS NOT NULL AND efl.value_status = 'match')"},{"level":"reproducible","level_index":6,"label":"Reproducible","meaning":"Snapshots and transformation evidence retained","evidence":"at least one retained evidence manifest (migration 078)","counts_as_coverage":true,"met":false,"reached":false,"criterion":"EXISTS (SELECT 1 FROM evidence_manifests em WHERE em.entry_id = entries.id)"},{"level":"guaranteed","level_index":7,"label":"Guaranteed","meaning":"Monitored against an operational reliability target","evidence":"an active reliability target with a named monitor (migration 096)","counts_as_coverage":true,"met":false,"reached":false,"criterion":"EXISTS (SELECT 1 FROM entry_reliability_targets rt WHERE rt.entry_id = entries.id AND rt.is_active = true)"}],"officialness":{"basis":"catalog_inherited","label":"Inherited from the upstream catalog: this item came from a trusted official government catalog, and that provenance — not per-item proof — is the warrant. Its own proof score is below 80 or it matched no registered institution (apps/worker/src/connectors/catalog/qualify-store.ts).","proof_confidence":null,"proven_threshold":80,"institution_id":null,"definition":"CASE WHEN COALESCE(entries.is_public_sector, false) IS NOT TRUE THEN 'not_official' WHEN COALESCE(entries.official_confidence, 0) >= 80 AND entries.institution_id IS NOT NULL THEN 'per_item_proven' ELSE 'catalog_inherited' END"},"source_family":{"key":"datos.tenerife.es","label":"One unit = one source family, approximated by the serving host of the entry's primary source URL (e.g. bdl.stat.gov.pl). A COMPUTED stand-in for the curated families of SCOPE.md §5, which no table holds yet. A family sits at the highest level any of its entries has reached, because a family is integrated to the depth of its deepest working integration. Never compare or combine with the entry reading."},"generated_at":"2026-10-12T22:45:29.043Z"},"api_details":{"id":"ad76aa9c-b663-4924-8e36-55c0bb9b2060","entry_id":"79680356-b964-4e79-83ae-1d2afbe519e5","base_url":null,"openapi_url":"https://datos.tenerife.es/ckan/dataset/46ce21bf-696f-4df5-ab2c-e6640fbe0dad/resource/eb075c33-a26b-4a3a-b9e6-b4b50146d131/download/json_api_swagger.json","graphql_url":null,"api_version":null,"spec_format":"openapi","endpoints_count":13,"endpoints":[{"path":"/action/package_list","method":"GET","description":"Devuelve una lista con los conjuntos de datos."},{"path":"/action/recently_changed_packages_activity_list","method":"GET","description":"Devuelve el flujo de actividad de todos los conjuntos de datos añadidos o modificados recientemente."},{"path":"/action/group_package_show","method":"GET","description":"Devuelve todos los conjuntos de datos que pertenecen a una categoría."},{"path":"/action/package_search","method":"GET","description":"Busca conjuntos de datos que satisfagan un criterio de búsqueda determinado."},{"path":"/action/package_show","method":"GET","description":"Devuelve los metadatos de un conjunto de datos y sus recursos."},{"path":"/action/datastore_search","method":"GET","description":"Consulta avanzada sobre un recurso tabular del portal."},{"path":"/action/resource_show","method":"GET","description":"Devuelve los metadatos de un recurso."},{"path":"/datastore/dump/{id}","method":"GET","description":"Descarga un recurso tabular."},{"path":"/action/group_list","method":"GET","description":"Devuelve todas las categorías."},{"path":"/action/organization_list","method":"GET","description":"Devuelve una lista de los nombres de las organizaciones."},{"path":"/action/organization_show","method":"GET","description":"Devuelve la información de una organización."},{"path":"/action/tag_list","method":"GET","description":"Devuelve una lista con las etiquetas del sitio."},{"path":"/action/tag_show","method":"GET","description":"Devuelve la información de una etiqueta."}],"rate_limit_info":null,"free_tier_limits":null,"ping_url":null,"created_at":"2026-06-23T11:01:52.402Z","updated_at":"2026-06-23T11:01:52.402Z"},"dataset_details":null,"license":null,"reuse":{"license_id":null,"license_name":null,"license_url":null,"commercial_use":{"status":"unknown","value":null},"redistribution":{"status":"unknown","value":null},"attribution_required":{"status":"unknown","value":null},"share_alike":{"status":"unknown","value":null},"personal_data_warning":{"status":"unknown","value":null},"cache_and_mirror":{"status":"unknown","value":null},"undetermined":["commercial_use","redistribution","attribution_required","share_alike","personal_data_warning","cache_and_mirror"],"basis":"unverified","confidence":0.1,"confidence_tier":"low","source_text":null,"source_url":null,"reviewed_at":null},"license_raw":null,"latest_check":{"id":"2dcc622b-8172-4f0d-bab1-356182b34a00","entry_id":"79680356-b964-4e79-83ae-1d2afbe519e5","status":"VERIFIED","last_checked_at":"2026-10-12T20:13:00.639Z","p50_latency_ms":1984,"p95_latency_ms":null,"last_error":null,"consecutive_failures":0,"created_at":"2026-06-23T11:04:08.390Z","updated_at":"2026-10-12T20:13:00.639Z","consecutive_successes":179,"probe_url":"https://datos.tenerife.es/ckan/dataset/46ce21bf-696f-4df5-ab2c-e6640fbe0dad/resource/eb075c33-a26b-4a3a-b9e6-b4b50146d131/download/json_api_swagger.json","probe_method":"GET","probe_http_status":200,"probe_content_type":"application/json","probe_succeeded_at":"2026-10-12T20:13:00.639Z"},"data_profile":{"id":"3b2954e7-db74-4f0c-bf53-97a6ec54917e","entry_id":"79680356-b964-4e79-83ae-1d2afbe519e5","profile_source":"openapi","profile_kind":"dataset","dataset_id":null,"fields":[{"name":"id","role":"parameter","type":"string","label":null,"param_in":"query","required":true,"container":"/action/group_package_show","filterable":true,"description":"Id o nombre de la categoría en minúsculas.","description_en":"Category id or name in lowercase."},{"name":"limit","role":"parameter","type":"integer","label":null,"param_in":"query","container":"/action/group_package_show","filterable":true,"description":"Número máximo de conjuntos de datos que se muestran por categoría (por defecto 10).","description_en":"Maximum number of datasets shown per category (default 10)."},{"name":"q","role":"parameter","type":"string","label":null,"param_in":"query","container":"/action/package_search","filterable":true,"description":"Puede consultar datos utilizando la sintaxis de búsqueda de Solr.","description_en":"Search query using Solr search syntax."},{"name":"rows","role":"parameter","type":"integer","label":null,"param_in":"query","container":"/action/package_search","filterable":true,"description":"Número máximo de filas coincidentes.","description_en":"Maximum number of matching rows to return."},{"name":"start","role":"parameter","type":"integer","label":null,"param_in":"query","container":"/action/package_search","filterable":true,"description":"El desplazamiento en el resultado completo donde debe comenzar el conjunto de conjuntos de datos devueltos.","description_en":"Offset in the result set where the returned set should start."},{"name":"resource_id","role":"parameter","type":"string","label":null,"param_in":"query","required":true,"container":"/action/datastore_search","filterable":true,"description":"Identificador del recurso sobre el que se realiza la consulta.","description_en":"Identifier of the resource being queried."},{"name":"filters","role":"parameter","type":"string","label":null,"param_in":"query","container":"/action/datastore_search","filterable":true,"description":"Condiciones de filtrado en formato clave-valor. Ejemplo: {\"campo\": \"valor\"}.","description_en":"Filter conditions in key-value format, e.g. {\"field\": \"value\"}."},{"name":"fields","role":"parameter","type":"string","label":null,"param_in":"query","container":"/action/datastore_search","filterable":true,"description":"Lista de campos a devolver, separados por comas. Ejemplo: precio_fecha,precio_minimo,precio_maximo.","description_en":"Comma-separated list of fields to return."},{"name":"sort","role":"parameter","type":"string","label":null,"param_in":"query","container":"/action/datastore_search","filterable":true,"description":"Ordenación de los resultados. Ejemplo: campo1, campo2 desc. Ejemplo: precio_fecha asc.","description_en":"Sorting order of results, e.g. field1, field2 desc."},{"name":"include_datasets","role":"parameter","type":"boolean","label":null,"param_in":"query","container":"/action/organization_show","filterable":true,"description":"Incluye una lista de los conjuntos de datos de la organización.","description_en":"Whether to include a list of the organization's datasets."},{"name":"include_dataset_count","role":"parameter","type":"boolean","label":null,"param_in":"query","container":"/action/organization_show","filterable":true,"description":"Incluye el recuento completo del conjunto de datos.","description_en":"Whether to include the total dataset count."},{"name":"query","role":"parameter","type":"string","label":null,"param_in":"query","container":"/action/tag_list","filterable":true,"description":"Un nombre de etiqueta a buscar.","description_en":"Tag name to search for."},{"name":"display_name","type":"string","label":"CkanOrganizationList","description":"Group Name","description_en":"Display name of the group or organization."},{"name":"description","type":"string","label":"CkanOrganizationList","description":"Description of group","description_en":"Description of the group or organization."},{"name":"image_display_url","type":"string","label":"CkanOrganizationList","description":"URL to image of group's display image","description_en":"URL to the group's display image."},{"name":"package_count","type":"integer","label":"CkanOrganizationList","description":null,"description_en":"Number of datasets belonging to the organization."},{"name":"created","type":"string","label":"CkanOrganizationList","description":null,"description_en":"Date the organization or group was created."},{"name":"is_organization","type":"boolean","label":"CkanOrganizationList","description":null,"description_en":"Whether the entity is an organization."},{"name":"state","type":"string","label":"CkanOrganizationList","description":null,"description_en":"Current state of the record, e.g. active or deleted."},{"name":"image_url","type":"string","label":"CkanOrganizationList","description":null,"description_en":"URL of the organization's image."},{"name":"type","type":"string","label":"CkanOrganizationList","description":null,"description_en":"Type of the entity."},{"name":"revision_id","type":"string","label":"CkanOrganizationList","description":null,"description_en":"Identifier of the current revision."},{"name":"num_followers","type":"integer","label":"CkanOrganizationList","description":null,"description_en":"Number of followers of the organization."},{"name":"approval_status","type":"string","label":"CkanOrganizationList","description":null,"description_en":"Approval status of the organization."},{"name":"title","type":"string","label":"CkanOrganizationList","description":"Group display name","description_en":"Display title of the group."},{"name":"name","type":"string","label":"CkanOrganizationList","description":"Group CKAN alias","description_en":"CKAN alias (URL slug) of the group."},{"name":"help","type":"string","label":"CkanBase","required":true,"description":"URL that returns a help string for the API action","description_en":"URL returning help text for the API action."},{"name":"success","type":"boolean","label":"CkanBase","required":true,"description":"Whether fetch is succesfully","description_en":"Whether the API request succeeded."},{"name":"vocabulary_id","type":"string","label":"CkanTagProperty","description":null,"description_en":"Identifier of the vocabulary the tag belongs to."},{"name":"extras","type":"array<string>","label":"CkanOrganizationProperty","description":"lista extras","description_en":"List of extra metadata fields for the organization."},{"name":"groups","type":"array<string>","label":"CkanOrganizationProperty","description":"lista grupos","description_en":"List of groups associated with the organization."},{"name":"tags","type":"array<string>","label":"CkanOrganizationProperty","description":"lista grupos","description_en":"List of tags associated with the organization."},{"name":"topics","type":"array<string>","label":"CkanPackage","description":"Related topics","description_en":"List of topics related to the dataset."},{"name":"frequency","type":"string","label":"CkanPackage","description":"Update frequency","description_en":"Update frequency of the dataset."},{"name":"url","type":"string","label":"CkanPackage","description":"Reference url","description_en":"Reference URL for the dataset."},{"name":"notes","type":"string","label":"CkanPackage","description":"Additional notes","description_en":"Additional notes about the dataset."},{"name":"license_title","type":"string","label":"CkanPackage","description":"License of use","description_en":"Name of the dataset's usage license."},{"name":"num_resources","type":"integer","label":"CkanPackage","description":"Number of resources in dataset","description_en":"Number of resources included in the dataset."},{"name":"resources","type":"array<object>","label":"CkanPackage","description":"List of resources","description_en":"List of resources contained in the dataset."},{"name":"organizations","type":"array<object>","label":"CkanPackage","description":"Related organizations","description_en":"List of organizations related to the dataset."},{"name":"package_id","type":"string","label":"CkanResource","description":"Dataset id","description_en":"Identifier of the dataset the resource belongs to."},{"name":"format","type":"string","label":"CkanResource","description":"Resource format","enum_values":["CSV","PDF","KML","SHP","API"],"description_en":"File format of the resource."},{"name":"coverage_start","type":"string","label":"CkanResource","description":"Coverage start date","description_en":"Start date of the data coverage period."},{"name":"coverage_end","type":"string","label":"CkanResource","description":"Coverage end date","description_en":"End date of the data coverage period."},{"name":"last_modified","type":"string","label":"CkanResource","description":"Date last modified","description_en":"Date the resource was last modified."},{"name":"sub_type","type":"string","label":"CkanField","description":"Field sub type","description_en":"Subtype of the field."},{"name":"coordinate_system","type":"string","label":"CkanField","description":"Coordinate system","description_en":"Coordinate system used for the field's geographic data."}],"field_count":47,"sample_records":null,"record_count":null,"data_size_bytes":null,"dataset_count":null,"query_examples":[{"url":"https://datos.tenerife.es/ckan/dataset/46ce21bf-696f-4df5-ab2c-e6640fbe0dad/resource/eb075c33-a26b-4a3a-b9e6-b4b50146d131/download/json_api_swagger.json","curl":"curl -s 'https://datos.tenerife.es/ckan/dataset/46ce21bf-696f-4df5-ab2c-e6640fbe0dad/resource/eb075c33-a26b-4a3a-b9e6-b4b50146d131/download/json_api_swagger.json' -H 'Accept: application/json'","label":"OpenAPI spec","method":"GET","description":"Machine-readable API description (use it to generate clients)."},{"url":"/action/package_list","curl":"curl -s '/action/package_list' -H 'Accept: application/json'","label":"Devuelve una lista con los conjuntos de datos.","method":"GET","description":"Devuelve una lista con los conjuntos de datos."}],"status":"partial","error_message":null,"profiled_at":"2026-10-12T20:57:15.627Z","run_id":"826aebab-9317-4414-8979-d7e345005085","created_at":"2026-07-13T21:12:58.625Z","updated_at":"2026-10-12T20:57:15.627Z","license_raw":null,"license_id":null,"consecutive_failure_count":0,"last_error_at":null,"last_error_message":null,"previewable":false,"personal_data":{"status":"named_subject_unknown","basis":"name_subject_not_stated","grain":"unknown","allowed":true,"columns":{"direct_identifiers":[],"family_names":[],"given_names":[],"attributes":[],"unresolved_names":["display_name","name"],"measures":["include_dataset_count","package_count","frequency"],"entity_identifiers":[]},"publication":null,"publication_evidence":null,"notice":"personal data: a NAME is cited and the schema does not say whose — display_name, name carries the row's subject in the form that identifies it, and nothing else cited says whether that subject is a person or a thing; permitted under the owner ruling of 2026-08-25 (refusing every name column withholds trees and bus stops and protects nobody) and published as unstated rather than as “no person column”; columns — identifiers: none; names: none; names of an unstated subject: display_name, name; attributes: none; measures: include_dataset_count, package_count, frequency; entity keys: none"}},"datasets":[],"limits":[],"manifest":{"answer_sha256":"84cdf1fa0756e51e8e6f0435a405adffea3b95e18ee22fc4041f502391046893","answer_sha256_rule":"sha256 (hex, UTF-8) of JSON.stringify(this body) after deleting the keys listed in manifest.stamped_keys from manifest, and deleting manifest itself if it is then empty. The hash was computed before the stamp existed, so no field of the stamp is inside it.","stamped_keys":["answer_sha256","answer_sha256_rule","stamped_keys","row_count","row_count_basis","live","live_basis","created_at","created_at_basis","durable_citation"],"row_count":71,"row_count_basis":"Objects that are elements of a JSON array anywhere in this body, excluding manifest. Not a claim about which collection is the answer. Largest single collection: data_profile.fields[] (47 rows).","live":true,"live_basis":"This body was produced by executing the request.","created_at":"2026-10-12T22:45:29.051Z","created_at_basis":"When this response body was assembled, deliberately OUTSIDE the hashed bytes so the same answer hashes identically on every request. Not the upstream read time — that is provenance[].retrieved_at. A zone-cached replay carries the assembly time, not your receipt time.","durable_citation":"This manifest is produced at response time and is NOT stored. A durable, replayable citation is persisted only on an explicit cite: GET /api/v1/entries/{id-or-slug}/evidence, or the MCP cite_query tool. Both are entry-scoped, because evidence_manifests is entry-shaped; a domain answer spanning several sources has no single entry and cannot be persisted through that path."}}