{
  "info": {
    "name": "KARABA Platform API",
    "description": "Matching IA, Trust Score, Jobs et diffusion WhatsApp pour partenaires — https://karaba.ai/docs",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{access_token}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "base_url",
      "value": "https://api.sandbox.karaba.ai"
    },
    {
      "key": "access_token",
      "value": ""
    },
    {
      "key": "client_id",
      "value": "sk_sandbox_xxx"
    },
    {
      "key": "client_secret",
      "value": "your_secret"
    }
  ],
  "item": [
    {
      "name": "Authentification",
      "item": [
        {
          "name": "Obtenir un token",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "auth": {
              "type": "noauth"
            },
            "url": "{{base_url}}/v1/auth/token",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"grant_type\": \"client_credentials\",\n  \"client_id\": \"{{client_id}}\",\n  \"client_secret\": \"{{client_secret}}\",\n  \"scope\": \"match:read profile:write trust:read jobs:write jobs:read diffusion:write webhook:write analytics:read\"\n}"
            }
          }
        },
        {
          "name": "Rafraîchir un token",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "auth": {
              "type": "noauth"
            },
            "url": "{{base_url}}/v1/auth/refresh",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"refresh_token\": \"eyJ...\"\n}"
            }
          }
        },
        {
          "name": "Révoquer un token",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/auth/revoke",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"token\": \"eyJ...\"\n}"
            }
          }
        },
        {
          "name": "Créer une clé API",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "auth": {
              "type": "noauth"
            },
            "url": "{{base_url}}/v1/sandbox/keys",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Mon intégration\",\n  \"email\": \"dev@exemple.com\",\n  \"scopes\": [\"match:read\", \"profile:write\", \"trust:read\", \"jobs:write\", \"jobs:read\", \"diffusion:write\", \"webhook:write\", \"analytics:read\"],\n  \"quota_plan\": \"free\"\n}"
            }
          }
        }
      ]
    },
    {
      "name": "Profils",
      "item": [
        {
          "name": "Créer un profil",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/profiles",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"full_name\": \"Kofi Mensah\",\n  \"location\": \"Lomé, Togo\",\n  \"total_years_experience\": 5,\n  \"skills\": [{ \"name\": \"React\", \"level\": \"expert\" }]\n}"
            }
          }
        },
        {
          "name": "Ingérer un CV",
          "request": {
            "method": "POST",
            "url": "{{base_url}}/v1/profiles/cv",
            "body": {
              "mode": "formdata",
              "formdata": [
                {
                  "key": "file",
                  "type": "file",
                  "src": ""
                },
                {
                  "key": "external_id",
                  "value": "partner-ref-42",
                  "type": "text"
                }
              ]
            }
          }
        },
        {
          "name": "Statut d'un profil",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/v1/profiles/:profile_id/status"
          }
        }
      ]
    },
    {
      "name": "Match",
      "item": [
        {
          "name": "Match Run — Pool stored",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/match/run",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"job\": {\n    \"title\": \"Développeur React senior\",\n    \"skills_required\": [\n      \"react\",\n      \"typescript\"\n    ],\n    \"location\": \"Lomé\",\n    \"experience_min\": 3\n  },\n  \"pool\": {\n    \"type\": \"stored\"\n  },\n  \"limit\": 5\n}"
            }
          },
          "response": []
        },
        {
          "name": "Match Run — Pool inline (stateless)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/match/run",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"job\": {\n    \"title\": \"Développeur React senior\",\n    \"skills_required\": [\n      \"react\",\n      \"typescript\"\n    ]\n  },\n  \"pool\": {\n    \"type\": \"inline\",\n    \"candidates\": [\n      {\n        \"external_id\": \"c_001\",\n        \"skills\": [\n          \"react\",\n          \"typescript\",\n          \"node\"\n        ],\n        \"experience_years\": 4,\n        \"location\": \"Lomé\"\n      },\n      {\n        \"external_id\": \"c_002\",\n        \"skills\": [\n          \"vue\",\n          \"python\"\n        ],\n        \"experience_years\": 2,\n        \"location\": \"Abidjan\"\n      }\n    ]\n  },\n  \"limit\": 5\n}"
            }
          },
          "response": []
        },
        {
          "name": "Match Run — Pool provider (GoAfrica / index IA)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/match/run",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"job\": {\n    \"title\": \"Développeur React senior\",\n    \"skills_required\": [\n      \"react\",\n      \"typescript\"\n    ]\n  },\n  \"pool\": {\n    \"type\": \"provider\",\n    \"provider_id\": \"goafrica\"\n  },\n  \"limit\": 5\n}"
            }
          },
          "response": []
        },
        {
          "name": "Lancer une recherche",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/match/query",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"query\": \"Développeur React senior à Lomé, 5 ans d'expérience\",\n  \"limit\": 10\n}"
            }
          }
        },
        {
          "name": "Relire un résultat",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/v1/match/query/:match_id"
          }
        },
        {
          "name": "Profils similaires",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/v1/match/similar/:profile_id?limit=10"
          }
        },
        {
          "name": "Expliquer un score",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/v1/match/explain/:match_id?profile_id=91"
          }
        }
      ]
    },
    {
      "name": "Trust Score",
      "item": [
        {
          "name": "Calculer un Trust Score",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/trust/score",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"profile_id\": 91,\n  \"seed\": 42\n}"
            }
          }
        },
        {
          "name": "Relire un Trust Score",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/v1/trust/score/:profile_id"
          }
        }
      ]
    },
    {
      "name": "Jobs",
      "item": [
        {
          "name": "Publier une offre",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/jobs",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"title\": \"Développeur React senior\",\n  \"description\": \"Mission de 6 mois, stack React/TypeScript.\",\n  \"location\": \"Lomé, Togo\",\n  \"contract_type\": \"CDD\",\n  \"company_name\": \"Entreprise cliente\",\n  \"external_job_id\": \"partner-job-128\",\n  \"limit\": 10\n}"
            }
          }
        },
        {
          "name": "Détail d'une offre",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/v1/jobs/:job_id"
          }
        },
        {
          "name": "Matchs d'une offre",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/v1/jobs/:job_id/matches"
          }
        },
        {
          "name": "Analytics d'une offre",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/v1/jobs/:job_id/analytics"
          }
        }
      ]
    },
    {
      "name": "Diffusion WhatsApp",
      "item": [
        {
          "name": "Diffuser l'offre aux candidats matchés",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/jobs/:job_id/broadcast",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"min_score\": 50\n}"
            }
          }
        }
      ]
    },
    {
      "name": "Webhooks",
      "item": [
        {
          "name": "Enregistrer un webhook",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/webhooks",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"url\": \"https://votre-systeme.com/hooks/karaba\",\n  \"events\": [\"job.broadcast.completed\", \"job.candidate_replied\"]\n}"
            }
          }
        },
        {
          "name": "Lister les webhooks",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/v1/webhooks"
          }
        },
        {
          "name": "Supprimer un webhook",
          "request": {
            "method": "DELETE",
            "url": "{{base_url}}/v1/webhooks/:webhook_id"
          }
        }
      ]
    },
    {
      "name": "Quota",
      "item": [
        {
          "name": "Statut des quotas",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/v1/quota/status"
          }
        }
      ]
    },
    {
      "name": "Analytics",
      "item": [
        {
          "name": "Métriques 24h",
          "request": {
            "method": "GET",
            "url": "{{base_url}}/v1/analytics/metrics"
          }
        }
      ]
    },
    {
      "name": "Providers (index IA partenaire)",
      "item": [
        {
          "name": "Enregistrer un provider",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/providers",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"provider_id\": \"goafrica\",\n  \"name\": \"GoAfrica Online\"\n}"
            }
          },
          "response": []
        },
        {
          "name": "Statut d'un provider",
          "request": {
            "method": "GET",
            "header": [],
            "url": "{{base_url}}/v1/providers/goafrica"
          },
          "response": []
        },
        {
          "name": "Sync batch (bootstrap / delta)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/providers/goafrica/sync",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"candidates\": [\n    {\n      \"external_id\": \"ga_001\",\n      \"skills\": [\n        \"react\",\n        \"typescript\",\n        \"graphql\"\n      ],\n      \"seniority\": \"senior\",\n      \"country\": \"Togo\"\n    },\n    {\n      \"external_id\": \"ga_002\",\n      \"skills\": [\n        \"python\",\n        \"django\",\n        \"postgresql\"\n      ],\n      \"seniority\": \"mid\",\n      \"country\": \"Côte d'Ivoire\"\n    }\n  ]\n}"
            }
          },
          "response": []
        },
        {
          "name": "Webhook temps réel — candidate.created",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/providers/goafrica/webhook",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"event\": \"candidate.created\",\n  \"candidate\": {\n    \"external_id\": \"ga_003\",\n    \"skills\": [\n      \"vue\",\n      \"node\",\n      \"mongodb\"\n    ],\n    \"seniority\": \"junior\",\n    \"country\": \"Sénégal\"\n  }\n}"
            }
          },
          "response": []
        },
        {
          "name": "Webhook temps réel — candidate.deleted",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/providers/goafrica/webhook",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"event\": \"candidate.deleted\",\n  \"external_id\": \"ga_003\"\n}"
            }
          },
          "response": []
        }
      ]
    }
  ]
}