---
tags: 🐔 construction cocorico 🐔
---
# 🐔 Endpoint Protools
## [Note liée](https://hackmd.io/@laurentC35/SJ_k9scMo)
## [Noté liée - Era-Protools](https://hackmd.io/@laurentC35/H1DfUtCQo)
- il fait quoi protools ?
- création unitaire du point de vue protools : oui
- gestion des erreurs/rejeu/idempotence ?
## Authentification
- rôle client ws coleman (dans le jeton fournit par keycloak via compte de service pour protools)
- logger qui utilise les endpoints
## Questionnaires
- https://gitlab.insee.fr/sic/collecte-enqueteur/queen-api/-/wikis/Description-de-l'api/Endpoints-de-l'api#endpoints-de-cr%C3%A9ation
- campagne + modèle de questionnaire + nomenclature couverts
- unités enquêtées
## Pilotage Coleman legacy
- :warning: les adresses des courriers sont dans le ldap dans coleman-legacy. Qui gère l'insertion dans le ldap ? ==> protools
- https://api.pilotage-particuliers.stat-publique.fr/swagger-ui.html#/rest-survey-unit/initializeSurveyUnitsViaBatchUsingPOST
POST /campaigns/{idCampaign}/survey-units/initializeSurveyUnitsViaBatch
[
{
"address": "string",
"batchNumber": 0,
"firstname": "string",
"idCampaign": "string",
"idContact": "string",
"idSu": "string",
"lastname": "string"
}
]
## Pilotage Coleman cocorico
[Modèle de données Pilotage](https://github.com/InseeFrLab/datacollection-management-api/tree/master/docs)
### UE/Contact
L'api pilotage gère la création des liens 1-1 dans le modèle n-n à partir d'une description simple et standardisé de l'entité fournit par protools
PUT /questionning (survey-unit + contacts + partitionning)
Lien N(protools) * 1-N (notre objet à "PUTer")
**WARNING** :
- comment on gère l'idempotence ? : faire en sorte qu'un deuxième PUT identique provoque le même résultat (sans doublon)
[Article sur l'idempotence pour les "POST"](https://medium.com/@saurav200892/how-to-achieve-idempotency-in-post-method-d88d7b08fcdd)
**JSON d'1 questionning**
```json
{
"model":"model-aqv-2022" // identifant du model de questionnaire
"idPartition":"AQV-2023-X00-01",
"surveyUnit":{
"id":"SIRET", //= identificationCode dans le cas d'une interrogation d'une entreprise (pour MVP)
"identificationCode" : "SIRET ou SIREN ou \"profilage\"(regroupement d'unité légale)/ ", // identificationCode
//"identificationCodeComplement" : "NIC" //optionnel
"address":{
}
},
"contacts":[
{
"idec":""//identifiant qui porte l'existance ou non en bdd et donc on fait un updateOrInsert
"externalId":"", //peut-être vide
"isMain": "",
"address":{}
// contactsEvents à créer automatiquement
}
],
}
```
Step 2 : création d'un questionning event INIT_LA avec date du jour
### Metadata
protools envoie l'ensemble des ascendants de la campagne (de source à partitioning)
PUT __/metadata__
- source
- survey
- campaign
- partitionning (status-calendar
```json
{
"partitionning":{
"id":"AQV-2023-X00-01" //purement technique (ne porte pas de lien entre les entités, du genre "sustr")
"label": "NEW", // TODO à créer -> Voir avec Betty
"status":"...",
"calendar":"..."
... // data of partitioning
...
"support":{ //assitance-enquête (niveau 2)
"id": "agri-bsva"
// service collecteur = assistance
},
"owner":{
"id" : "insee",
"id" : "dares",
"id" : "agri"
"label": "SSM Agriculure"
// ce qui crée l'enquête DARES, INSEE, SSM AGRI
},
"source":{
"id" :"AQV", // à fournir par protools
"periodicity":"..."
},
"survey":{
"id" :"AQV-2023",
"year":2023,
},
"campaign":{
"id" : "AQV-2023-X00",
"period"
}
}
}
```
### Stratégie :
- à chaque PUT, on met à jour les sous objets correspondant (insertOrUpdate)
## Courriers / mails / sms
porté par un module ~~Radiohead~~ Meshuggah [Messaging Handler for Unified and Generic Global hub ] en construction
en attendant on fait du coleman
- on fait des endpoints d'envois de mail puis courrier unitaires. On consolide les demandes de manière quotidienne pour envoi à l'éditique => bat ? opération ?
- dev prévu sur colemaig + coleman-batch (une chaine de consolidation publipostage éditique)
horizon
- mails pour familles TTP décembre
- courrier pour TIC TTP février
## Extraction/nettoyage
- GET unitaire sur les datas/paradatas/suvis par ue quelque soit l'état de l'ue.
- DELETE /campaign/{idCampaign} (Ok pour questionnaire, vérifier comment çà marche côté pilotage.)
## Finalisation d'une ue (prio 2)
- diffuser à protools l'évenement "ue finalisée". http ? broker ?