--- 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 ?