Le portail citoyen est une plate-forme dans laquelle sont agrégées des informations provenant de sources web diverses.
Afin de permettre cette remontée d'information pour les services ne disposant pas nativement d'une API exposée sur le Web, nous proposons d'utiliser celle qui est décrite dans ce document.
En réponse à la requête du portail citoyen, le service doit fournir une information structurée. Cette réponse peut prendre plusieurs formes.
Le portail peut intégrer, sans que cela ne nécessite la moindre modification, les fils d'information au format RSS et Atom qui sont offerts par les services.
Comme pour les fils d'infos, des blocs de code HTML fournis par les services peuvent être intégrés directement dans le portail. À noter toutefois que ce HTML doit être "brut" parce qu'il est filtré. Il ne peut pas contenir de Javascript par exemple.
La réponse du service à la requête du portail peut aussi être faite en JSON.
Les données exposées au format JSON doivent être organisées sous forme d'un tableau associatif. Les clés (variables) de ce tableau sont les suivantes :
title
: titre (obligatoire)
url
: URL (obligatoire)
description
: description (facultatif)
La liste des données doit être attachées à une clé nommée data
.
Exemple :
{ "data": [
{"title": "Demande de bac pour ordures",
"url": "https://eservices.example.com/dechets/demande-bac"},
{"title": "Demande d'acte de naissance",
"url": "https://eservices.example.com/actes/naissance",
"Description": "Faites vos démarches sans vous déplacer"}
]
}
Le portail citoyen peut aussi recevoir des données qu'il affichera sous forme de tableau.
La liste des données doit être attachées à une clé nommée data
et une clé nommée columns
peut exister pour fournir les libellés
des colonnes.
Exemple :
{"data": [
{"day": "Lundi", "open": "8h", "close": "17h"},
{"day": "Mardi", "open": "8h", "close": "19h"},
{"day": "Mercredi", "open": "9h", "close": "17h"}
],
"columns": {
"day": "Jour",
"open": "Horaire d'ouverture",
"close": "Horaire de fermeture"}
}
Le résultat sur le portail citoyen sera l'affichage du tableau suivant :
Jour |
Horaire d'ouverture |
Horaire de fermeture |
Lundi | 8h | 17h |
Mardi | 8h | 19h |
Mercredi | 9h | 17h |
Le portail effectue des requêtes HTTP GET vers les différents services. Les échanges atendus sont conformes au style d'architecture REST.
L'accès au service peut être protégé de différentes manières, le portail citoyen peut utiliser les mécanismes suivants pour s'authentifier auprès du service.
Le portail citoyen peut utiliser l'authentification HTTP basique (définie dans la RFC 2617).
Le portail citoyen peut s'authentifier à l'aide d'un certificat client.
L'URI utilisée pour ces requêtes peut contenir des informations identifiant l'usager concerné.
Lorsque le service intègre le protocole de fédération d'identité SAML, la requête identifiante utilisera un identifiant SAML, le NameID :
https://www.example.com/eservices/pending?NameID=nameid
Lorsque le service n'intègre pas le protocole de fédération d'identité SAML, la requête identifiante utilisera l'adresse électronique de l'utilisateur :
https://www.example.com/eservices/pending?email=email
L'utilisation de cette méthode pour identifier l'utilisateur ne fonctionne que si ce dernier a employé la même adresse électronique pour la création du compte citoyen et la création du compte sur le service.