{
  "info": {
    "name": "AYAEL KYC",
    "description": "Service de vérification d'identité AYAEL, partagé entre nos applications.\n\n## Avant de commencer\n\n1. Choisissez l'environnement **AYAEL KYC — bac à sable**.\n2. Renseignez `api_key` avec la clé remise pour votre application.\n\n## Authentification\n\nUn seul en-tête : `X-API-Key`. La clé identifie **l'application appelante**, pas un utilisateur — c'est elle qui détermine à quels dossiers vous avez accès.\n\n**Cette clé ne doit jamais partir dans une application mobile ou une page web.** Elle vit sur votre serveur, qui relaie les appels après avoir authentifié son propre utilisateur. Une clé embarquée dans un binaire mobile est extractible, et donne accès à tous les dossiers de votre application.\n\n## Le parcours\n\nCréer le dossier → déposer les images → finaliser → **attendre le webhook**.\n\nLa finalisation répond tout de suite ; la vérification dure de quelques secondes à deux minutes. Le résultat arrive par webhook signé, pas par interrogation répétée.\n\n## Statuts\n\n| Statut | Sens |\n|---|---|\n| `IN_PROGRESS` | dossier ouvert, rien de soumis |\n| `SUBMITTED` | soumis, vérification automatique en cours |\n| `UNDER_REVIEW` | contrôles terminés, un opérateur doit trancher |\n| `APPROVED` | identité vérifiée |\n| `CORRECTION_REQUIRED` | l'utilisateur doit refaire une étape, `correction_reason` dit laquelle |\n| `REJECTED` | refusé |\n| `CANCELLED` | vérification annulée par un opérateur, parcours remis à zéro |\n\nTraitez un statut inconnu sans échouer : la liste peut s'allonger.\n",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "apikey",
    "apikey": [
      {
        "key": "key",
        "value": "X-API-Key",
        "type": "string"
      },
      {
        "key": "value",
        "value": "{{api_key}}",
        "type": "string"
      },
      {
        "key": "in",
        "value": "header",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "case_id",
      "value": "",
      "description": "Rempli automatiquement par « 1. Créer le dossier »."
    },
    {
      "key": "user_id",
      "value": "utilisateur-test-1",
      "description": "Identifiant utilisateur chez VOUS."
    },
    {
      "key": "case_id_autre_app",
      "value": "",
      "description": "Pour le test de cloisonnement."
    },
    {
      "key": "document_id",
      "value": "",
      "description": "Rempli automatiquement par « Lister les pièces »."
    }
  ],
  "item": [
    {
      "name": "Parcours de vérification",
      "item": [
        {
          "name": "1. Créer le dossier",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/kyc/cases",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "kyc",
                "cases"
              ]
            },
            "description": "Ouvre un dossier de vérification pour un utilisateur de VOTRE application.\n\n`user_id` est l'identifiant tel que votre application le connaît : AYAEL ne le réutilise jamais pour désigner quelqu'un d'une autre application. L'application appelante est déduite de la clé, jamais envoyée dans le corps.\n\nLe `case_id` de la réponse est enregistré automatiquement dans la variable `case_id` pour les requêtes suivantes.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"user_id\": \"{{user_id}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"dossier créé\", () => pm.response.to.have.status(200));",
                  "const d = pm.response.json();",
                  "pm.collectionVariables.set(\"case_id\", d.id);",
                  "console.log(\"case_id =\", d.id);"
                ]
              }
            }
          ]
        },
        {
          "name": "2. Pièce d'identité — recto",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{base_url}}/kyc/cases/{{case_id}}/document?kind=DOC_FRONT",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "kyc",
                "cases",
                "{{case_id}}",
                "document"
              ],
              "query": [
                {
                  "key": "kind",
                  "value": "DOC_FRONT"
                }
              ]
            },
            "description": "Dépose une image de type `DOC_FRONT`. **Obligatoire** : c'est la seule image lue par l'OCR et comparée au selfie.\n\nLe `kind` passe en paramètre d'URL, le fichier en `multipart/form-data` sous la clé `file`.\n\nUn dossier appartenant à une autre application répond **404** — jamais 403, qui confirmerait son existence.",
            "body": {
              "mode": "formdata",
              "formdata": [
                {
                  "key": "file",
                  "type": "file",
                  "src": [],
                  "description": "Image JPEG ou PNG. Postman demande de choisir un fichier local."
                }
              ]
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"pièce acceptée\", () => pm.response.to.have.status(200));"
                ]
              }
            }
          ]
        },
        {
          "name": "3. Pièce d'identité — verso",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{base_url}}/kyc/cases/{{case_id}}/document?kind=DOC_BACK",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "kyc",
                "cases",
                "{{case_id}}",
                "document"
              ],
              "query": [
                {
                  "key": "kind",
                  "value": "DOC_BACK"
                }
              ]
            },
            "description": "Dépose une image de type `DOC_BACK`. Facultatif : conservé au dossier, mais aucun contrôle ne le lit aujourd'hui.\n\nLe `kind` passe en paramètre d'URL, le fichier en `multipart/form-data` sous la clé `file`.\n\nUn dossier appartenant à une autre application répond **404** — jamais 403, qui confirmerait son existence.",
            "body": {
              "mode": "formdata",
              "formdata": [
                {
                  "key": "file",
                  "type": "file",
                  "src": [],
                  "description": "Image JPEG ou PNG. Postman demande de choisir un fichier local."
                }
              ]
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"pièce acceptée\", () => pm.response.to.have.status(200));"
                ]
              }
            }
          ]
        },
        {
          "name": "4. Selfie",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{base_url}}/kyc/cases/{{case_id}}/document?kind=SELFIE",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "kyc",
                "cases",
                "{{case_id}}",
                "document"
              ],
              "query": [
                {
                  "key": "kind",
                  "value": "SELFIE"
                }
              ]
            },
            "description": "Dépose une image de type `SELFIE`. **Obligatoire** : sert à la comparaison faciale avec le recto.\n\nLe `kind` passe en paramètre d'URL, le fichier en `multipart/form-data` sous la clé `file`.\n\nUn dossier appartenant à une autre application répond **404** — jamais 403, qui confirmerait son existence.",
            "body": {
              "mode": "formdata",
              "formdata": [
                {
                  "key": "file",
                  "type": "file",
                  "src": [],
                  "description": "Image JPEG ou PNG. Postman demande de choisir un fichier local."
                }
              ]
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"pièce acceptée\", () => pm.response.to.have.status(200));"
                ]
              }
            }
          ]
        },
        {
          "name": "5. Vivacité — avant",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{base_url}}/kyc/cases/{{case_id}}/document?kind=LIVENESS_BEFORE",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "kyc",
                "cases",
                "{{case_id}}",
                "document"
              ],
              "query": [
                {
                  "key": "kind",
                  "value": "LIVENESS_BEFORE"
                }
              ]
            },
            "description": "Dépose une image de type `LIVENESS_BEFORE`. Nécessaire seulement si vous faites passer un défi de vivacité.\n\nLe `kind` passe en paramètre d'URL, le fichier en `multipart/form-data` sous la clé `file`.\n\nUn dossier appartenant à une autre application répond **404** — jamais 403, qui confirmerait son existence.",
            "body": {
              "mode": "formdata",
              "formdata": [
                {
                  "key": "file",
                  "type": "file",
                  "src": [],
                  "description": "Image JPEG ou PNG. Postman demande de choisir un fichier local."
                }
              ]
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"pièce acceptée\", () => pm.response.to.have.status(200));"
                ]
              }
            }
          ]
        },
        {
          "name": "6. Vivacité — pendant",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{base_url}}/kyc/cases/{{case_id}}/document?kind=LIVENESS_DURING",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "kyc",
                "cases",
                "{{case_id}}",
                "document"
              ],
              "query": [
                {
                  "key": "kind",
                  "value": "LIVENESS_DURING"
                }
              ]
            },
            "description": "Dépose une image de type `LIVENESS_DURING`. Idem.\n\nLe `kind` passe en paramètre d'URL, le fichier en `multipart/form-data` sous la clé `file`.\n\nUn dossier appartenant à une autre application répond **404** — jamais 403, qui confirmerait son existence.",
            "body": {
              "mode": "formdata",
              "formdata": [
                {
                  "key": "file",
                  "type": "file",
                  "src": [],
                  "description": "Image JPEG ou PNG. Postman demande de choisir un fichier local."
                }
              ]
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"pièce acceptée\", () => pm.response.to.have.status(200));"
                ]
              }
            }
          ]
        },
        {
          "name": "7. Vivacité — après",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{base_url}}/kyc/cases/{{case_id}}/document?kind=LIVENESS_AFTER",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "kyc",
                "cases",
                "{{case_id}}",
                "document"
              ],
              "query": [
                {
                  "key": "kind",
                  "value": "LIVENESS_AFTER"
                }
              ]
            },
            "description": "Dépose une image de type `LIVENESS_AFTER`. Idem.\n\nLe `kind` passe en paramètre d'URL, le fichier en `multipart/form-data` sous la clé `file`.\n\nUn dossier appartenant à une autre application répond **404** — jamais 403, qui confirmerait son existence.",
            "body": {
              "mode": "formdata",
              "formdata": [
                {
                  "key": "file",
                  "type": "file",
                  "src": [],
                  "description": "Image JPEG ou PNG. Postman demande de choisir un fichier local."
                }
              ]
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"pièce acceptée\", () => pm.response.to.have.status(200));"
                ]
              }
            }
          ]
        },
        {
          "name": "8. Finaliser la soumission",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/kyc/cases/{{case_id}}/submit",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "kyc",
                "cases",
                "{{case_id}}",
                "submit"
              ]
            },
            "description": "Clôt la saisie et lance la vérification. **Répond immédiatement** : les contrôles (doublons, OCR, comparaison faciale, vivacité) tournent en tâche de fond et le résultat arrive par webhook.\n\n`declared_data` : ce que l'utilisateur a saisi. `first_name`, `last_name` et `dob` (format `AAAA-MM-JJ`) alimentent la détection de doublons et la comparaison avec ce qui est lu sur la pièce. `phone` et `email` sont facultatifs.\n\n`liveness_challenge` : `BLINK` ou `TURN`, uniquement si vous avez déposé les trois images de vivacité. À omettre sinon.\n\n**Idempotent tant que la vérification tourne** : renvoyé pendant que le dossier est `SUBMITTED`, il répond 200 sans relancer la vérification ni produire une deuxième notification. Une fois le dossier vérifié, il répond **409** : un dossier ne se vérifie qu'une fois. Pour faire reprendre quelqu'un après une correction, ouvrez un NOUVEAU dossier avec le même `user_id`.\n\nStatut après succès : `SUBMITTED`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"declared_data\": {\n    \"first_name\": \"Aya\",\n    \"last_name\": \"Kouassi\",\n    \"dob\": \"1992-04-17\",\n    \"phone\": \"+2250700000000\",\n    \"email\": \"aya.kouassi@example.com\"\n  },\n  \"document_type\": \"CNI\",\n  \"document_country\": \"CI\",\n  \"liveness_challenge\": \"BLINK\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"soumission acceptée\", () => pm.response.to.have.status(200));",
                  "pm.test(\"dossier passé en SUBMITTED\", () => pm.expect(pm.response.json().status).to.eql(\"SUBMITTED\"));"
                ]
              }
            }
          ]
        },
        {
          "name": "9. Lire le résultat",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/kyc/cases/{{case_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "kyc",
                "cases",
                "{{case_id}}"
              ]
            },
            "description": "État du dossier et détail des contrôles.\n\nÀ utiliser pour rattraper un webhook perdu ou afficher l'avancement — **pas en boucle d'attente** : le webhook est le mécanisme prévu.\n\n`verified_identity` n'est renseigné que sur un dossier `APPROVED` : c'est l'identité **lue sur la pièce**, en majuscules, à reprendre chez vous à la place du nom saisi à l'inscription."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"dossier lisible\", () => pm.response.to.have.status(200));"
                ]
              }
            }
          ]
        }
      ],
      "description": "Les neuf appels d'une vérification complète, dans l'ordre."
    },
    {
      "name": "Suivi et décisions",
      "item": [
        {
          "name": "Lister mes dossiers",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/kyc/cases?status=SUBMITTED&limit=50&offset=0",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "kyc",
                "cases"
              ],
              "query": [
                {
                  "key": "status",
                  "value": "SUBMITTED"
                },
                {
                  "key": "limit",
                  "value": "50"
                },
                {
                  "key": "offset",
                  "value": "0"
                }
              ]
            },
            "description": "Vos dossiers, du plus récent au plus ancien. Ne renvoie **que** ceux de votre application.\n\nFiltres : `status` (`IN_PROGRESS`, `SUBMITTED`, `UNDER_REVIEW`, `APPROVED`, `CORRECTION_REQUIRED`, `REJECTED`, `CANCELLED`), `user_id`, `limit` (200 maximum), `offset`.\n\nSert à alimenter votre propre back-office sans dupliquer la base AYAEL."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"liste obtenue\", () => pm.response.to.have.status(200));"
                ]
              }
            }
          ]
        },
        {
          "name": "Dossiers d'un utilisateur",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/kyc/cases?user_id={{user_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "kyc",
                "cases"
              ],
              "query": [
                {
                  "key": "user_id",
                  "value": "{{user_id}}"
                }
              ]
            },
            "description": "Historique des dossiers d'un utilisateur : reprises et corrections comprises."
          }
        },
        {
          "name": "Décision manuelle (réservée)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/kyc/cases/{{case_id}}/decision",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "kyc",
                "cases",
                "{{case_id}}",
                "decision"
              ]
            },
            "description": "**Réservée — répond 403 pour la plupart des applications.**\n\nLes décisions sont prises par les opérateurs d'AYAEL KYC et vous parviennent par le webhook. Un client vérifié par celui qui l'inscrit ne serait vérifié par personne : c'est tout le service qui perdrait son sens.\n\nLa route subsiste pour les quelques applications historiques qui statuent depuis leur propre back-office, ouverte nommément par l'administrateur.\n\n`reviewer_id` désigne l'**opérateur humain** qui tranche, chez vous — ni votre application (elle est déduite de la clé), ni le client vérifié. Il est conservé tel quel dans le journal du dossier : c'est lui qui permettra de dire, plus tard, qui a approuvé.\n\n`correction_reason` accompagne une demande de correction et doit être un **code**, jamais une phrase.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reviewer_id\": \"operateur-1\",\n  \"decision\": \"CORRECTION_REQUIRED\",\n  \"comment\": \"Selfie flou\",\n  \"correction_reason\": \"SELFIE_UNREADABLE\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ],
      "description": "Consulter ses dossiers et statuer depuis son propre back-office."
    },
    {
      "name": "Pièces du dossier",
      "description": "Relire les images déposées, pour les montrer dans VOTRE administration sans en garder une copie chez vous.\n\n**Rien à demander** : l'accès est ouvert sur vos propres dossiers — ce sont les images que vous avez déposées. Ceux d'une autre application restent un 404.\n\nUn 403 signifie que l'accès a été retiré à votre application, ce qui n'arrive qu'en cas d'abus constaté.\n\nChaque lecture d'image est journalisée du côté d'AYAEL KYC, au nom de votre application. Qui regarde derrière votre clé relève de votre propre journal.",
      "item": [
        {
          "name": "Lister les pièces",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/kyc/cases/{{case_id}}/documents",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "kyc",
                "cases",
                "{{case_id}}",
                "documents"
              ]
            },
            "description": "L'inventaire : `id`, `kind`, `uploaded_at`, sans les images.\n\n`kind` vaut `DOC_FRONT`, `DOC_BACK`, `SELFIE`, `LIVENESS_BEFORE`, `LIVENESS_DURING` ou `LIVENESS_AFTER`. Une même pièce peut figurer plusieurs fois si elle a été redéposée — la plus récente est celle qu'ont lue les contrôles.\n\nLe dossier d'une autre application répond 404, comme partout ailleurs."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"inventaire obtenu\", () => pm.response.to.have.status(200));",
                  "const pieces = pm.response.json();",
                  "if (pieces.length) { pm.collectionVariables.set(\"document_id\", pieces[0].id); }"
                ]
              }
            }
          ]
        },
        {
          "name": "Lire une image",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/kyc/cases/{{case_id}}/documents/{{document_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "kyc",
                "cases",
                "{{case_id}}",
                "documents",
                "{{document_id}}"
              ]
            },
            "description": "L'image elle-même, telle qu'elle a été déposée.\n\nServie en `private, no-store` : ne la mettez pas en cache, et ne l'enregistrez pas — c'est précisément ce que cette route évite d'avoir à faire.\n\n**Chaque appel laisse une trace chez AYAEL**, rattachée au dossier. Appelez-la quand un opérateur regarde, pas à chaque rafraîchissement d'écran."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"image obtenue\", () => pm.response.to.have.status(200));",
                  "pm.test(\"pas de mise en cache\", () => pm.expect(pm.response.headers.get(\"Cache-Control\") || \"\").to.include(\"no-store\"));"
                ]
              }
            }
          ]
        }
      ]
    },
    {
      "name": "Bac à sable",
      "description": "Ce qui n'existe que pour une application de mise au point.",
      "item": [
        {
          "name": "Vider mon bac à sable",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/kyc/sandbox/cases",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "kyc",
                "sandbox",
                "cases"
              ]
            },
            "description": "Efface **tous** les dossiers de votre bac à sable, images comprises.\n\n**Réservé aux applications de mise au point.** Avec une clé de production, cette route répond 403 et n'efface jamais rien — ce qu'elle protège, ce sont les dossiers qui justifient des décisions prises sur de vrais clients.\n\nSans délai : c'est souvent entre deux séries d'essais qu'on en a besoin. Les dossiers d'essai sont de toute façon supprimés seuls passé 48 heures sans changement.\n\n**À faire avant de passer en production**, pendant que la clé d'essai est encore en place : c'est le geste 2 de la marche à suivre."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"purge acceptee\", () => pm.response.to.have.status(200));"
                ]
              }
            }
          ]
        }
      ]
    },
    {
      "name": "Contrôles d'accès",
      "item": [
        {
          "name": "Sans clé → 401",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/kyc/cases",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "kyc",
                "cases"
              ]
            },
            "description": "Aucune route `/kyc` n'est accessible sans clé de service valide.",
            "auth": {
              "type": "noauth"
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"refus sans clé\", () => pm.response.to.have.status(401));"
                ]
              }
            }
          ]
        },
        {
          "name": "Dossier d'une autre application → 404",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/kyc/cases/{{case_id_autre_app}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "kyc",
                "cases",
                "{{case_id_autre_app}}"
              ]
            },
            "description": "Un dossier appartenant à une autre application est traité comme **inexistant**. Répondre 403 reviendrait à confirmer son existence à qui l'interroge au hasard.\n\nRenseignez `case_id_autre_app` avec un identifiant obtenu sous une autre clé pour le vérifier."
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"cloisonnement respecté\", () => pm.response.to.have.status(404));"
                ]
              }
            }
          ]
        }
      ],
      "description": "Ce que l'API refuse, et pourquoi elle le refuse ainsi."
    },
    {
      "name": "Service",
      "item": [
        {
          "name": "Santé du service",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/health",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "health"
              ]
            },
            "description": "Sonde de disponibilité, sans authentification. Répond `{\"status\": \"ok\"}`.",
            "auth": {
              "type": "noauth"
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test(\"service debout\", () => pm.response.to.have.status(200));"
                ]
              }
            }
          ]
        }
      ]
    }
  ]
}
