⚙
Interconnexion avec les logiciels existants

Schéma général d'interconnexion

Documentation technique de l'API

​

Authentification

Comme pour la navigation sur notre site, l'authentification se fera directement sur l'API de RDV-Solidarités avec les identifiants RDV-Solidarités par l'intermédiaire de cet endpoint.

Les identifiants de session obtenus en rĂ©ponse devront ĂȘtre placĂ©s dans les headers pour chaque requĂȘte sur RDV-Insertion.
Les headers qui devront ĂȘtre passĂ©s sont les suivants:
access-token: SFYBngO55ImjD1HOcv-ivQ
client: Z6EihQAY9NWsZByfZ47i_Q
Content-Type: application/json
Accept: application/json
L'API répondra avec un statut 401 si ces identifiants sont invalides.

Création et invitations des bénéficiaires

Cet endpoint permet de crĂ©er des allocataires sur RDV-Insertion (ce qui crĂ©e automatiquement un utilisateur correspondant sur RDV-SolidaritĂ©s) et de les inviter Ă  prendre RDV par SMS, mail ou les 2 en fonction des attributs envoyĂ©s dans la requĂȘte.
La création et l'invitation des bénéficiaires se fera de maniÚre asynchrone.

Format

Le format de la requĂȘte sera application/json.

Route

POST /api/v1/organisations/:rdv_solidarites_organisation_id/applicants/create_and_invite_many

ParamĂštres de l'URL

  • rdv_solidarites_organisation_id: L'ID de l'organisation sur RDV-SolidaritĂ©s pour laquelle on veut crĂ©er les bĂ©nĂ©ficiaires et les invitations. Cet ID apparaĂźt dans l'URL de la page index de l'organisation sur RDV-SolidaritĂ©s:
Dans cet exemple l'ID de l'organsation est le 294.

ParamĂštres dans le body de la requĂȘte

Le body de la requĂȘte en JSON contiendra les attributs suivants.
  • applicants: ARRAY[APPLICANT_ATTRIBUTES] : Tableau d'objets comprenant les attributs ci-dessous. La taille maximum de ce tableau sera de 25.
    • first_name: STRING (requis): PrĂ©nom du bĂ©nĂ©ficiaire
    • last_name: STRING (requis): Nom du bĂ©nĂ©ficiaire
    • title: STRING (requis): CivilitĂ© du bĂ©nĂ©ficaire. Valeurs possibles: monsieur, madame.
    • affiliation_number: STRING (requis) : NumĂ©ro d'allocataire du bĂ©nĂ©ficaire.
    • role: STRING (requis) : Le rĂŽle de la personne au sein du dossier de demande RSA. Valeurs possibles: demandeur, conjoint.
    • email: STRING (optionnel) : L'email du bĂ©nĂ©ficiaire. S'il n'est pas prĂ©sent l'invitation par email ne sera pas envoyĂ©e.
    • phone_number: STRING (optionnel) : Le numĂ©ro de tĂ©lĂ©phone du bĂ©nĂ©ficiaire. S'il n'est pas prĂ©sent l'invitation par SMS ne sera pas envoyĂ©e.
    • birth_date: STRING (optionnel) : Date de naissance du bĂ©nĂ©ficiaire au format DD/MM/YYYY
    • rights_opening_date: STRING (optionnel): Date de notification que l'allocataire est bĂ©nĂ©ficiaire du RSA (= date de rĂ©ception du 1er flux bĂ©nĂ©ficiaire quotidien qui montre que l'allocataire est un nouvel entrant). Au format DD/MM/YYYY.
    • address: STRING (optionnel) : L'addresse de l'utilisateur. Cette addresse comprend le code postal et la ville.
    • birth_name : STRING (optionnel) : Le nom de naissance du bĂ©nĂ©ficiaire
    • department_internal_id: STRING (optionnel) : ID interne de la personne au sein du systĂšme d'information du dĂ©partement (cela peut ĂȘtre l'ID liĂ© Ă  l'Ă©diteur comme l'ID de IODAS par exemple). Cet ID est nĂ©cessaire si l'on veut que RDV-Insertion notifie de la prise/annulation de RDV sur une API cĂŽtĂ© dĂ©partement ou Ă©diteur.
    • invitation: OBJECT (optionnel): Contient les informations ci-dessous liĂ©s Ă  l'invitation Ă  prendre rdv:
      • rdv_solidarites_lieu_id: INTEGER (optionnel) : L'ID du lieu dans lequel l'on veut que le RDV ait lieu. S'il est prĂ©cisĂ© l'utilisateur sera invitĂ© directement Ă  choisir un crĂ©neau sur ce lieu. Attention, il faut faire attention Ă  ce qu'une plage d'ouverture pour le motif en question (voir attribut prĂ©cĂ©dent) relie le motif au lieu en question. Cet ID est prĂ©sent dans l'URL de la page "edit" du lieu sur RDV-SolidaritĂ©s.
        (Dans cet exemple le rdv_solidarites_lieu_id est 1263)
