Index par titre
API¶
Usage |
Méthode |
Chemin |
pousser un document |
POST |
/api/documents/push/ |
liste des documents récents |
GET |
/api/documents/recently-added/ |
valider le hash d'un document |
POST |
/api/validation/<document-type>/ |
lister les validations de documents |
GET |
/api/validation/<document-type>/?user_nameid=YYY |
autoriser un jeton OAuth2 de récupération de document |
GET |
/api/oauth2/get-document/authorize |
obtenir un jeton OAuth2 de récupération de document |
GET |
/api/oauth2/get-document/token |
récupérer un document avec un jeton OAuth2 |
GET |
/api/oauth2/get-document/ |
pousser un document temporaire via OAuth2 |
POST |
/api/oauth2/put-document/ |
faire accepter un document temporaire via OAuth2 |
GET |
/api/oauth2/put-document/<document-pk>/authorize/ |
Pousser un document¶
Requête¶
POST /api/documents/push/ HTTP/1.1
Content-Type: application/json
Content-Size: xxx
{
"user_nameid": "YYYY",
"origin": "mairie de yyy - service enfance",
"file_b64_content": "contenu du fichier en base64",
"file_name": "nom du fichier",
"deletable_by_user": true,
}
Champ du contenu |
Usage |
user_nameid |
l'identifiant Publik de l'utilisateur |
origin |
l'origine du fichier, ex.: le nom d'une entité administrative |
file_b64_content |
le contenu du fichier sous forme de chaîne encodée en base64 |
file_name |
le nom du fichier |
deletable_by_user |
booléen, est-ce que le fichier peut-être supprimer par l'utilisateur ou n'est pas sous son contrôle |
Si l'origine indiquée n'existe pas encore, la valeur sera slugifiée et utilisée pour la créer implicitement.
Réponse¶
{
"result": 1,
"data": {
"id": null
}
}
Liste des documents récents¶
GET /api/documents/recently-added/ HTTP/1.1
Cette API renvoit au plus les dix documents les plus récents parmi ceux crées il y a moins de quatorze jours.
Cette API est la seule à récupérer l'utilisateur depuis la requête (via signature Publik).
Content-Type: application/json
{
"result": 1,
"data": [
{
"label": "<nom du fichier>",
"url": "https://fargo.<domain>.fr/12/download/fichier.pdf"
}
]
}
Validation des documents¶
Les types de document validables sont à définir dans les settings de fargo, via la variable FARGO_DOCUMENT_TYPES
qui est une liste de dictionnaire, ex.:
FARGO_DOCUMENT_TYPES = [
{
'name': 'avis-d-imposition',
'label': u'Avis d\'imposition',
'metadata': [
{
'label': u'Personne-s concernée-s',
'varname': 'personnes_concernees',
'type': 'string',
},
{
'label': u'Année',
'varname': 'annee',
'type': 'string',
},
{
'label': u'Revenu fiscal de référence',
'varname': 'revenu_fiscal_de_reference',
'type': 'string',
},
],
},
]
Les champs de ce dictionnaire sont :
name
: le nom du type de document à utiliser dans les différentes API
label
: le lable qui sera utilisé dans les interfaces pour afficher ce type de document
metadata
: une liste de dictionnaires décrivant les métadonnées possibles, dont les champs sont :
varname
: le nom de cette métadonnée
- @required : optionnel, par défaut True, définit si l'attribut est requis
label
: l'intitulé qui sera utilisé pour afficher cette métadonnée,
type
: le type de la métadonnée, pour l'instant seul string
est possible
validation
: une expression régulière de validation de la valeur (optionnel)
Valider le hash d'un document¶
Requête¶
POST /api/validation/avis-d-imposition/ HTTP/1.1
Content-Type: application/json
Content-Size: xxx
{
"user_nameid": "YYY",
"origin": "slug d'une origine déclarée dans l'admin",
"content_hash": "hash sha1 du document validé",
"start": "2019-01-01",
"end": "2019-12-31",
"creator": "Jean Darmette",
"created": "2019-01-02",
"personnes_concernees": "John Doe, Jane Doe",
"annee": "2016",
"revenu_fiscal_de_reference": "24678",
}
Ici l'origine ne sera pas créer automatiquement (contrairement à l'API de push), un slug doit être utilisé.
Champ |
Usage |
user_nameid |
identifiant Publik de l'utilisateur |
origin |
slug de l'origine |
content_hash |
hash SHA-1 du document validé, ex.: 3f786850e387550fdab836ed7e6dc881de23001b |
start |
date au format ISO-8601 de début de validité de la validation du document |
end |
date au format ISO-8601 de fin de validité de la validation du document |
creator |
agent/service ayant créé la validation |
created |
date au format ISO-8601 de création de la validation du document |
Les champs suivants correspondent aux champs de métadonnées définis pour le document, ils doivent valider les
Réponse¶
{
"result": 1
"data": {
"origin": "mairie-de-xxx-service-enfance",
"url": "https://fargo.<domaine>.fr/api/validation/avis-d-imposition/10/",
"id": 10,
"content_hash": "hash sha1 du document validé",
"start": "2019-01-01",
"end": "2019-12-31",
"creator": "Jean Darmette",
"created": "2019-01-02",
"personnes_concernees": "John Doe, Jane Doe",
"annee": "2016",
"revenu_fiscal_de_reference": "24678"
}
}
Lister les validations de document¶
Requête¶
GET /api/validation/avis-d-imposition/?user_nameid=YYY
Accept: application/json
Réponse¶
Content-Type: application/json
Content-Size: xxx
[
"result": 1,
"data": [
{
"origin": "mairie-de-xxx-service-enfance",
"url": "https://fargo.<domaine>.fr/api/validation/avis-d-imposition/10/",
"id": 10,
"content_hash": "hash sha1 du document validé",
"start": "2019-01-01",
"end": "2019-12-31",
"creator": "Jean Darmette",
"created": "2019-01-02",
"personnes_concernees": "John Doe, Jane Doe",
"annee": "2016",
"revenu_fiscal_de_reference": "24678"
}
]
]
Évolutions¶
L'API est baroque comparée à nos autres APIs, il faudrait :
- ajouter le NameID dans l'URL query-string plutôt qu'en POST
- définir creator depuis le NameID dans la query-string si disponible
- rendre Validation.created automatiquement défini à la création
- séparer les métadonnées dans un sous-champ
metadata
pour éviter les collisions
- utiliser
"err": 0
plutôt que @"result": 1"
Demandes telles que comprises à Alfortville¶
- Lors du remplissage d'un formulaire (donc en ligne), l'usager peut décider que son justificatif soit également sauvegardé dans le porte-doc (est alors flagué d'un type tel justificatif de domicile, ...), la Ville peut dans ce cas agir dessus (confirmation du type,dates de validité, validation des données concernées)
- A tout moment, l'usager peut déposer un document dans le porte-doc, dans ce cas non typé, non accessible par Ville
- A tout moment, la Ville peut déposer un document dans le porte-doc (à voir si alors affublé d'un type, dates de validité, données attestées)
- Lors remplissage formulaire en ligne, l'usager peut choisir un document (pdf ou image) dans son porte-document, plutôt que sur son DD (choix 1, lui est proposé les docs flagué du type mais également les tout venants)
- Si document typé, inclus dans dates de validité et attesté par agent alors les champs concernés du formulaire sont automatiquement complétés (À discuter)
- Au guichet, lors saisie d'une demande pour le compte de l'usager, actuellement l'agent peut ne pas transmettre de pièces justificatives : OK mais insuffisant
- Comportement souhaité : l'agent saisit les champs dans le formulaire, ceux attestés par la pièce justificative, sont "enregistrés" pour pouvoir être ré-utilisés postérieurement, solutions imaginées de ma part :
- enregistrement du contenus des champs en tant que tels pour être recopiés dans champs du formulaire suivant à compléter (mais forcément implique concordance ...)
- enregistrement des données sous forme d'un pdf type "résumé des données attestées par Alfortville", accessible comme un fichier quelconque dans porte-doc (et doit alors être accessible par agent)
Cas d'usage¶
En ligne¶
Cas de l'adresse, faisant partie des données du profil du compte usager¶
- Usager Lambda emménage à Alfortville le 1er mars, ayant des enfants il créé son dossier famille
- Lors processus de création de son dossier famille il a déposé un justificatif de son domicile (ouverture contrat livraison électricité)
- Le dossier est instruit par le service PRU (Pôle Relations Usagers) qui considère le justificatif de domicile vraisemblable, l'adresse de M. Lambda est donc validée (pour une période à saisir i.e. date lue sur justificatif + 3 mois)
- Usager Lambda veut s'inscrire à la médiathèque le 15 mars, le téléservice sur Publik demandant l'adresse, elle peut être pré-remplie depuis le données du compte
- Le TS médiathèque comporte un champ dépôt de pièce justificative de domicile, M. Lambda choisit le contrat livraison électricité (qui a été attesté par un agent comme valide du 15/02 au 15/05)
- Au traitement, l'agent du PRU, n'a même pas à regarder le scan déposé puisque "on sait" que l'adresse est bonne
Cas des revenus¶
- Usager Lambda emménage à Alfortville le 1er mars, ayant des enfants il créé son dossier famille
- Lors processus de création de son dossier famille il a scanné sa déclaration d'impôts sur revenus 2015
- Le dossier est instruit par le service PRU (Pôle Relations Usagers) qui considère la déclaration de revenus vraisemblable, le montant annuel de ressources de M. Lambda est donc validée (pour une période à saisir i.e. date saisie par agent jusqu'au 31-12-16)
- Usager Lambda veut inscrire un enfant en séjour de vacances le 1er avril, le téléservice sur Publik demande le montant annuel de revenus : peut-on le récupérer pour en faire une pré-saisi ?
- Le TS médiathèque comporte un champ dépôt de pièce justificative de revenus, M. Lambda choisit la déclaration d'impôts sur revenus 2015 (qui a été attestée par un agent comme valide du 01-01-16 au 31-12-16)
- Au traitement, l'agent du PRU, n'a même pas à regarder le scan déposé puisque "on sait" que le revenu est bon (cas si pré-remplissage par donnée attestée)
- Au traitement, l'agent du PRU, n'examine pas le scan déposé mais un "résumé" de celui-ci mentionnant clairement le revenu annuel, et valide le formulaire si OK
Au guichet¶
Cas de l'adresse, faisant partie des données du profil du compte usager¶
- Usager Dupont emménage à Alfortville le 1er mars, ayant des enfants il se rend à la Mairie et un agent lui créé son dossier famille (en lui demandant normalement un courriel et lui explique qu'il va se retrouver avec un compte)
- Lors processus de création du dossier famille, l'agent examine le justificatif de domicile amené par M. Dupont (ouverture contrat livraison électricité), complète les champs adresse et valide le formulaire sans upload de PJ (privilège de l'agent en mode welco)
- L'adresse de M. Dupont est donc validée (pour une période à saisir i.e. date lue sur justificatif + 3 mois) MAIS sans aucun fichier
- Usager Dupont veut s'inscrire à la médiathèque le 15 mars, il revient à la Mairie (les mains dans les poches) et l'agent PRU initie le téléservice :
- soit l'adresse du compte usager Publik doit être flagué comme "attestée",
- soit un fake justificatif de domicile (PDF générée) lui est affichée pour que l'agent n'ait pas à re-demander un justificatif
Cas des revenus¶
- Usager Dupont emménage à Alfortville le 1er mars, ayant des enfants il se rend à la Mairie et un agent lui créé son dossier famille
- Lors processus de création du dossier famille, l'agent examine la déclaration d'impôts sur revenus 2015 amenée par M. Dupont, complète le champ "revenus annuels" et valide le formulaire sans upload de PJ (privilège de l'agent en mode welco)
- Les revenus 2015 de M. Dupont sont donc validés (pour une période à saisir i.e. date saisie par agent jusqu'au 31-12-16) MAIS sans aucun fichier
- Usager Dupont veut inscrire un enfant en séjour de vacances le 1er avril et se pointe, encore, les mains dans les poches à la Mairie
- le téléservice sur Publik demandant le montant annuel de revenus, comment l'agent peut-il récupérer l'information "revenus annuels" ?
- idéalement pré-rempli mais nécessite alors de conserver la donnée "quelque part"
- en lisant le fake "attestation de revenus annuels"
Liste des justificatifs données avec meta-data et dates de validité par défauts¶
Plutôt que d'avoir une vision par document administratif justificatif, retenir les données qui sont attestées
Tentative de généralisation depuis cas d'Alfortville (https://dev.entrouvert.org/projects/alfortville-gru/wiki/Cas_d'usages#section-12)
Avec ajouts d'autres cas de demandes de justificatifs par villes :
http://www.paris.fr/arc-en-ciel#renseignements-pratiques_2
Données qui pourraient être attestées au niveau du compte Publik (sont des attributs du compte usager)¶
Identité de l'usager¶
- atteste de : Nom, Prénom, Civilité, Date de naissance, (Lieu de naissance, Pays de naissance)
- durée de validité : permanente
- pour qui ? le requérant
- pièces justificatives possibles : CNI, passeport, livret de famille
- champ de précision : "Personne concernée : " (un champ libre pour que l'usager saisisse prénom et nom)
Domicile de l'usager¶
- durée de validité par défaut : 6 mois (ou 1 an : https://www.service-public.fr/particuliers/vosdroits/F14807 ?)
- pour qui ? un foyer (déclarant ou déclarant+conjoint)
- pièces justificatives possibles : factures diverses, quittance de loyer, avis d'imposition, ...
- champ de précision : "Personne-s concernée-s : " (un champ libre pour que l'usager saisisse son prénom et nom ou plusieurs)
Données qui sont attestées au sein d'un formulaire (ne sont pas des attributs du compte usager) et seraient vraiment ré-utilisées de formulaire en formulaire¶
Revenus du requérant (ou du conjoint)¶
- atteste de : Revenus annuels
- durée de validité : 1 an au-delà de la période i.e. au 31/12 de l'année suivante ?
- pour qui ? un foyer (déclarant ou déclarant+conjoint) ou deux personnes si déclaration séparées
- pièces justificatives possibles : avis d'imposition
- champ de précision : "Personne-s concernée-s : " (un champ libre pour que l'usager saisisse son prénom et nom ou plusieurs)
QF CAF du foyer¶
- atteste de : QF mode de calcul CAF
- durée de validité : 1 an à compter de la date d'émission ?
- pour qui ? un foyer (déclarant ou déclarant+conjoint)
- pièces justificatives possibles : attestation de la CAF indiquant le quotient familial
- champ de précision : "Personne-s concernée-s : " (un champ libre pour que l'usager saisisse son prénom et nom ou plusieurs)
Données demandées dans le cas du bloc famille à Alfortville¶
Situation familiale¶
- atteste de : situation familiale entre adultes
- durée de validité : 1 an ?
- pour qui ? un foyer (déclarant ou déclarant+conjoint)
- pièces justificatives possibles : livret de famille, avis d'imposition ?, relevé CAF ?
- champ de précision : "Personne-s concernée-s : " (un champ libre pour que l'usager saisisse son prénom et nom ou plusieurs)
Identité du conjoint¶
- atteste de : Nom, Prénom, Civilité, Date de naissance, (Lieu de naissance, Pays de naissance)
- durée de validité : permanente
- pour qui ? le conjoint
- pièces justificatives possibles : CNI, passeport, livret de famille
- champ de précision : "Personne concernée : " (un champ libre pour que l'usager saisisse un prénom et nom)
Identité d'un enfant¶
- atteste de : Nom, Prénom, Civilité, Date de naissance, (Lieu de naissance, Pays de naissance)
- durée de validité : permanente
- pour qui ? un enfant d'une fratrie
- pièces justificatives possibles : livret de famille, CNI, passeport, ...
- champ de précision : "Enfant concerné : " (un champ libre pour que l'usager saisisse un prénom et nom)
NB : la première vision (Alfortville) nous a amené à renseigner plusieurs enfants (https://dev.entrouvert.org/projects/fargo/repository/revisions/86cb54b4a189d2b478c0cb3cf8ebaeb4678704df/diff/fargo/settings.py), ne permet pas généricité totale (peut y avoir plus de 4 enfants) et plus compréhensible si un set de données / enfant pour ré-utiliser dans autre formulaire (où ce n'est pas toute la fratrie qui peut être concerné)
Demandes de ville veille sur le sujet porte-documents¶
Alfortville¶
cf. CCTP p15
L’espace d’échange ou coffre-fort individuel
Dans cet espace seront déposés par l’Usager les pièces justificatives pour constituer ou faire évoluer ses dossiers. De même dans cet espace la collectivité pourra y déposer les courriers de réponses et tout autre document relatif aux prestations de l’Usager.
Les pièces justificatives pourront être déposées aux formats PDF et image standard et serontsoumises à période de validité en fonction de leur type.
Validation des données Usagers :
La collectivité se positionnera pendant les premiers ateliers fonctionnels sur la validation des pièces justificatives et la nécessité de les stocker dans cet espace.
Les modalités de validation des données Usagers seront fonction des parcours Usagers :
- Si numérisation depuis le guichet virtuel, passage au guichet une fois pour validation
- Si centre d'appels ou courrier, modalités guichet virtuel
- Si passage au guichet, numérisation ou simple validation visuelle par agent traitant
Dans l’hypothèse d’un lien vers un espace certifié de type digipost ou France Connect, les pièces justificatives pourront ne pas avoir besoin de validation supplémentaires (CAF ou Impôts par
exemple)
Chaque pièce justificative pourra donc faire l’objet d’un traitement post dépôt pour validation et avoir une date de validité, traitée automatiquement (date atteinte implique notification pour l’Usager et les agents traitants)
En découles des cas d'usages tels qu'imaginés par Brice, à écouter Alfortville
Blois¶
cf. CCTP p25
Dans son espace personnel, l’utilisateur pourra :
(...)
- Sauvegarder et stocker ses documents administratifs (pièces justificatives) dans un coffre-fort qui permet de disposer de préférence d'un espace de stockage illimité et
de gérer la date de validité des documents.
- Retirer (télécharger et enregistrer) des documents mis dans l’espace par les agents de la Ville,
(...).
NB : le type de pièces jointes (PDF, GIF, PNG) et leur taille sera à traiter avec le prestataire.
Niort¶
cf. CCTP p25
Cela nécessite (...), un espace de téléchargement de toutes les pièces administratives que l’usager doit fournir et que la municipalité peut lui transmettre (Coffre-fort numérique).
Note Brice : dans le cas de Niort, le coffre-fort est cité uniquement comme espace de dépôt accessible à l'administration, et non à l'initiative de l'usager
Nîmes¶
cf. CCTP p17
5.3.10 - Gestion du porte document
Afin de diminuer les coûts d’exploitation de la solution, dans la mesure du possible le porte document à utiliser sera celui du site de l’état, actuellement « mon.service-public.fr », qui devient France CONNECT . Une interface est à réaliser.
Le porte document est une fonction mis à disposition des usagers afin de leur faciliter la gestion des pièces justificatives. Ce porte document est actif et intelligent. Ceci implique plusieurs fonctions :
- Possibilité pour l’usager d’ajouter/modifier/supprimer tout type de pièces justificatives via les canaux courrier, courrier électronique, web et mobile.
- La liste des types de pièces justificatives est administrée par les administrateurs fonctionnels de la collectivité afin d’éviter que l’usager n’insère n’importe quel type de pièces.
- Ce référentiel de pièces administré par la Collectivité, permet au porte document de gouverner automatiquement les documents fournis (délais de validité en fonction du type de pièce, durée de conservation maximum, procédure de suppression automatique).
- Lors du remplissage d’une formalité par l’usager (saisie d’un e-Service), ce dernier aura une liste de PJ personnalisées en fonction de l’e-Service et des réponses fournies. De plus, l’e-Service pourra s’appuyer sur le référentiel afin de proposer aux usagers les PJ déjà présentes dans le porte document qui pourraient convenir à l’acte qu’il est en train de réaliser.
- Si la PJ n’est pas présente dans le porte document, alors l’usager aura la possibilité d’en fournir une (dématérialisée ou via courrier). Dans ce cas, la demande sera associée aux PJ fournies et ces dernières alimenteront automatiquement le porte document avec la bonne typologie de document
dans le référentiel des PJ.
Les « métadonnées » utiles au référencement du document, du contenu ainsi que celles de la validité pour usage sont à fournir lors de la dépose du document ; ces informations sont ensuite présentées à l’usager ou à l’agent en reconnaissance des pièces existantes.
Une sécurité maximale est associée à ces procédés afin de garantir la confidentialité et fiabilité d’exploitation, y compris sur les agents internes.
Développer¶
git clone git@git.entrouvert.org:fargo
mkvirtualenv fargo
workon fargo
pip install -U pip
cd fargo
pip install -e .
Relevant Art¶
eBox (porte-documents de l'administration belge)¶
- tableau avec
- émetteur (sous forme de logo)
- nom de fichier (pas description)
- + deux liens "ouvrir" et "télécharger"
- type de document (icône)
- date d'envoi
- date d'expiration
- filtres lu/non-lu/tous + par émetteur
Spécification¶
Le porte-feuille de document permettra à une personne de stocker des documents et de les utiliser sur différents services en ligne via des web-services avec une autorisation basée sur le protocole OAuth 2.0. Il sera possible pour un télé-service de proposer de nouveaux documents à un utilisateur si celui-ci l'aura préalablement autorisé à le faire, et ce pour une durée déterminée. Ces fichiers ne seront pas automatiquement introduits dans le porte-feuille, mais gardés dans un section "Réception de nouveaux documents" jusqu'à acceptation par l'utilisateur. Les fichiers déposés par un télé-service ne pourront pas être modifiés, seulement supprimés, et garderont une trace de leur origine qui pourra être transmise à un télé-service tiers.
Les documents seront des fichiers ayant éventuellement un type et une date de validité.
Les documents seront chiffrés avec une clé personnelle, cette clé personnelle sera conservée dans un cookie de session chiffré durant toute nouvelle session mais ne sera jamais copiée sur un stockage persistant par le porte-document. Cette clé ne servira qu'au chiffrement/déchiffrement des données mais pas à l'authentification qui pourra provenir d'un système plus classique de SSO.
Intégration¶
Lors de la demande d'autorisation le téléservice pourra indiquer s'il désire que les pages du porte-document soit habillées, si celui-ci sera utilisé en pleine page, ou non habillées. si celui-ci s'ouvrira dans une iframe ou une popup. Dans le cas d'utilisation d'une iframe ou d'une popup, le contenu présenté sur l'URL de retour du téléservice devra se charger de fermer ceux-ci.
Diagramme de séquence récupération d'un document¶
Diagramme de séquence de dépôt d'un document¶
Suite à ces échanges l'utilisateur pourra consulter le nouveau document dans son porte-document.
Wiki¶
Spécification
Développer
Demandes de ville, veille sur le sujet
API