Document généralement obsolète.


Familles d'API Passerelle

datasources

Interro d'une sources de données

Modèle de base BaseDataSource : title, slug, description. Renvoie juste une exception NonImplementedError...

api

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.

modèle dérivés

Peut-être un modèle à ajouter : CacheDataSource avec un timeout en secondes, qui servirait de base à DistantCsvDataSource et autres.

repost

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.

api

POST /post/<slug>/json[?...]

<objet JSON> ou null

Retour :

{
    data: ...,
    err: 0
}

modèles dérivés

register

Abonnement à une ressource.

api

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
}

message

Permet l'envoi d'un message à une cible (SMS, mail, ...)

api

Envoi :

POST /message/<slug>/ HTTP/1.0

{
   message: '...',
   from: '...',
   to: ['...', '...', ...]
}

Retour :

{
    data: {
       message: '4 message envoyés',
    },
    err: 0
}

Contrôle d'accès

Pour chaque point d'accès :