
L'Idescat exposa part de les seves dades a través d'una col·lecció d'APIs de tipus REST (RESTful Web Services). Les APIs de l'Idescat ofereixen mètodes perquè els programes de tercers puguin obtenir informació de l'Institut d'Estadística de Catalunya i integrar-la en altres serveis. La utilització de qualsevol de les APIs de l'Idescat comporta l'acceptació de les condicions d'ús del servei.
| URI base | http://api.idescat.cat/{servei}/v{versió principal}/{operació}.{format}[?paràmetres] |
|---|---|
| Mètode HTTP | GET |
| Formats de la resposta | xml, json, php |
| Versió | 1.00 (14.12.2009) |
| Dreceres | Petició, Resposta |
Tota petició ha d'especificar obligatòriament un servei, la versió principal del servei, una operació vàlida per aquest servei i un format de resposta. Opcionalment, es poden especificar un seguit de paràmetres generals i específics del servei.
http://api.idescat.cat/{servei}/v{versió principal}/{operació}.{format}[?paràmetres]
Alguns serveis poden compartir la sintaxi de les peticions i l'estructura de les respostes. Aquests són tractats com un únic servei que disposa de subserveis. En aquest cas, la forma de la petició és:
http://api.idescat.cat/{servei}/v{versió principal}/{subservei}/{operació}.{format}[?paràmetres]
Tot i que aquesta és la forma en la qual internament són tractades totes les peticions, les APIs també solen admetre una sintaxi externa més amigable que no requereix especificar una operació (vegeu Invocació sense operació).
Cada servei disposa d'un identificador, d'una versió i d'uns paràmetres específics. Per exemple, el servei d'Indicadors al dia s'identifica amb el valor indicadors i només disposa d'una versió (1).
http://api.idescat.cat/indicadors/v1/{…}
Els serveis poden tenir diferents versions principals, incompatibles entre elles. Les millores incrementals no afecten la versió principal (per exemple, 1.01 respecte a 1.00) i, per tant, tampoc la petició.
Els serveis solen suportar una diversitat d'operacions. Per exemple, el servei indicadors admet l'operació dades, que retorna resultats estadístics, però també l'operació nodes.
http://api.idescat.cat/indicadors/v1/dades.{…}
http://api.idescat.cat/indicadors/v1/nodes.{…}
El servei i l'operació determinen l'estructura del document retornat.
Determina el format de la resposta. Admet tres valors amb caràcter general:
http://api.idescat.cat/indicadors/v1/dades.xml http://api.idescat.cat/indicadors/v1/dades.php http://api.idescat.cat/indicadors/v1/dades.json http://api.idescat.cat/indicadors/v1/dades.json?callback=f
Tota petició té uns paràmetres generals (comuns a tots els serveis) i uns paràmetres específics del servei, documentats a l'API del servei.
Admet tres valors:
http://api.idescat.cat/indicadors/v1/dades.xml?lang=es
Aquest paràmetre admet dos valors: utf-8 (valor per defecte) i iso-8859-1.
http://api.idescat.cat/indicadors/v1/dades.xml?enc=iso-8859-1
Si el format de la resposta és php la codificació és UTF-8, sigui quin sigui el valor d'enc.
A més dels paràmetres generals descrits a l'apartat anterior, cada servei admet uns paràmetres específics ("variables") que permeten configurar la informació obtinguda. Aquests paràmetres estan documentats a l'API del servei.
Per exemple, l'operació dades del servei indicadors permet seleccionar el nombre d'indicadors obtinguts gràcies als paràmetres tt, max i min.
http://api.idescat.cat/indicadors/v1/dades.xml?tt=10&max=10&min=3
Les variables del servei (o "paràmetres específics") poden encapsular-se en un paràmetre general per efectuar una crida més compacta. Per fer-ho cal incloure un seguit de parelles variable/valor separades per punts i coma.
http://api.idescat.cat/indicadors/v1/dades.json?tt=10&max=10&min=3 http://api.idescat.cat/indicadors/v1/dades.json?p=tt/10;max/10;min/3
Per raons d'amigabilitat, algunes APIs poden admetre peticions amb una sintaxi que no requereix especificar una de les operacions generals previstes. En el seu lloc, s'utilitzen referències a recursos que solen ser específics de cada API. Consulteu la documentació de cada API per saber si la invocació sense operació està disponible i per conèixer la seva sintaxi específica.
Com que internament les APIs utilitzen sempre la invocació amb operació, els missatges d'error inclouen les peticions en aquesta forma, amb independència de com van ser especificades per l'usuari.
En cas que el servidor no pugui atendre la petició, el codi retornat serà 500 (Server Error) o 503 (Service Unavailable). En la resta de casos, podem distingir dos tipus de petició que retornen diferents codis de resposta HTTP:
En el cas de petició incorrecta, el document retornat contindrà el codi d'error (id), un text explicatiu en l'idioma sol·licitat per la petició (text) i la petició (query) tal com l'ha interpretada el servidor d'APIs. Si la petició no especificava un dels formats previstos per alguna API, s'utilitzarà XML en la resposta.
<?xml version="1.0" encoding="utf-8" ?>
<errors>
<error>
<id>105</id>
<text xml:lang="ca">
"sas" no és un format vàlid (xml, json, php) de l'operació cerca de la versió v1 del servei pob.
</text>
</error>
<query>http://api.idescat.cat/pob/v1/cerca.sas?q=abrera</query>
</errors>
{
"error":[
{
"id":"104",
"text":"\"search\" no és una operació vàlida (cerca, sug) de la versió v1 del servei pob."
}
],
"query":"http:\/\/api.idescat.cat\/pob\/v1\/search.json?q=abrera"
}
a:2:{
s:5:"error";
a:1:{
i:0;
a:2:{
s:2:"id";
s:3:"002";
s:4:"text";
s:79:"Per al servei indicadors cal especificar una versió (v1).";
}
}
s:5:"query";
s:55:"http:\/\/api.idescat.cat\/indicadors\/dades.php";
}
***ERROR*** 105 "txt" no és un format vàlid (xml, json, php) de l'operació cerca de la versió v1 del servei pob. http://api.idescat.cat/pob/v1/cerca.txt?q=abrera
Els codis d'error indiquen si no s'ha especificat en la petició una informació requerida o si s'ha fet amb un valor incorrecte (i la informació no preveu un valor per defecte):
| Falta | Valor incorrecte | |
|---|---|---|
| Servei | 001 | 101 |
| Versió | 002 | 102 |
| Subservei | 003 | 103 |
| Operació | 004 | 104 |
| Format | 005 | 105 |
| Paràmetre | 006 | 106 |
En l'actualitat, els formats de resposta suportats amb caràcter general són XML, JSON i PHP serialitzat. Per a més informació, consulteu la secció 1.1.3 Format.