---
tags: 🐔 construction cocorico 🐔, Protools
---
# ERA x Protools for QV end-points : interfaçage avec Cocorico 🐔
## Get UES Global x enquete /api/{campaign}/survey-units
:new: attribut dans le contact :
- **externalId**: sert à identifier d'un point de vue métier un contact et permet de faire le lien entre un contact SSM/DARES/autre et le contact présent dans la plateforme.
```json
{
"content":[
{
"idSU": "1231234544",
"idPartition": "LOT_1", // LOT_1 doit être cohérent avec celui créé dans Protools
"contacts": [
{"externalId":"ABCD", "idec": "peut être null"},
{"externalId": "EFGH", "idec": "peut être null"}
]
},
{
"idSU": "1231234545",
"idPartition": "LOT_2", // LOT_1 doit être cohérent avec celui créé dans Protools
"contacts": [
{"externalId":"ABCD", "idec": "peut être null"},
{"externalId": "EFGH", "idec": "peut être null"}
]
}
]
}
```
### Actions Protools
:::warning
:warning: L'identifiant "idPartition" existe déjà dans Protools (créé par humain avant l'intégration de l'échantillon, il ajoute également quel modèle de questionnaire est associé à la partition)
**Contact**
- Si idec -> il l'existe déjà, donc on ne crée pas de contact
- Sinon on créer un contact avec externalId -> on récupère son Idec qu'on l'associe quelque part avec externalId pour le lier à contact réel.
(Table d'assocication temporaire externalId <-> idec)
:::
## Get Ue Unitaire /api/{campaign}/survey-units/{idSU}
Presque Passe plat
:::warning
**Attention**
Liste des variables à valoriser pour chaque UE:
- questionning.questionnaireId : définit par l'utilisteur "Dans telle partition il y aura tel model"
- pilotage.model : définit par l'utilisteur "Dans telle partition il y aura tel model"
- pilotage.contacts.idec : seulement si absent :
- absent : on le valorise grâce à la table de passage (externalId <-> idec)
- présent : rien à faire
L'objet suivant est donc à **valoriser** potentiellement pour chaque appel unitaire
:::
```json
{
"questionning" :{
"comment": {},
"data": {
"EXTERNAL":{
"externe_dans_boucle": [
null,
"youhou",
null
]
},
"COLLECTED":{},
"CALCULTATED":{}
},
"id": "string",
"personalization": {
"whoAnswer1": "L'entreprise bidule chouette 1", // règle de calcul dans un 2nd temps porté par Protools ?
"whoAnswer2": "L'entreprise bidule chouette 2",
"whoAnswer3": "L'entreprise bidule chouette 3"
},
"questionnaireId": "model-aqv-2022", // à ajouter par Protools car définit par l'utilisteur "Dans telle partition il y aura tel model"
"stateData": {}
},
"pilotage" : {
"model":"model-aqv-2022" // à ajouter par Protools car définit par l'utilisteur "Dans telle partition il y aura tel model"
"idPartition":"AQV-2023-X00-01",
"surveyUnit":{
"id":"unique",
"identificationCode" : "SIRET !!!", // identificationCode
"address":{
....
}
},
"contacts":[
{
"externalId":"AQV_ABCD",
"idec": "sdkfjds" // à ajouter par Protools
"isMain": ""
"address":{
}
// contactsEvents à créer automatiquement
}
],
}
}
```
## Communications
:::info
- Pour savoir à quel contact envoyé les courriers/mails, on intérroge Coleman-Pilotage pour savoir qui est le contact principal.
- A quel échance peut-on créer le end-point pilotage
- __/api/survey-units/{id}/main-contact__ (à challenge avec Betty et Nicolas T)
- Ajouter un endpoint pour savoir si une UE d'une campagne est à relancer (true/false) => cf ce qui a été fait sur ColemanV1
:::