{"info":{"_postman_id":"88561634-aafb-4f8e-bfa9-b99fd9f066b3","name":"GRC360 - Documentation Publique","description":"<html><head></head><body><p>Cette documentation a pour but de vous présenter les principaux concepts utilisés par GRC360 pour mettre à disposition des données.</p>\n<p>Pour commencer a utiliser l'API GRC360 vous avez besoin de :</p>\n<ul>\n<li>Un compte 'Staff' sur la plateforme (Demander a votre administrateur de vous inviter à rejoindre sa collectivité).</li>\n<li>L'identifiant de votre collectivité : le <code>tenantId</code>.</li>\n</ul>\n<p>Si vous ne posséder pas ces éléments vous pouvez contacter votre administrateur ou le <a href=\"https://citopia.atlassian.net/servicedesk/customer/portals\">support GRC360</a>.</p>\n<h2 id=\"spécification-de-la-commune-sur-laquelle-vous-souhaitez-travailler\">Spécification de la commune sur laquelle vous souhaitez travailler</h2>\n<p>GRC360 permet à un seul utilisateur de traiter les données de plusieurs collectivités.</p>\n<p>Pour simplifier l'utilisation de l'API et la répartition des données, l'utilisateur spécifie la collectivité sur laquelle il souhaite travailler dans le <a href=\"https://developer.mozilla.org/fr/docs/Web/HTTP/Headers\">Header HTTP</a> <code>X-Tenant</code>. </p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>X-Tenant: &lt;tenantId&gt;\n</code></pre><p>Ce header doit être fourni dans toutes les requêtes envoyées à GRC360.</p>\n<p><strong>Un compte utilisateur étant utilisé pour travailler sur plusieurs collectivités, il n'est pas nécessaire de fournir ce header lors de l'authentification par exemple.</strong></p>\n<p>S'il n'est pas fourni, GRC360 renvoie l'erreur suivante :</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"message\": \"tenant header is needed\",\n    \"success\": false,\n    \"code\": 400\n}\n</code></pre>\n<h2 id=\"enveloppe-de-retour\">Enveloppe de retour</h2>\n<p>Tous les messages de retour de l'API respectent le format suivant:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Key</th>\n<th>type</th>\n<th>obligatoire</th>\n<th>description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>code</td>\n<td>number</td>\n<td>oui</td>\n<td>le code de retour</td>\n</tr>\n<tr>\n<td>data</td>\n<td>any / any[]</td>\n<td>non</td>\n<td>les données renvoyées par le endpoint</td>\n</tr>\n<tr>\n<td>success</td>\n<td>boolean</td>\n<td>oui</td>\n<td>est ce que l'action est un succès ?</td>\n</tr>\n<tr>\n<td>message</td>\n<td>string</td>\n<td>non</td>\n<td>message complémentaire</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"pagination\">Pagination</h2>\n<p>Pour limiter le nombre d'éléments renvoyés pour chaque requête, la quasi totalité des endpoint de GRC360 renvoyant des données vont implémenter un mécanisme de pagination basé sur les paramètres suivants :</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Paramètre</th>\n<th>Type</th>\n<th>Description</th>\n<th>Valeur par defaut</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>start</td>\n<td>number</td>\n<td>1er Element à renvoyer (commence à 0)</td>\n<td>0</td>\n</tr>\n<tr>\n<td>size</td>\n<td>number</td>\n<td>Nombre d'éléments à renvoyer</td>\n<td>10</td>\n</tr>\n<tr>\n<td>order[{field}]</td>\n<td>DESC/ASC</td>\n<td>Trie les résultats suivant le champs et la direction spécifée</td>\n<td>-</td>\n</tr>\n</tbody>\n</table>\n</div><p>Ces paramètres doivent être passés en tant que <a href=\"https://en.wikipedia.org/wiki/Query_string\">Query String</a>.</p>\n<p><strong>Si aucun paramètre n'est spécifié, GRC360 renvoie par défaut les 10 premiers éléments.</strong></p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"11624583","collectionId":"88561634-aafb-4f8e-bfa9-b99fd9f066b3","publishedId":"TzCV24D9","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"212439","highlight":"2592f0"},"publishDate":"2021-04-12T12:23:18.000Z"},"item":[{"name":"Authentification","item":[{"name":"Authentification par mot de passe","id":"b8480df2-0390-4cb6-9296-8eec2669fd46","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"username\": \"paul.lagent@gmail.com\",\n    \"password\": \"<password>\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.grc360.fr/auth/password","description":"<p>Ce endpoint permet d'obtenir un token valable sur l'environnement GRC360.</p>\n<p>Les droits d'accès et les autorisations de votre compte sont attachées a ce token.</p>\n<p>Le token obtenu doit être utilisé comme <strong>Bearer Token</strong> dans un header de type <code>Authorization</code>.</p>\n<p>En cas d'erreur d'authentification, le serveur renvoie un code 401.</p>\n","urlObject":{"protocol":"https","path":["auth","password"],"host":["api","grc360","fr"],"query":[],"variable":[]}},"response":[{"id":"cc31dd99-8b8d-4d3b-8f86-460ec6266dcd","name":"Authentification réussie","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"username\": \"paul.lagent@gmail.com\",\n    \"password\": \"<password>\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.grc360.fr/auth/password"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"token\": \"<token>\",\n    \"expiration_date\": 1618869600\n}"},{"id":"a0449254-c731-4b0a-93e3-77e4c24faa6d","name":"Echec d'authentification","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"username\": \"paul.lagent@gmail.com\",\n    \"password\": \"<password>\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.grc360.fr/auth/password"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Length","value":"53"},{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Date","value":"Mon, 12 Apr 2021 10:24:33 GMT"},{"key":"Etag","value":"W/\"35-k5eUWeiIhFi1dOSp3RUxLH52OHc\""},{"key":"Server","value":"CitopiaServer/1.0.40"},{"key":"Vary","value":"Accept-Encoding"},{"key":"X-Ds-Version","value":"0.15.0"},{"key":"X-Powered-By","value":"CitopiaServer/1.0.40"},{"key":"X-Request-Token","value":"9f4437e4-1767-4c1e-ba9f-064149f2d1bc"},{"key":"Strict-Transport-Security","value":"max-age=31536000; includeSubdomains; preload"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"X-Frame-Options","value":"allow-from https://jvs-mairistem.fr/"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"UNAUTHORIZED\",\n    \"success\": false,\n    \"code\": 401\n}"}],"_postman_id":"b8480df2-0390-4cb6-9296-8eec2669fd46"}],"id":"461fc9d9-d8ed-4843-acb8-9df1c463307a","description":"<p>Toutes les requêtes envoyées a GRC360 doivent être authentifiées. \nL'utilisateur qui souhaite utiliser l'API doit dans un premier temps récupérer un token qui lui donnera un certain nombre de droits à l'intérieur de l'infrastructure GRC360.</p>\n<h2 id=\"type-dutilisateurs\">Type d'utilisateurs</h2>\n<p>GRC360 compte différents types d'utilisateurs:</p>\n<ul>\n<li>Les usagers de la collectivités qui vont soumettre des demandes sont des <code>users</code>.</li>\n<li>Un agent de la collectivité est appelé <code>staff</code></li>\n</ul>\n<h2 id=\"générer-un-token\">Générer un token</h2>\n<p>Un staff peut générer un <code>token</code> qu'il devra ensuite fournir avec chacune de ses requêtes.</p>\n<p>Il doit appeler le endpoint <code>Authentification par mot de passe</code> documenté ci dessous.</p>\n<p>Le token obtenu doit être fourni dans chaque requête sous la forme d'un <a href=\"https://swagger.io/docs/specification/authentication/bearer-authentication/\">Bearer token</a> dans l'entête HTTP <code>Authorization</code>.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer &lt;token&gt;\n</code></pre>","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"5afa0b5e-f389-4e95-84cb-efef6c25a017","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"412c5ad8-be25-4248-9c74-3a4b75e65344","type":"text/javascript","exec":[""]}}],"_postman_id":"461fc9d9-d8ed-4843-acb8-9df1c463307a"},{"name":"Chargement des objets imbriqués","item":[],"id":"d28cfcb5-b3c9-477b-a5fc-3f8b158f8ac8","description":"<p>Les données renvoyées par GRC360 représente généralement des objets correspondant a des entités. Ces objets peuvent être liés entre eux par des dépendances qu'il faut parcourir.</p>\n<p>Par défaut, GRC360 renvoie uniquement des informations permettant d'identifier les objets imbriqués. </p>\n<p><strong>Exemple : Une demande d'un citoyen renvoyées par l'API</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"id\": 719,\n    \"createdAt\": \"2020-10-30T14:22:03.000Z\",\n    \"updatedAt\": \"2020-10-30T19:51:16.000Z\",\n    \"title\": {\n        \"en\": \"Signaler un incident dans l'espace public\",\n        \"fr\": \"Signaler un incident dans l'espace public\"\n    },\n    \"scenario\": {\n        \"uuid\": \"0781beae-db55-43f0-9060-bf637a937cfc\",\n        \"tenant\": \"b5223afb-e7ae-4637-8c02-f66a409d756a\"\n    },\n    \"service\": {\n        \"uuid\": \"92d02f24-a139-4a36-befe-0ca09698e4a7\",\n        \"tenant\": \"b5223afb-e7ae-4637-8c02-f66a409d756a\"\n    },\n    ...\n</code></pre>\n<p>La demande du citoyen décrit également le service (Démarche en français) utilisé pour transmettre sa demande.\nSi l'on souhaite avoir des informations sur le nom de la démarche utilisé, il faut ensuite aller chercher ces informations en accédant à un autre endpoint.</p>\n<p>Pour simplifier l'accès aux éléments, il est possible de demander à GRC360 de charger le détails de certains champs avant de renvoyer le résultat. Il faut spécifier le header <code>X-Preload</code>.</p>\n<p>Ce header doit contenir le chemin vers les champs à charger séparer par des <code>;</code>. Il est également possible de charger tout ou parties des éléments d'un tableau. </p>\n<p>L'exemple suivant va charger le contenu du scénario et du service :</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>X-Preload: service;scenario\n</code></pre><p>Dans l'exemple précédent, si on effectue la même requête avec le header <code>X-preload</code> GRC360 nous renvoie le résultat suivant:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">    \"id\": 719,\n    \"createdAt\": \"2020-10-30T14:22:03.000Z\",\n    \"updatedAt\": \"2020-10-30T19:51:16.000Z\",\n    \"title\": {\n        \"en\": \"Signaler un incident dans l'espace public\",\n        \"fr\": \"Signaler un incident dans l'espace public\"\n    },\n    \"scenario\": {\n        \"id\": 101,\n        \"uuid\": \"0781beae-db55-43f0-9060-bf637a937cfc\",\n        \"publication\": \"public\",\n        \"createdAt\": \"2020-10-30T19:12:29.000Z\",\n        \"updatedAt\": \"2021-04-12T08:20:20.000Z\",\n        \"slug\": \"75-signalements-usagers\",\n        \"title\": {\n            \"en\": \"Signalements usagers\",\n            \"fr\": \"Signalements usagers\"\n        },\n        ...\n    }\n    \"service\" : {\n        \"uuid\": \"92d02f24-a139-4a36-befe-0ca09698e4a7\",\n        \"id\": 75,\n        \"createdAt\": \"2020-10-30T19:06:47.000Z\",\n        \"updatedAt\": \"2021-04-12T08:20:20.000Z\",\n        \"title\": {\n            \"en\": \"Signaler un incident dans l'espace public\",\n            \"fr\": \"Signaler un incident dans l'espace public\"\n        },\n        ...\n    }\n    ...\n</code></pre>\n<p>Cette fonctionnalité est pratique mais il ne faut pas en abuser, elle augmente le temps nécessaire pour récupérer les données et la taille des messages de retour. Nous vous recommandons de précharger uniquement ce qui est nécessaire.</p>\n<p><strong>L'objet imbriqué ne sera chargé que si l'utilisateur possède les droits suffisants pour y accéder. Il est donc possible que malgré un header correctement spécifié, il ne soit pas possible d'accéder à d'avantage d'informations.</strong></p>\n<h4 id=\"exemple-de-valeurs-valides-pour-le-header-x-preload\">Exemple de valeurs valides pour le header X-Preload</h4>\n<ul>\n<li><code>cc;aa.bb.bb;dd.bb</code></li>\n<li><code>array[-1].secondArray[*].value</code></li>\n</ul>\n<h4 id=\"champs-spécifiques\">Champs spécifiques</h4>\n<p>Sur certains objets, il est possible d'utiliser certains <em>champs invisible</em> pour récupérer des informations supplémentaires ou déjà mises en forme.</p>\n<p>Ces éléments seront détaillés au cas par cas pour chaque type d'entité dans le chapitre correspondant.</p>\n","_postman_id":"d28cfcb5-b3c9-477b-a5fc-3f8b158f8ac8","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api_token}}"}]},"isInherited":true,"source":{"_postman_id":"88561634-aafb-4f8e-bfa9-b99fd9f066b3","id":"88561634-aafb-4f8e-bfa9-b99fd9f066b3","name":"GRC360 - Documentation Publique","type":"collection"}}},{"name":"Demandes des usagers (cases)","item":[{"name":"Recherche d'une ou plusieurs demandes /cases","event":[{"listen":"test","script":{"id":"1c787872-ff13-4935-ae79-54d377f5bc15","exec":["\r","pm.test(\"Successful request\", function () {\r","    pm.expect(pm.response.code).to.be.oneOf([200]);\r","});"],"type":"text/javascript"}}],"id":"8b562269-e12f-48c8-9165-791b70117539","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"},{"key":"X-Tenant","type":"text","value":"{{tenantId}}"},{"key":"X-Preload","type":"text","value":"statuses;form;history;submission"}],"body":{"mode":"raw","raw":""},"url":"https://api.grc360.fr/api/v1/cases?created_at[before]=2019-10-01T22:00:00.000Z&created_at[after]=2019-09-30T22:00:00.000Z&order[createdAt]=DESC&title_fr=Poser une question&status=statusDefault_new&identityUuid=b2266612-d435-4eb0-9608-a7eb018ee13e","description":"<p>Ce endpoint permet d'accéder à une liste de demandes d'usagers.</p>\n<p>L'utilisateur ne peux que rechercher parmi les demandes auxquelles il a accès.</p>\n<p>Il est possible de spécifier des filtres sur certains champs de la demande au format QueryString.</p>\n<p>Les exemples ci-contre vous montrent comment réaliser des recherches personnalisées.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api_token}}"}]},"isInherited":true,"source":{"_postman_id":"88561634-aafb-4f8e-bfa9-b99fd9f066b3","id":"88561634-aafb-4f8e-bfa9-b99fd9f066b3","name":"GRC360 - Documentation Publique","type":"collection"}},"urlObject":{"protocol":"https","path":["api","v1","cases"],"host":["api","grc360","fr"],"query":[{"key":"created_at[before]","value":"2019-10-01T22:00:00.000Z"},{"key":"created_at[after]","value":"2019-09-30T22:00:00.000Z"},{"key":"order[createdAt]","value":"DESC"},{"description":{"content":"<p>Titre de la demande, par defaut : Nom de la démarche  utilisée pour réaliser la demande</p>\n","type":"text/plain"},"key":"title_fr","value":"Poser une question"},{"description":{"content":"<p>Etat de la demande: </p>\n<ul>\n<li>statusDefault_new</li>\n<li>statusDefault_pending</li>\n<li>statusDefault_differed</li>\n<li>statusDefault_ended</li>\n<li>statusDefault_canceled</li>\n<li>statusDefault_rejected</li>\n</ul>\n","type":"text/plain"},"key":"status","value":"statusDefault_new"},{"description":{"content":"<p>UUID d'une identité</p>\n","type":"text/plain"},"key":"identityUuid","value":"b2266612-d435-4eb0-9608-a7eb018ee13e"}],"variable":[]}},"response":[{"id":"1514f6e7-df99-4afe-9515-c38d1801f7a1","name":"Entre deux dates","originalRequest":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"},{"key":"X-Tenant","type":"text","value":"<tenantId>"},{"key":"X-Preload","type":"text","value":"statuses;form;history;submission"},{"key":"X-Tenant","type":"text","value":"a38519fa-9422-4ed9-a12a-872f5a675f78","disabled":true}],"body":{"mode":"raw","raw":""},"url":{"raw":"https://api.grc360.fr/api/v1/cases?created_at[before]=2019-10-01T22:00:00.000Z&created_at[after]=2019-09-30T22:00:00.000Z&order[createdAt]=DESC","protocol":"https","host":["api","grc360","fr"],"path":["api","v1","cases"],"query":[{"key":"created_at[before]","value":"2019-10-01T22:00:00.000Z","type":"text"},{"key":"created_at[after]","value":"2019-09-30T22:00:00.000Z","type":"text"},{"key":"order[createdAt]","value":"DESC","type":"text"}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":null}],"_postman_id":"8b562269-e12f-48c8-9165-791b70117539"},{"name":"Accés à une demande /cases/:uuid","id":"25ffd0d5-a3b5-416f-bf76-f77fe5ecfdf6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"X-Tenant","value":"{{tenantId}}","type":"text"},{"key":"X-Preload","value":"service;submission","type":"text"}],"body":{"mode":"raw","raw":""},"url":"https://api-pp.grc360.fr/api/v1/cases/:uuid","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api_token}}"}]},"isInherited":true,"source":{"_postman_id":"88561634-aafb-4f8e-bfa9-b99fd9f066b3","id":"88561634-aafb-4f8e-bfa9-b99fd9f066b3","name":"GRC360 - Documentation Publique","type":"collection"}},"urlObject":{"protocol":"https","path":["api","v1","cases",":uuid"],"host":["api-pp","grc360","fr"],"query":[],"variable":[{"type":"string","value":"36386344-23ac-488c-afb8-d0dc2792aeae","key":"uuid"}]}},"response":[],"_postman_id":"25ffd0d5-a3b5-416f-bf76-f77fe5ecfdf6"},{"name":"Historique d'une demande","id":"c6f0c769-433d-49fc-9ed5-913959705139","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-Tenant","value":"{{current_tenant}}","type":"text"}],"url":"{{api_gateway_url}}/api/v1/cases/:uuidCase/history","description":"<p>Ce endpoint permet d'accéder a l'historique des événements liés à une demande.</p>\n<p>Le type de l'événement est déterminé par la valeur de son champ <code>title</code>.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"title\": {\n  \"en\": \"CaseUpdate\",\n  \"fr\": \"CaseUpdate\"\n}\n</code></pre>\n<p>Les valeurs pour <code>fr</code> et <code>en</code> sont identiques, vous pouvez donc utiliser l'une ou l'autre de ces valeurs.</p>\n<p><strong>Valeurs possibles :</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Type de l'événement</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>CaseBegin</td>\n<td>Création de la demande</td>\n</tr>\n<tr>\n<td>CaseUpdate</td>\n<td>Mise à jour de la demande</td>\n</tr>\n<tr>\n<td>CaseStatusChanged</td>\n<td>Changement du status de la demande</td>\n</tr>\n<tr>\n<td>UpdateSubmission</td>\n<td>Mise à jour / correction de la demande initiale</td>\n</tr>\n<tr>\n<td>ChangeTaskDueDate</td>\n<td>Modification de la date d'échéance de la demande</td>\n</tr>\n<tr>\n<td>CaseTask</td>\n<td>Traitement d'une tâche associée à la demande</td>\n</tr>\n<tr>\n<td>reAffectTask</td>\n<td>La tâche associée à la demande a été transférée</td>\n</tr>\n<tr>\n<td>ValidateDocumentCase</td>\n<td>Validation des documents de la demande</td>\n</tr>\n<tr>\n<td>EmailIndividual</td>\n<td>Envoi d'un email à l'usager</td>\n</tr>\n<tr>\n<td>NoteCase</td>\n<td>Ajout d'une note à la demande</td>\n</tr>\n<tr>\n<td>NoteCitizen</td>\n<td>Ajout d'un commentaire public</td>\n</tr>\n<tr>\n<td>CaseEnd</td>\n<td>Cloture de la demande</td>\n</tr>\n</tbody>\n</table>\n</div><p>Des données liées à chacun de ces événements sont présent dans <code>data.fr</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api_token}}"}]},"isInherited":true,"source":{"_postman_id":"88561634-aafb-4f8e-bfa9-b99fd9f066b3","id":"88561634-aafb-4f8e-bfa9-b99fd9f066b3","name":"GRC360 - Documentation Publique","type":"collection"}},"urlObject":{"path":["api","v1","cases",":uuidCase","history"],"host":["{{api_gateway_url}}"],"query":[],"variable":[{"description":{"content":"<p>UUID de la demande</p>\n","type":"text/plain"},"type":"string","value":"","key":"uuidCase"}]}},"response":[],"_postman_id":"c6f0c769-433d-49fc-9ed5-913959705139"},{"name":"Historique d'une demande filtré par type","id":"60bd4599-8877-4302-94da-888474e59c38","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"X-Tenant","type":"text","value":"{{current_tenant}}"}],"url":"{{api_gateway_urld}}/api/v1/cases/:uuidCase/history/:type","description":"<p>Permet d'accéder à l'historique d'une demande en récupérant un seul type d'événement.</p>\n<p>Les différents types d'événements sont détaillés dans la section précédente <em>Historique d'une demande</em>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api_token}}"}]},"isInherited":true,"source":{"_postman_id":"88561634-aafb-4f8e-bfa9-b99fd9f066b3","id":"88561634-aafb-4f8e-bfa9-b99fd9f066b3","name":"GRC360 - Documentation Publique","type":"collection"}},"urlObject":{"path":["api","v1","cases",":uuidCase","history",":type"],"host":["{{api_gateway_urld}}"],"query":[],"variable":[{"description":{"content":"<p>UUID de la demande</p>\n","type":"text/plain"},"type":"string","value":"","key":"uuidCase"},{"description":{"content":"<p>Un type parmis : </p>\n<p>CaseBegin\nCaseStatusChanged\nEmailIndividual\nValidateDocumentCase\nCaseUpdate\nCaseEnd\nreAffectTask\nNoteCase\nNoteCitizen\nCaseTask\nUpdateSubmission\nChangeTaskDueDate</p>\n","type":"text/plain"},"type":"string","value":"","key":"type"}]}},"response":[],"_postman_id":"60bd4599-8877-4302-94da-888474e59c38"}],"id":"04b2678e-4e5d-4b3a-ba99-7e7b0a669dfc","description":"<p>Les usagers des collectivités peuvent faire remonter à l'administration de leur communes des demandes (appelés cases dans GRC360) directement via GRC360 ou par le biais des produits <strong>Attractive City</strong> ou <strong>Mon Espace Citoyen</strong>.</p>\n<p>L'API GRC360 permet d'accéder au détail de ces demandes.</p>\n<p>L'ensemble des endpoints associés aux cases respectent le scéma d'url suivant : \n<code>https://api.grc360.fr/api/&lt;version&gt;/cases</code></p>\n<h2 id=\"modèle-de-donnée\">Modèle de donnée</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Champ</th>\n<th>Description</th>\n<th>Pré-chargeable ? (X-Preload)</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>uuid</td>\n<td>Identifiant de la demande</td>\n<td>Non</td>\n</tr>\n<tr>\n<td>tenant</td>\n<td>Identifiant de la collectivité à laquelle est accrochée la demande</td>\n<td>Non</td>\n</tr>\n<tr>\n<td>customId</td>\n<td>Numéro de suivi de la demande</td>\n<td>Non</td>\n</tr>\n<tr>\n<td>title</td>\n<td>Titre de la demande, éventuellement traduit</td>\n<td>Non</td>\n</tr>\n<tr>\n<td>identity / identityUuid</td>\n<td>Utilisateur à l'origine de la demande</td>\n<td>Oui, clef <code>identity</code> pour charger l'utilisateur à l'origine de la demande</td>\n</tr>\n<tr>\n<td>owner / ownerUuid</td>\n<td>Propriétaire de la demande</td>\n<td>Oui, clef <code>owner</code> pour charger le propriétaire</td>\n</tr>\n<tr>\n<td>status</td>\n<td>Etat de la demande</td>\n<td>Non</td>\n</tr>\n<tr>\n<td>statuses</td>\n<td>Tableau des différents statuts pris par la demande</td>\n<td>Oui</td>\n</tr>\n<tr>\n<td>tags</td>\n<td>Tableau des tags associés</td>\n<td>Oui</td>\n</tr>\n<tr>\n<td>submission</td>\n<td>Contenu du formulaire soumis par l'usager</td>\n<td>Oui</td>\n</tr>\n<tr>\n<td>form</td>\n<td>Formulaire utilisé pour créer la <code>submission</code></td>\n<td>Oui</td>\n</tr>\n<tr>\n<td>service</td>\n<td>Démarche utilisée pour formuler la demande</td>\n<td>Oui</td>\n</tr>\n<tr>\n<td>scenario</td>\n<td>Scénario de la démarche utilisé pour formuler la demande</td>\n<td>Oui</td>\n</tr>\n<tr>\n<td>documents</td>\n<td>Tableau des documents liés à la demande</td>\n<td>Non</td>\n</tr>\n<tr>\n<td>task</td>\n<td>Dernière tâche associée à la demande</td>\n<td>Oui</td>\n</tr>\n<tr>\n<td>sumup</td>\n<td>Résumé clef/valeur des champ importants</td>\n<td>Oui (Obligatoire)</td>\n</tr>\n<tr>\n<td>history</td>\n<td>Historique des événements liés à la demande</td>\n<td>Oui (Obligatoire)</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"champs-x-preload-spécifiques\">Champs X-Preload spécifiques</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Champ</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>sumup</td>\n<td>Renvoi un champ sumup qui contient un résumé de la demande au format clef valeur tel qu'affiché dans l'application mobile ou dans un mail.</td>\n</tr>\n<tr>\n<td>history</td>\n<td>Renvoi un champ history qui contient l'historique de tous les événements liées à la demande</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"sumup\">sumup</h4>\n<p>Le champ sumup contient des informations clef/valeur regroupées dans un tableau.</p>\n<p>Les valeurs présentent dans le sumup sont <strong>dynamiques</strong> en fonction du formulaire configuré pour réaliser la demande.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\n\"sumup\": [\n    {\n        \"label\": \"Catégorie\",\n        \"type\": \"string\",\n        \"value\": \"Propreté\"\n    },\n    {\n        \"label\": \"Sous catégorie\",\n        \"type\": \"string\",\n        \"value\": \"Propreté du sol/Trottoirs sales\"\n    },\n    {\n        \"label\": \"Adresse\",\n        \"type\": \"address\",\n        \"value\": \"2 Rue de la paix, 75001 Paris, France \"\n    },\n    {\n        \"label\": \"Informations complémentaires\",\n        \"type\": \"html\",\n        \"value\": \"Bonjour, ...&lt;Descriptif de la demande&gt;\"\n    },\n    {\n        \"label\": \"Priorité\",\n        \"type\": \"string\",\n        \"value\": \"Très gênant\"\n    }\n</code></pre>\n<h4 id=\"history\">history</h4>\n<p>Ce champ renvoi l'historique de tout les événements liées à la demande.</p>\n<p>Il est possible d'utiliser la valeur <code>title</code> de chacun des événements pour identifier leur type.</p>\n<p>Les valeurs renvoyés dans le champs history sont identiques au retour du endpoint <em>Historique d'une demande</em>. Pour plus d'information sur la structure des données, merci de vous référer à ce endpoint.</p>\n","_postman_id":"04b2678e-4e5d-4b3a-ba99-7e7b0a669dfc","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api_token}}"}]},"isInherited":true,"source":{"_postman_id":"88561634-aafb-4f8e-bfa9-b99fd9f066b3","id":"88561634-aafb-4f8e-bfa9-b99fd9f066b3","name":"GRC360 - Documentation Publique","type":"collection"}}},{"name":"Migration depuis l'API AttractiveCity","item":[],"id":"1709b1b3-4cbc-4c47-b625-68a224cd12eb","description":"<p>Le produit <strong>Attractive City</strong> offrait la possibilité de collecter certaines données de votre collectivité via l'utilisation d'une API.\nVous retrouverez ci-dessous des instructions de migration pour réaliser l'équivalent de ces données dans <strong>GRC360</strong>.</p>\n<h2 id=\"demandes-usagers\">Demandes usagers</h2>\n<p>Le tableau ci-dessous fait correspondre les champs d'une demande dans <strong>Attractive City</strong> vers ceux de <strong>GRC360</strong>.</p>\n<p>La notation suivante : <code>sumup[label='Catégorie'].value</code> désigne </p>\n<ul>\n<li>Le champ <code>sumup</code> de type tableau</li>\n<li>A l'intérieur de ce tableau, les éléments correspondant au sélecteur <code>label='Catégorie</code></li>\n<li>A l'intérieur de ces éléments, le champ value</li>\n</ul>\n<p><strong>Pour pouvoir accéder à l'ensemble de ces champs, vous devez utiliser un header <code>X-Preload</code> contenant au moins les valeurs suivantes : <code>sumup</code>.</strong></p>\n<p>Cette documentation est donnée à titre informatif. Dans GRC360 le contenu d'une demande est fonction du formulaire utilisé pour la créer. Lors de votre migration depuis <strong>Attractive City</strong> vers <strong>GRC360</strong> nos équipes ont du essayer de coller au plus proche à ce modèle, cependant certaines différences peuvent exister pour votre cas.\nNos équipes peuvent vous fournir la configuration précise utilisée pour votre collectivité.\nVous retrouverez tous les champs du formulaire dans le <code>sumup</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Champ Attractive City</th>\n<th>Description</th>\n<th>Chemin GRC360</th>\n<th>Format</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>dateDemande</td>\n<td>Date au format JJ/MM/AAAA hh:mm</td>\n<td>createdAt</td>\n<td>Date au format ISO8601 yyyy-MM-dd'T'HH:mm:ss.SSS'Z'</td>\n</tr>\n<tr>\n<td>categorie</td>\n<td>Catégorie</td>\n<td>sumup[label='Catégorie'].value</td>\n<td>texte</td>\n</tr>\n<tr>\n<td>sousCategorie</td>\n<td>Sous catégorie</td>\n<td>sumup[label='Sous catégorie'].value</td>\n<td>texte</td>\n</tr>\n<tr>\n<td>objet</td>\n<td>Objet de la demande</td>\n<td>Fonction de la configuration du formulaire</td>\n<td></td>\n</tr>\n<tr>\n<td>commentaire</td>\n<td>Commentaire</td>\n<td>sumup[label='Informations complémentaires'].value</td>\n<td></td>\n</tr>\n<tr>\n<td>adresse</td>\n<td>Adresse ou se trouve le signalement</td>\n<td>sumup[label='Adresse'].value</td>\n<td>texte</td>\n</tr>\n<tr>\n<td>positionMap</td>\n<td>objet positionMap (Voir ci-dessous)</td>\n<td>Non supporté pour le moment.</td>\n<td></td>\n</tr>\n<tr>\n<td>image1Url</td>\n<td>Image1 de la demande</td>\n<td>documents[field='photos'].url</td>\n<td>lien</td>\n</tr>\n<tr>\n<td>image2Url</td>\n<td>Image2 de la demande</td>\n<td>Idem</td>\n<td>lien</td>\n</tr>\n<tr>\n<td>image3Url</td>\n<td>Image3 de la demande</td>\n<td>Idem (Il n'y a plus de limite de nombre dans GRC360)</td>\n<td>lien</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"etats-de-la-demande\">Etats de la demande</h3>\n<p>Vous pouvez accéder aux différents états pris par la demande directement depuis l'objet de la demande.</p>\n<p><strong>Important :</strong> L'accès à ces données nécessite de spécifier au moins la valeur <code>statuses</code>  dans le <em>header</em> de pré-chargement <code>X-Preload</code>, plusieurs valeurs doivent être séparée par des <code>;</code>.</p>\n<p>L'historique des états de la demande se trouve dans le champ <code>statuses</code> sous la forme d'un tableau. Chaque élément de ce tableau correspond à un changement d'état, la structure de ces changement d'état est spécifié ci-dessous.</p>\n<p>Voici le tableau de correspondance entre <strong>Attractive City</strong> et <strong>GRC360</strong> :</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Attractive City</th>\n<th>Description</th>\n<th>Chemin GRC360</th>\n<th>Format</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>date</td>\n<td>au format JJ/MM/AAAA hh:mm</td>\n<td>createdAt</td>\n<td>Date au format ISO8601 yyyy-MM-dd'T'HH:mm:ss.SSS'Z'</td>\n</tr>\n<tr>\n<td>libelle</td>\n<td>Libellé de l’état</td>\n<td>title.fr ou title.fr_public</td>\n<td>texte</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Note :</strong> </p>\n<ul>\n<li>Le chemin <code>title.fr</code> correspond au nom de l'état pour les agents utilisant GRC360 et traitant la demande.</li>\n<li>Le chemin <code>title.fr_public</code> à celui qui sera visible par le citoyen</li>\n</ul>\n<p>Il est possible d'obtenir plus d'informations un historique plus précis des événements liés à la demande en utilisant la section <em>Historique d'une demande</em>.</p>\n<hr />\n<h3 id=\"usager\">Usager</h3>\n<p><strong>Important : N’oubliez pas de faire le nécessaire auprès de la CNIL pour être en conformité avec la protection des données de l’usager. (Régime de déclaration dite “normal“)</strong></p>\n<p>Pour chaque demande, vous pouvez accéder aux informations de l'usager ayant réalisé la demande.</p>\n<p><strong>Important :</strong> L'accès à ces données nécessite de spécifier au moins la valeur <code>identity.personas</code>  dans le <em>header</em> de pré-chargement <code>X-Preload</code>, plusieurs valeurs doivent être séparée par des <code>;</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Champ Attractive City</th>\n<th>Description</th>\n<th>Chemin GRC360</th>\n<th>Format</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Typedemandeur</td>\n<td>\"0 : Particulier (Par défaut)</td>\n<td>identity.type</td>\n<td>Individual</td>\n</tr>\n<tr>\n<td>nom</td>\n<td>Nom du demandeur</td>\n<td>identity.personas[0].firstName</td>\n<td>text</td>\n</tr>\n<tr>\n<td>prenom</td>\n<td>Prénom du demandeur</td>\n<td>identity.personas[0].lastName</td>\n<td>text</td>\n</tr>\n<tr>\n<td>email</td>\n<td>Email du demandeur</td>\n<td>identity.personas[0].email</td>\n<td>email</td>\n</tr>\n<tr>\n<td>telephone</td>\n<td>Numéro de téléphone du demandeur</td>\n<td>identity.personas[0].data.phone</td>\n<td>text</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"1709b1b3-4cbc-4c47-b625-68a224cd12eb","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api_token}}"}]},"isInherited":true,"source":{"_postman_id":"88561634-aafb-4f8e-bfa9-b99fd9f066b3","id":"88561634-aafb-4f8e-bfa9-b99fd9f066b3","name":"GRC360 - Documentation Publique","type":"collection"}}}],"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{api_token}}"}]}},"event":[{"listen":"prerequest","script":{"id":"075bf18a-31dc-4c47-9003-e1ca993981e2","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"6bcf581a-eec5-499b-b80c-b5659ec0d23b","type":"text/javascript","exec":[""]}}]}