Le OpenData API offrono l’accesso in lettura dei contenuti, l’accesso alla definizione delle classi e l’accesso all’elenco delle sezioni e degli stati dei contenuti.
Accesso alle API¶
E” possibile accedere alle API attraverso una richiesta HTTP al server API. Il server restituirà la risorsa richiesta con uno status code HTTP coerente con il risultato della richiesta fatta.
Formato della risposta¶
Il formato di default della risposta dei moduli content è JSON. Il formato di default della risposta dei moduli geo è geoJSON.
Autenticazione¶
Alcune richieste richiedono che il client effettui l’autenticazione. Al momento è disponibile l’autenticazione Basic, è in roadmap l’implementazione del formato Oauth/Oauth2.
Lettura di un contenuto¶
GET content/read/$ContentIdentifier
La risposta in JSON è un oggetto Content
La varibile obbligatoria $ContentIdentifier rappresenta un identificatore unico del contentuto, espresso con metadata.id oppure metadata.remoteId
Ricerca di un contenuto¶
GET content/search/$Query
La risposta in JSON è un oggetto SearchResults
La varibile obbligatoria $Query rappresenta la stringa di ricerca. Il server API riconosce un meta-linguaggio per filtrare i contenuti.
Lettura di un punto geografico¶
GET geo/read/$ContentIdentifier
La risposta in geoJSON è un oggetto Feature
La varibile obbligatoria $ContentIdentifier rappresenta un identificatore unico del contentuto.
Ricerca di punti geografici¶
GET geo/search/$Query
La risposta in geoJSON è un oggetto FeatureCollection
La varibile obbligatoria $Query rappresenta la stringa di ricerca. Il server API riconosce un meta-linguaggio per filtrare i contenuti.
Rappresentazione delle risorse¶
Content¶
Esempio di content in formato json
La risorsa contenuto rappresenta il cuore delle API. Essa viene esposta come un oggetto composto da due proprietà che ne rappresentano i metadati e i dati veri e propri.
Identificatore | Tipo di dato | Descrizione |
metadata | object | Rappresentazione dei metadati del contenuto |
data | object | Rappresentazione dei dati del contenuto |
Metadata¶
I metadati sono informazioni non riferibili al contentuto vero e proprio dell’oggetto ma al suo contesto. Attraverso i metadati è possibile raggiungere informazioni utiliu per la ricerca quali l’identificativo unico della risorsa, la classe di contenuto utilizzata, le date di pubblicazione e di modifica…
Identificatore | Tipo di dato | Descrizione | Note |
id | integer | Id univoco del contenuto nel server API | Sola lettura |
remoteId | string | Id univoco del contenuto nel server API impostato dal redattore o dal processo di importazione automatica: per design la sua lunghezza non può superare i 100 caratteri | |
classIdentifier | string | Identificatore della classe di contenuto utilizzata dalla risorsa esposta | |
class | uri | Url di accesso alla risorsa classe utilizzata dalla risorsa esposta | Sola lettura |
sectionIdentifier | string | Identificatore della sezione utilizzata dalla risorsa esposta | |
stateIdentifiers | array | Array degli identificatori di stato (nel formato <stategroup_identifier>.<state_identifier> utilizzati dalla risorsa esposta | |
published | Date ISO 8601 | Data di pubblicazione del contenuto | Sola lettura |
modified | Date ISO 8601 | Data di ultima modifica del contenuto | Sola lettura |
languages | array | Array degli identificatori di lingua delle traduzioni disponibili della risorsa esposta | Sola lettura |
name | hash | Array associativo del nome della risorsa per ciascuna traduzione disponibile | Sola lettura |
parentNodes | array | Array dei Id dei Nodi in cui è collocato l’oggetto informativo | |
link | uri | Url di accesso alla risorsa richiesta | Sola lettura |
Data¶
Identificatore | Tipo di dato | Descrizione |
(Identificatore di lingua) | object | Rappresentazione degli attributi del contenuto |
La risorsa Data espone il contenuto informativo del Content per ciascuna traduzione disponibile. Ad ogni identificatore di lingua corrisponde da un oggetto chiave-valore dove ciascuna chiave è l’identificatore dell’attributo e ciascun valore è rappresentato da un tipo di dato primitivo o strutturato. Data la natura flessibile del content model di eZPublish è necessario ricavare la struttura della risorsa Data attravero la definizione della classe raggiungibile dall’url esposto in content.metadata.class .
SearchResults¶
Identificatore | Tipo di dato | Descrizione |
query | string | Stringa di ricerca |
nextPageQuery | string oppure null | Stringa per ricevere la pagina successiva dei risultati |
totalCount | integer | Numero totale di contenuti ottenuti dalla ricerca |
searchHits | Array di Content oppure FeatureCollection | Risultati della ricerca |
La query di ricerca¶
Per eseguire una query occorre specificare una stringa di ricerca Query.
La Query viene effettuata attraverso i filtri e i parametri.
Filtri¶
I filtri sono composti dai un identificatore, un operatore e un valore.
Ad esempio:
titolo = 'Mercatino di Natale'
In questo esempio, il campo è «titolo», l’operatore è «=» e il valore è «“Mercatino di Natale”». Si sta chiedendo al motore di ricerca di restituire tutti i contenuti che hanno un attributo il cui è identificatore «titolo» contiene il valore “Mercatino di Natale”.
Operatori per i filtri¶
Operatore | Tipo di valore atteso | Esempio |
= | Stringa compresa tra apici | titolo = “Nel mezzo del cammin” |
!= | Stringa compresa tra apici | titolo != “Nel mezzo del cammin” |
in e la sua negazione != | Array di stringhe | titolo in [“Nel mezzo del cammin di nostra vita”,”La gloria di colui che tutto move”] |
contains e la sua negazione !contains | Array di stringhe | titolo contains [“Nel mezzo del cammin di nostra vita”,”La gloria di colui che tutto move”] |
range e la sua negazione !range | Array di 2 stringhe | from_time range [2014-01-01,2014-12-31] |
L’operatore «contains» produce in AND logico: tutti i titoli che contengono le stringhe “Nel mezzo del cammin di nostra vita” e “La gloria di colui che tutto move” contemporaneamente.
L’operatore «in» produce in OR logico: tutti i titoli che contengono la stringa “Nel mezzo del cammin di nostra vita” oppure la stringa “La gloria di colui che tutto move”.
Parametri¶
Operatore | Tipo di valore atteso | Esempio | Utilizzo |
sort | Hash | sort [published => desc] | Ordinamento |
limit | intero | limit 10 | Numero di risultati per pagina (massimo 100, default 30) |
offset | intero | offset 10 | Offset per la paginazione |
classes | stringa o Array di stringhe | classes “event” oppure classes [“event”,”article”] | restrizione sui tipi di contenuto |
subtree | Array di interi | subtree [2,43,54] | restrizione di sotto albero |
I parametri servono a modificare l’ambito di ricerca e sono rappresentati da una chiave e da un valore.
classes 'event'
In questo esempio la chiave è «classes» e il valore «’event”». Si sta chiedendo al motore di ricerca di restituire tutti contenuti di classe «event».
Ecco un esempio che usa filtri e parametri:
titolo = 'Mercatino di Natale' classes 'event'
E” possibile eseguire ricerche più complesse. Ad esempio per ricerca gli eventi della settimana prossima:
from_time range [today,next week] or to_time range [today,next week] or ( from_time range [*,today] and to_time range [next week,*] ) classes event sort [published => desc]
Il server API mette a disposizione di default una console raggiungibile da (www.domain.tdl/opendata/console)