{
  "info": {
    "_postman_id": "3b18f85f-48a6-42d1-ac2c-2a8b49ed97d4",
    "name": "BCS PA - A - Partners  API (Sandbox)",
    "description": "Exemple de collection Postman pour tester une API AFNOR Flow Service avec récupération automatique d'un access token OAuth2 (client_credentials), puis appels Healthcheck, dépôt, recherche et téléchargement de flux.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "_exporter_id": "50267719",
    "_collection_link": "https://go.postman.co/collection/50267719-3b18f85f-48a6-42d1-ac2c-2a8b49ed97d4?source=collection_link"
  },
  "item": [
    {
      "name": "1 - OAuth2 - Get Access Token",
      "event": [
        {
          "listen": "test",
          "script": {
            "exec": [
              "pm.test('Status code is 200', function () {",
              "    pm.response.to.have.status(200);",
              "});",
              "const json = pm.response.json();",
              "pm.test('Response contains access_token', function () {",
              "    pm.expect(json.access_token).to.exist;",
              "});",
              "pm.collectionVariables.set('access_token', json.access_token);",
              "if (json.token_type) pm.collectionVariables.set('token_type', json.token_type);",
              "if (json.expires_in) pm.collectionVariables.set('token_expires_in', String(json.expires_in));",
              "console.log('access_token env =', pm.environment.get('access_token'));",
              "console.log('access_token collection =', pm.collectionVariables.get('access_token'));"
            ],
            "type": "text/javascript",
            "packages": {},
            "requests": {}
          }
        },
        {
          "listen": "prerequest",
          "script": {
            "exec": [
              ""
            ],
            "type": "text/javascript",
            "packages": {},
            "requests": {}
          }
        }
      ],
      "request": {
        "auth": {
          "type": "noauth"
        },
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/x-www-form-urlencoded"
          },
          {
            "key": "User-Agent",
            "value": "BCSolutions",
            "type": "text"
          }
        ],
        "body": {
          "mode": "urlencoded",
          "urlencoded": [
            {
              "key": "grant_type",
              "value": "client_credentials",
              "type": "text"
            },
            {
              "key": "client_id",
              "value": "{{client_id}}",
              "type": "text"
            },
            {
              "key": "client_secret",
              "value": "{{client_secret}}",
              "type": "text"
            }
          ]
        },
        "url": {
          "raw": "{{oauth_token_url}}",
          "host": [
            "{{oauth_token_url}}"
          ]
        }
      },
      "response": []
    },
    {
      "name": "2 - List Tenants",
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "exec": [
              ""
            ],
            "type": "text/javascript",
            "packages": {},
            "requests": {}
          }
        },
        {
          "listen": "test",
          "script": {
            "exec": [
              ""
            ],
            "type": "text/javascript",
            "packages": {},
            "requests": {}
          }
        }
      ],
      "request": {
        "auth": {
          "type": "noauth"
        },
        "method": "GET",
        "header": [
          {
            "key": "Content-Type",
            "value": "{{content_type}}"
          },
          {
            "key": "Accept",
            "value": "application/json"
          },
          {
            "key": "Authorization",
            "value": "Bearer {{access_token}}",
            "type": "text"
          }
        ],
        "url": {
          "raw": "{{partner_base_url}}/v1/tenants",
          "host": [
            "{{partner_base_url}}"
          ],
          "path": [
            "v1",
            "tenants"
          ]
        },
        "description": "Exemple volontairement générique : adapte le body au schéma exact de ta PA / de ton swagger."
      },
      "response": []
    },
    {
      "name": "3.1 - New Tenants",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "// Parse la réponse JSON\r\nconst response = pm.response.json();\r\n\r\n// Récupère le legalUnitId\r\nconst tenantSlug = response.tenantSlug;\r\n\r\n// Sauvegarde dans une variable de collection\r\npm.collectionVariables.set(\"tenantSlug\", tenantSlug);\r\n\r\n// Log console (optionnel)\r\nconsole.log(\"tenantSlug enregistré :\", tenantSlug);"
            ]
          }
        }
      ],
      "request": {
        "auth": {
          "type": "noauth"
        },
        "method": "POST",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{access_token}}"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\r\n  \"name\": \"{{name}}\",\r\n  \"organizationName\": \"{{organizationName}}\",\r\n  \"principalUserFirstName\": \"{{principalUserFirstName}} \",\r\n  \"principalUserLastName\": \"{{principalUserLastName}} \",\r\n  \"principalUserEmail\": \"{{principalUserEmail}}\",\r\n  \"defaultTheme\": \"default\",\r\n  \"defaultTimezone\": \"Europe/Paris\",\r\n  \"defaultLocale\": \"fr-FR\",\r\n  \"onboardingMode\": \"AUTO\",\r\n  \"allowUiAccess\": true\r\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": {
          "raw": "{{partner_base_url}}/v1/tenants",
          "host": [
            "{{partner_base_url}}"
          ],
          "path": [
            "v1",
            "tenants"
          ]
        }
      },
      "response": []
    },
    {
      "name": "3.2 - Provision",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{access_token}}",
            "type": "text"
          }
        ],
        "url": {
          "raw": "{{partner_base_url}}/v1/tenants/{{tenantSlug}}/provision",
          "host": [
            "{{partner_base_url}}"
          ],
          "path": [
            "v1",
            "tenants",
            "{{tenantSlug}}",
            "provision"
          ]
        }
      },
      "response": []
    },
    {
      "name": "4.1 - Get tenant-public-api bootstrap api_access",
      "event": [
        {
          "listen": "test",
          "script": {
            "exec": [
              "// Parse la réponse JSON\r",
              "const response = pm.response.json();\r",
              "\r",
              "// Récupère le legalUnitId\r",
              "const apiAccessId = response.apiAccessId;\r",
              "\r",
              "// Sauvegarde dans une variable de collection\r",
              "pm.collectionVariables.set(\"apiAccessId\", apiAccessId);\r",
              "\r",
              "// Log console (optionnel)\r",
              "console.log(\"apiAccessId enregistré :\", apiAccessId);"
            ],
            "type": "text/javascript",
            "packages": {},
            "requests": {}
          }
        }
      ],
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{access_token}}",
            "type": "text"
          }
        ],
        "url": {
          "raw": "{{partner_base_url}}/v1/tenants/{{tenantSlug}}/public-api-access",
          "host": [
            "{{partner_base_url}}"
          ],
          "path": [
            "v1",
            "tenants",
            "{{tenantSlug}}",
            "public-api-access"
          ]
        }
      },
      "response": []
    },
    {
      "name": "4.2 - Rotate tenant-public-api bootstrap api_access secret",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{access_token}}",
            "type": "text"
          }
        ],
        "url": {
          "raw": "{{partner_base_url}}/v1/tenants/{{tenantSlug}}/public-api-access/{{apiAccessId}}/rotate",
          "host": [
            "{{partner_base_url}}"
          ],
          "path": [
            "v1",
            "tenants",
            "{{tenantSlug}}",
            "public-api-access",
            "{{apiAccessId}}",
            "rotate"
          ]
        }
      },
      "response": []
    },
    {
      "name": "5 - Reset password",
      "event": [
        {
          "listen": "test",
          "script": {
            "exec": [
              "// Parse la réponse JSON\r",
              "const response = pm.response.json();\r",
              "\r",
              "// Récupère le legalUnitId\r",
              "const legalUnitId = response.legalUnitId;\r",
              "\r",
              "// Sauvegarde dans une variable de collection\r",
              "pm.collectionVariables.set(\"legalUnitId\", legalUnitId);\r",
              "\r",
              "// Log console (optionnel)\r",
              "console.log(\"legalUnitId enregistré :\", legalUnitId);"
            ],
            "type": "text/javascript",
            "packages": {},
            "requests": {}
          }
        }
      ],
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{access_token}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\r\n  \"countryCode\": \"FR\",\r\n  \"name\": \"OCEANIS J.V. (ODB)\",\r\n  \"siren\": \"453972838\"\r\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": {
          "raw": "{{partner_base_url}}/v1/tenants/{{tenantSlug}}/principal-user/reset-password",
          "host": [
            "{{partner_base_url}}"
          ],
          "path": [
            "v1",
            "tenants",
            "{{tenantSlug}}",
            "principal-user",
            "reset-password"
          ]
        }
      },
      "response": []
    },
    {
      "name": "6.1 - Search French directory by SIREN",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{access_token}}",
            "type": "text"
          }
        ],
        "url": {
          "raw": "{{partner_base_url}}/v1/tenants/{{tenantSlug}}/directory/french?q=siren:\"103327797\"",
          "host": [
            "{{partner_base_url}}"
          ],
          "path": [
            "v1",
            "tenants",
            "{{tenantSlug}}",
            "directory",
            "french"
          ],
          "query": [
            {
              "key": "q",
              "value": "siren:\"103327797\""
            }
          ]
        }
      },
      "response": []
    },
    {
      "name": "6.2 - Search French directory by NAME",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{access_token}}",
            "type": "text"
          }
        ],
        "url": {
          "raw": "{{partner_base_url}}/v1/tenants/{{tenantSlug}}/directory/french?q=name:\"SYSPERTEC GROUP\"",
          "host": [
            "{{partner_base_url}}"
          ],
          "path": [
            "v1",
            "tenants",
            "{{tenantSlug}}",
            "directory",
            "french"
          ],
          "query": [
            {
              "key": "q",
              "value": "name:\"SYSPERTEC GROUP\""
            }
          ]
        }
      },
      "response": []
    },
    {
      "name": "6.3 - Search French directory by SIRET",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{access_token}}",
            "type": "text"
          }
        ],
        "url": {
          "raw": "{{partner_base_url}}/v1/tenants/{{tenantSlug}}/directory/french?q=siret:\"45389580700023\"",
          "host": [
            "{{partner_base_url}}"
          ],
          "path": [
            "v1",
            "tenants",
            "{{tenantSlug}}",
            "directory",
            "french"
          ],
          "query": [
            {
              "key": "q",
              "value": "siret:\"45389580700023\""
            }
          ]
        }
      },
      "response": []
    },
    {
      "name": "7.1 - Create a legal unit",
      "event": [
        {
          "listen": "test",
          "script": {
            "exec": [
              "// Parse la réponse JSON\r",
              "const response = pm.response.json();\r",
              "\r",
              "// Récupère le legalUnitId\r",
              "const legalUnitId = response.legalUnitId;\r",
              "\r",
              "// Sauvegarde dans une variable de collection\r",
              "pm.collectionVariables.set(\"legalUnitId\", legalUnitId);\r",
              "\r",
              "// Log console (optionnel)\r",
              "console.log(\"legalUnitId enregistré :\", legalUnitId);"
            ],
            "type": "text/javascript",
            "packages": {},
            "requests": {}
          }
        }
      ],
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{access_token}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\r\n  \"countryCode\": \"FR\",\r\n  \"name\": \"BATIMAT\",\r\n  \"siren\": \"310071865\"\r\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": {
          "raw": "{{partner_base_url}}/v1/tenants/{{tenantSlug}}/legal-units",
          "host": [
            "{{partner_base_url}}"
          ],
          "path": [
            "v1",
            "tenants",
            "{{tenantSlug}}",
            "legal-units"
          ]
        }
      },
      "response": []
    },
    {
      "name": "7.2 - Start a claim/onboarding for a tenant's legal unit",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{access_token}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\r\n  \"registerDomesticFr\": true,\r\n  \"registerPeppolInternational\": true\r\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": {
          "raw": "{{partner_base_url}}/v1/tenants/{{tenantSlug}}/legal-units/{{legalUnitId}}/claim",
          "host": [
            "{{partner_base_url}}"
          ],
          "path": [
            "v1",
            "tenants",
            "{{tenantSlug}}",
            "legal-units",
            "{{legalUnitId}}",
            "claim"
          ]
        }
      },
      "response": []
    },
    {
      "name": "7.3 - Approve manual KYB for a tenant's legal unit",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{access_token}}",
            "type": "text"
          }
        ],
        "url": {
          "raw": "{{partner_base_url}}/v1/tenants/{{tenantSlug}}/legal-units/{{legalUnitId}}/kyb/approve",
          "host": [
            "{{partner_base_url}}"
          ],
          "path": [
            "v1",
            "tenants",
            "{{tenantSlug}}",
            "legal-units",
            "{{legalUnitId}}",
            "kyb",
            "approve"
          ]
        }
      },
      "response": []
    },
    {
      "name": "7.4 - Get state for a tenant's legal unit",
      "protocolProfileBehavior": {
        "disableBodyPruning": true
      },
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{access_token}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": {
          "raw": "{{partner_base_url}}/v1/tenants/{{tenantSlug}}/legal-units/{{legalUnitId}}/onboarding/state",
          "host": [
            "{{partner_base_url}}"
          ],
          "path": [
            "v1",
            "tenants",
            "{{tenantSlug}}",
            "legal-units",
            "{{legalUnitId}}",
            "onboarding",
            "state"
          ]
        }
      },
      "response": []
    },
    {
      "name": "8.1 - Create an office",
      "event": [
        {
          "listen": "test",
          "script": {
            "exec": [
              "// Parse la réponse JSON\r",
              "const response = pm.response.json();\r",
              "\r",
              "// Récupère le legalUnitId\r",
              "const officeId = response.officeId;\r",
              "\r",
              "// Sauvegarde dans une variable de collection\r",
              "pm.collectionVariables.set(\"officeId\", officeId);\r",
              "\r",
              "// Log console (optionnel)\r",
              "console.log(\"officeId enregistré :\", officeId);"
            ],
            "type": "text/javascript",
            "packages": {},
            "requests": {}
          }
        }
      ],
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{access_token}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\r\n  \"legalUnitId\": \"{{legalUnitId}}\",\r\n  \"name\": \"BOULANGERIE PONT JUVENAL\",\r\n  \"scheme\": \"0009\",\r\n  \"value\": \"89323087000014\",\r\n  \"isPrimary\": true\r\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": {
          "raw": "{{partner_base_url}}/v1/tenants/{{tenantSlug}}/offices",
          "host": [
            "{{partner_base_url}}"
          ],
          "path": [
            "v1",
            "tenants",
            "{{tenantSlug}}",
            "offices"
          ]
        }
      },
      "response": []
    },
    {
      "name": "8.2 - Start a claim/onboarding the office",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Authorization",
            "value": "Bearer {{access_token}}",
            "type": "text"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\r\n  \"registerDomesticFr\": true,\r\n  \"registerPeppolInternational\": false\r\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        },
        "url": {
          "raw": "{{partner_base_url}}/v1/tenants/{{tenantSlug}}/offices/{{officeId}}/claim",
          "host": [
            "{{partner_base_url}}"
          ],
          "path": [
            "v1",
            "tenants",
            "{{tenantSlug}}",
            "offices",
            "{{officeId}}",
            "claim"
          ]
        }
      },
      "response": []
    }
  ],
  "event": [
    {
      "listen": "prerequest",
      "script": {
        "type": "text/javascript",
        "requests": {},
        "exec": [
          ""
        ]
      }
    },
    {
      "listen": "test",
      "script": {
        "type": "text/javascript",
        "packages": {},
        "requests": {},
        "exec": [
          ""
        ]
      }
    }
  ],
  "variable": [
    {
      "key": "access_token",
      "value": ""
    },
    {
      "key": "token_type",
      "value": ""
    },
    {
      "key": "token_expires_in",
      "value": ""
    },
    {
      "key": "tenantSlug",
      "value": ""
    },
    {
      "key": "legalUnitId",
      "value": ""
    },
    {
      "key": "apiAccessId",
      "value": ""
    },
    {
      "key": "officeId",
      "value": ""
    }
  ]
}