Exemple de body
{
"applicants": [
{
"first_name": "Didier",
"last_name": "Drogba",
"title": "monsieur",
"affiliation_number": "10492394",
"role": "demandeur",
"email": "[email protected]",
"phone_number": "0777889911",
"birth_date": "11/03/1978",
"rights_opening_date": "11/11/2021",
"address": "13 rue de la RĂ©publique 13001 MARSEILLE",
"department_internal_id": "11111444",
"invitation" : {
"rdv_solidarites_lieu_id": 3330
}
},
{
"first_name": "Dimitri",
"last_name": "Payet",
"title": "monsieur",
"affiliation_number": "12322131",
"role": "conjoint",
"email": "[email protected]",
"phone_number": "0655443322",
"birth_date": "29/03/1987",
"rights_opening_date": "15/11/2021",
"address": "5 Avenue du Moulin des Baux, 13260 Cassis",
"department_internal_id": "22221111",
"invitation": {
"rdv_solidarites_lieu_id": 3339
}
}
]
}

RĂ©ponse

Lors de l'envoi, nous allons vĂ©rifier que pour chaque bĂ©nĂ©ficiaire les attributs requis sont prĂ©sents et que tous les attributs passĂ©s sont au bon format (email, tĂ©lĂ©phone etc). Si c'est le cas la requĂȘte sera un succĂšs. Cela ne veut pas dire que la crĂ©ation et l'invitation des allocataires et l'invitation ont Ă©tĂ© un succĂšs car ces actions se feront de maniĂšre asynchrone.
En cas de succĂšs
Si la requĂȘte est un succĂšs (voir conditions plus haut), nous rĂ©pondrons avec un statut 200 et un body en JSON notifiant le succĂšs de la requĂȘte:
{
"success": true
}
En cas d'Ă©chec
Si la requĂȘte est un Ă©chec (voir conditions plus haut), nous rĂ©pondrons avec un statut 422 et un body en JSON contenant les erreurs de la requĂȘte, avec pour chaque entrĂ©e les erreurs correspondantes:
{
"success": false,
"errors": [
{
"Entrée 7 - valeur_du_department_internal_id_si_présent": {
"title": ["CivilitĂ© doit ĂȘtre rempli(e)"],
"email": ["Email n'est pas valide"]
},
},
{
"Entrée 12 - valeur_du_department_internal_id_si_présent": {
"last_name": ["Nom doit ĂȘtre rempli(e)"],
"phone_number": ["Numéro de téléphone n'est pas valide"]
}
}
]
}
À noter que si l'ID de l'organisation passĂ© dans l'URL ne correspond pas Ă  l'ID d'une organisation en base, l'API rĂ©pond avec le statut 404.

Notifications asynchrones

Lors du processus asynchrone de crĂ©ation et des invitations des allocataires des erreurs peuvent avoir lieu, bien que la rĂ©ponse Ă  la requĂȘte ait Ă©tĂ© un succĂšs. Il faut alors notifier l'organisation de ces Ă©checs.

En cas de problÚmes à la création de l'allocataire

En cas d'Ă©chec de la crĂ©ation de l'utilisateur, un mail sera envoyĂ© Ă  la personne ayant fait la requĂȘte avec l'identitĂ© de l'utilisateur en question et les erreurs associĂ©es Ă  sa crĂ©ation.
Could not load image

En cas de problĂšmes Ă  l'invitation de l'allocataire

S'il y a un problÚme lors de l'invitation d'un allocataire, l'organisation ne sera pas notifiée directement. Par contre elle pourra voir facilement les personnes qui n'ont pas été invitées sur la page de l'organisation dans RDV-Insertion et tous les récupérer en filtrant sur le statut "Non invité":
Elle pourra alors les inviter depuis la page du bénéficiaire (on y accÚde en cliquant sur "Gérer"):

Diagramme de séquence

CAF->CD: Flux bénéficiaire
CD->CD: DĂ©tection nouveaux entrants
CD->RDV Insertion: Flux nouveaux entrants
RDV Insertion->RDV Insertion: Création comptes
RDV Insertion->CD: Erreurs ?
RDV Insertion->BRSA: Notification
BRSA->RDV Insertion: Prise RDV
RDV Insertion->CD: infos RDV

Documentation technique des webhooks

​

Contexte

