Document généralement obsolète.
Interro d'une sources de données
Modèle de base BaseDataSource : title, slug, description. Renvoie juste une exception NonImplementedError...
Requête :
GET /data/<slug>/json[?q=...] HTTP/1.0
Retour :
{ data: [ { id: "14114", text: "BESSIN" }, ... ], err: 0 }
Même interrogration possible avec /jsonp à la place de /json dans la requête, le retour est alors en jsonp.
Peut-être un modèle à ajouter : CacheDataSource avec un timeout en secondes, qui servirait de base à DistantCsvDataSource et autres.
Techniques génériques pour effectuer un POST vers une URL distante
Modèle de base BasePost : title, slug, description, url, timeout. Il reposte directement les données reçues dans l'URL indiquée.
POST /post/<slug>/json[?...] <objet JSON> ou null
Retour :
{ data: ..., err: 0 }
Abonnement à une ressource.
Demande la liste des ressources auxquelles on peut s'abonner, et via quel transport (mail, sms, rss, ...).
Si un utilisateur (user) est précisé dans l'URL, l'api indique pour chaque ressource par quels transports il y est abonné.
Note : le "user" indiqué permet à Passerelle de renvoyer l'info nécessaire au «vrai» système d'abonnement, on peut par exemple imaginer user=benji@trouvert.org;0612345678 pour un système qui propose mail et sms.
Requête :
GET /register/<slug>/[?user=...] HTTP/1.0
Retour :
{ data: [ # liste de ressources { name: '...', # nom de la ressource, si possible de type "id" utilisable dans une URL REST description: '...', # optionnel, description de la ressource url: '...', # optionnel, page "plus d'information" rss: '...', # optionnel transports: { available: ['mail', 'rss', 'sms', ...], defined: ['mail', 'rss'], # abonnement du user, si spécifié } }, ... ], err: 0 }
Mise à jour des abonnements de user à une ou plusieurs ressources :
Requête :
POST /register/<slug>/?user=... HTTP/1.0 [ # liste de ressources { name: '...', transports: ['mail', 'rss'] # mode d'abonnements choisis }, ... ]
Retour :
{ data: { message: 'Vous êtes bien abonné à ...', }, err: 0 }
Permet l'envoi d'un message à une cible (SMS, mail, ...)
Envoi :
POST /message/<slug>/ HTTP/1.0 { message: '...', from: '...', to: ['...', '...', ...] }
Retour :
{ data: { message: '4 message envoyés', }, err: 0 }
- origine / nom
- clé
- type de clé : apikey ou clé de signature portail-citoyen (hmac)