Lorsqu'un rdv est créé, modifié ou supprimé sur RDV-Solidarités, RDV-Insertion reçoit un webhook avec les données liées au rdv. RDV-Insertion va alors formatter ces données pour y ajouter quelques éléments avant de les envoyer vers l'endpoint dédié du département.

Payload de la requĂȘte

La requĂȘte aura toujours la mĂȘme forme quelque soit l'Ă©vĂšnement liĂ© Ă  son envoi, seul les valeurs des champs changent. Elle aurait alors avoir la forme suivante:
{
"event": "updated",
"duration_in_min": 30,
"cancelled_at": null,
"created_by": "user",
"starts_at": "2021-11-26T09:00:00.000+01:00",
"status": "noshow",
"rdv_solidarites_motif_id": 30,
"rdv_solidarites_lieu_id": 5,
"context": null,
"applicants": [{
"id": 15,
"first_name": "Didier",
"last_name": "Drogba",
"title": "monsieur",
"affiliation_number": "10492394",
"role": "demandeur",
"email": "[email protected]",
"phone_number": "0777889911",
"birth_date": "11/03/1978",
"department_internal_id": "11111444"
}],
"agents": [
{
"email": "[email protected]",
"first_name": "Martine",
"last_name": "VALIDAY"
}
],
"organisation": {
"id": 5,
"name": "PĂŽle Insertion Aubagne-Ciotat"
}
}
Les attributs sont les suivants:
  • event : STRING : Ă©venement ayant dĂ©clenchĂ© l'envoi de la requĂȘte. Valeurs possibles: created, updated ou destroyed.
  • duration_in_min: INTEGER : DurĂ©e du rendez-vous en minutes
  • cancelled_at: DATETIME : Moment oĂč le rdv a Ă©tĂ© annulĂ©. Il est nul si le rdv n'a pas Ă©tĂ© annulĂ©.
  • created_by: STRING : indique qui de l'usager ou de l'agent a crĂ©Ă© le rdv. Valeurs possbiles: user ou agent.
  • starts_at : DATETIME : Moment oĂč le rdv est fixĂ©.
  • status : STRING : Le statut du rdv. Valeurs possibles:
    1. 1.
      unknown: état lors de la création de rdv. Il reste dans cet état tant que le statut du rdv n'a pas été renseigné par l'agent.
    2. 2.
      waiting: Lorsque l'agent clique sur "En salle d'attente" dans RDV-Solidarités.
    3. 3.
      seen: Lorsque l'agent marque le rdv comme ayant été "honoré".
    4. 4.
      excused: Lorsque l'agent clique sur "AnnulĂ© Ă  l'initiative de l'usager" ou lorsque l'usager annule son rdv depuis son espace RDV-SolidaritĂ©s. Ça signifie que l'usager a notifiĂ© son absence au prĂ©alable.
    5. 5.
      revoked: Lorsque l'agent clique sur "Annulé à l'initiative du service.
    6. 6.
      noshow: Lorsque l'agent clique sur "Absence non excusée" pour signifier une absence de l'allocataire.
  • rdv_solidarites_motif_id: INTEGER : ID RDV-SolidaritĂ©s du motif de rdv.
  • rdv_solidarites_lieu_id: INTEGER : ID RDV-SolidaritĂ©s du lieu de rdv.
  • context : STRING : contexte annotĂ© au rdv sur RDV-SolidaritĂ©s.
  • applicants: ARRAY[APPLICANT_ATTRIBUTES] : Tableau des bĂ©nĂ©ficiaires pour qui le rdv a Ă©tĂ© pris. En gĂ©nĂ©ral ce tableau ne comprend qu'un seul bĂ©nĂ©ficiaire. Les attributs envoyĂ©s sont id (ID de l'allocataire sur RDV-Insertion) first_name, last_name, title, affiliation_number, role, email, phone_number, birth_date, department_internal_id (voir leurs dĂ©finitions au dessus)
  • agents: ARRAY[AGENT_ATTRIBUTES] : Tableau des bĂ©nĂ©ficiaires avec qui le rdv a Ă©tĂ© pris. En gĂ©nĂ©ral ce tableau ne comprend qu'un seul bĂ©nĂ©ficiaire. Les attributs envoyĂ©s sont l'email, first_name et last_name.
  • organisation: organisation pour laquelle a lieu le rdv.
    • rdv_solidarites_organisation_id : INTEGER : ID de l'organisation sur RDV-Solidarites pour laquelle le RDV a Ă©tĂ© pris.
    • name: STRING : nom de l'organisation pour laquelle a Ă©tĂ© prise le RDV sur RDV-SolidaritĂ©s.
Copy link
On this page
Schéma général d'interconnexion
Documentation technique de l'API
Authentification
Notifications asynchrones
Diagramme de séquence
Documentation technique des webhooks