{
  "info": {
    "name": "MediQuo ID — API Brasil",
    "description": "Collection completa da API ID MediQuo Brasil.\n\nBase URL: https://api-portal.mediquo-staging.com.br\n\nAutenticação: JWT via POST /auth/login → copie o token para a variável {{token}}.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "_postman_id": "mediquo-id-brasil-2025"
  },
  "variable": [
    { "key": "baseUrl", "value": "https://api-portal.mediquo-staging.com.br", "type": "string" },
    { "key": "token",   "value": "",    "type": "string", "description": "JWT obtido via POST /auth/login" },
    { "key": "clientId",   "value": "1", "type": "string" },
    { "key": "branchId",   "value": "1", "type": "string" },
    { "key": "licenceId",  "value": "1", "type": "string" },
    { "key": "licenceCode","value": "LIC-2025-001", "type": "string" },
    { "key": "planId",     "value": "1", "type": "string" },
    { "key": "patientId",  "value": "1", "type": "string" },
    { "key": "partnerId",  "value": "1", "type": "string" },
    { "key": "subscriptionId", "value": "1", "type": "string" }
  ],
  "auth": {
    "type": "bearer",
    "bearer": [{ "key": "token", "value": "{{token}}", "type": "string" }]
  },
  "event": [
    {
      "listen": "prerequest",
      "script": {
        "type": "text/javascript",
        "exec": [""]
      }
    },
    {
      "listen": "test",
      "script": {
        "type": "text/javascript",
        "exec": [""]
      }
    }
  ],
  "item": [
    {
      "name": "🔐 Autenticação",
      "item": [
        {
          "name": "Login",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "var json = pm.response.json();",
                  "if (json.token) {",
                  "  pm.collectionVariables.set('token', json.token);",
                  "  console.log('Token salvo automaticamente.');",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "auth": { "type": "noauth" },
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Accept",       "value": "application/hal+json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"email\": \"usuario@exemplo.com\",\n  \"password\": \"sua_senha\"\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{baseUrl}}/auth/login", "host": ["{{baseUrl}}"], "path": ["auth", "login"] },
            "description": "Autentica o usuário e retorna o JWT. O token é salvo automaticamente na variável `{{token}}` via script de teste."
          }
        },
        {
          "name": "Meu perfil",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": { "raw": "{{baseUrl}}/auth/me", "host": ["{{baseUrl}}"], "path": ["auth", "me"] },
            "description": "Retorna dados do usuário autenticado (email, role, parceiro)."
          }
        }
      ]
    },
    {
      "name": "🏢 Clientes",
      "item": [
        {
          "name": "Listar clientes",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": {
              "raw": "{{baseUrl}}/clients?page=0&size=20",
              "host": ["{{baseUrl}}"], "path": ["clients"],
              "query": [
                { "key": "page",  "value": "0" },
                { "key": "size",  "value": "20" },
                { "key": "sort",  "value": "name,asc", "disabled": true },
                { "key": "index", "value": "", "disabled": true }
              ]
            }
          }
        },
        {
          "name": "Buscar cliente por ID",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": { "raw": "{{baseUrl}}/clients/{{clientId}}", "host": ["{{baseUrl}}"], "path": ["clients", "{{clientId}}"] }
          }
        },
        {
          "name": "Criar cliente",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Accept",       "value": "application/hal+json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"partnerId\": {{partnerId}},\n  \"name\": \"Empresa Exemplo LTDA\",\n  \"email\": \"contato@empresa.com\",\n  \"personType\": \"JURIDICA\",\n  \"documentNumber\": \"12345678000199\",\n  \"active\": true,\n  \"phoneNumber\": \"11999999999\",\n  \"userRoot\": {\n    \"fullName\": \"Administrador\",\n    \"email\": \"admin@empresa.com\",\n    \"password\": \"senha_segura_123\"\n  }\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{baseUrl}}/clients", "host": ["{{baseUrl}}"], "path": ["clients"] }
          }
        },
        {
          "name": "Atualizar cliente",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Accept",       "value": "application/hal+json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Empresa Exemplo Atualizada LTDA\",\n  \"personType\": \"JURIDICA\",\n  \"email\": \"novo@empresa.com\"\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{baseUrl}}/clients/{{clientId}}", "host": ["{{baseUrl}}"], "path": ["clients", "{{clientId}}"] }
          }
        },
        {
          "name": "Suspender cliente",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Accept",       "value": "application/hal+json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reason\": \"NON_PAYMENT\",\n  \"description\": \"Fatura em aberto há 30 dias\"\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{baseUrl}}/clients/suspend/{{clientId}}", "host": ["{{baseUrl}}"], "path": ["clients", "suspend", "{{clientId}}"] },
            "description": "Valores de reason: NON_PAYMENT | CLIENT_REQUEST | VERIFICATION | OPERATIONAL_IRREGULARITY | OTHER"
          }
        },
        {
          "name": "Desuspender cliente",
          "request": {
            "method": "PUT",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": { "raw": "{{baseUrl}}/clients/unsuspend/{{clientId}}", "host": ["{{baseUrl}}"], "path": ["clients", "unsuspend", "{{clientId}}"] }
          }
        },
        {
          "name": "Desativar cliente",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Accept",       "value": "application/hal+json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reason\": \"CONTRACT_EXPIRATION\",\n  \"description\": \"Contrato encerrado em 31/01/2025\"\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{baseUrl}}/clients/deactivate/{{clientId}}", "host": ["{{baseUrl}}"], "path": ["clients", "deactivate", "{{clientId}}"] },
            "description": "⚠️ Irreversível para licenças. Valores de reason: CONTRACT_EXPIRATION | CONTRACT_TERMINATION | MEDIQUO_DECISION | CLIENT_ACTIVITY_END | PORTFOLIO_MIGRATION | OTHERS"
          }
        }
      ]
    },
    {
      "name": "📋 Planos",
      "item": [
        {
          "name": "Listar planos",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": {
              "raw": "{{baseUrl}}/plans?page=0&size=20",
              "host": ["{{baseUrl}}"], "path": ["plans"],
              "query": [
                { "key": "page",  "value": "0" },
                { "key": "size",  "value": "20" },
                { "key": "sort",  "value": "name,asc", "disabled": true },
                { "key": "index", "value": "", "disabled": true }
              ]
            },
            "description": "Planos são gerenciados pela MediQuo — parceiros têm acesso somente leitura."
          }
        }
      ]
    },
    {
      "name": "🏪 Filiais",
      "item": [
        {
          "name": "Listar filiais",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": {
              "raw": "{{baseUrl}}/branch?page=0&size=20",
              "host": ["{{baseUrl}}"], "path": ["branch"],
              "query": [
                { "key": "page", "value": "0" },
                { "key": "size", "value": "20" }
              ]
            }
          }
        },
        {
          "name": "Buscar filial por ID",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": { "raw": "{{baseUrl}}/branch/{{branchId}}", "host": ["{{baseUrl}}"], "path": ["branch", "{{branchId}}"] }
          }
        },
        {
          "name": "Filiais por cliente",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": {
              "raw": "{{baseUrl}}/branch/client/{{clientId}}?page=0&size=20",
              "host": ["{{baseUrl}}"], "path": ["branch", "client", "{{clientId}}"],
              "query": [
                { "key": "page", "value": "0" },
                { "key": "size", "value": "20" }
              ]
            }
          }
        },
        {
          "name": "Status de suspensão",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": { "raw": "{{baseUrl}}/branch/suspension-status/{{branchId}}", "host": ["{{baseUrl}}"], "path": ["branch", "suspension-status", "{{branchId}}"] },
            "description": "Filiais são suspensas em cascata via suspensão do cliente pai."
          }
        },
        {
          "name": "Criar filial",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Accept",       "value": "application/hal+json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Filial Centro\",\n  \"clientId\": {{clientId}},\n  \"personType\": \"JURIDICA\",\n  \"email\": \"filial.centro@empresa.com\",\n  \"phoneNumber\": \"11988888888\",\n  \"documentNumber\": \"12345678000199\",\n  \"userRoot\": {\n    \"fullName\": \"Gerente Filial\",\n    \"email\": \"gerente@empresa.com\",\n    \"password\": \"senha_segura_123\"\n  }\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{baseUrl}}/branch", "host": ["{{baseUrl}}"], "path": ["branch"] }
          }
        },
        {
          "name": "Atualizar filial",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Accept",       "value": "application/hal+json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Filial Centro Atualizada\",\n  \"clientId\": {{clientId}},\n  \"personType\": \"JURIDICA\"\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{baseUrl}}/branch/{{branchId}}", "host": ["{{baseUrl}}"], "path": ["branch", "{{branchId}}"] }
          }
        }
      ]
    },
    {
      "name": "🎫 Licenças",
      "item": [
        {
          "name": "Listar licenças",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": {
              "raw": "{{baseUrl}}/licences?page=0&size=20",
              "host": ["{{baseUrl}}"], "path": ["licences"],
              "query": [
                { "key": "page",  "value": "0" },
                { "key": "size",  "value": "20" },
                { "key": "sort",  "value": "name,asc", "disabled": true },
                { "key": "index", "value": "", "disabled": true }
              ]
            }
          }
        },
        {
          "name": "Buscar licença por ID",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": { "raw": "{{baseUrl}}/licences/{{licenceId}}", "host": ["{{baseUrl}}"], "path": ["licences", "{{licenceId}}"] }
          }
        },
        {
          "name": "Buscar licença por código",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": { "raw": "{{baseUrl}}/licences/find-by-code/{{licenceCode}}", "host": ["{{baseUrl}}"], "path": ["licences", "find-by-code", "{{licenceCode}}"] }
          }
        },
        {
          "name": "Criar licença (fila assíncrona)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Accept",       "value": "application/hal+json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"clientId\": {{clientId}},\n  \"code\": \"{{licenceCode}}\",\n  \"name\": \"Maria Silva\",\n  \"phoneNumber\": \"11999999999\",\n  \"phoneNumberCode\": \"+55\",\n  \"planId\": {{planId}},\n  \"email\": \"maria@email.com\",\n  \"mediquoNotificationEmail\": true,\n  \"mediquoNotificationSMS\": true\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{baseUrl}}/licences/integration/queue-licence", "host": ["{{baseUrl}}"], "path": ["licences", "integration", "queue-licence"] },
            "description": "Retorna 202 Accepted imediatamente. O resultado final é entregue via Webhook."
          }
        },
        {
          "name": "Atualizar licença",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Accept",       "value": "application/hal+json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"clientId\": {{clientId}},\n  \"code\": \"{{licenceCode}}\",\n  \"name\": \"Maria Silva Atualizada\",\n  \"phoneNumber\": \"11988888888\"\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{baseUrl}}/licences/{{licenceId}}", "host": ["{{baseUrl}}"], "path": ["licences", "{{licenceId}}"] }
          }
        },
        {
          "name": "Ativar licença (por ID)",
          "request": {
            "method": "PUT",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": { "raw": "{{baseUrl}}/licences/activate/{{licenceId}}", "host": ["{{baseUrl}}"], "path": ["licences", "activate", "{{licenceId}}"] }
          }
        },
        {
          "name": "Ativar licença (por código)",
          "request": {
            "method": "PUT",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": { "raw": "{{baseUrl}}/licences/activate-by-code/{{licenceCode}}", "host": ["{{baseUrl}}"], "path": ["licences", "activate-by-code", "{{licenceCode}}"] }
          }
        },
        {
          "name": "Desativar licença (por ID)",
          "request": {
            "method": "PUT",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": { "raw": "{{baseUrl}}/licences/deactivate/{{licenceId}}", "host": ["{{baseUrl}}"], "path": ["licences", "deactivate", "{{licenceId}}"] }
          }
        },
        {
          "name": "Desativar licença (por código)",
          "request": {
            "method": "PUT",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": { "raw": "{{baseUrl}}/licences/deactivate-by-code/{{licenceCode}}", "host": ["{{baseUrl}}"], "path": ["licences", "deactivate-by-code", "{{licenceCode}}"] }
          }
        },
        {
          "name": "Reenviar notificação",
          "request": {
            "method": "POST",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": {
              "raw": "{{baseUrl}}/licences/resend-notification/{{licenceId}}?type=BOTH",
              "host": ["{{baseUrl}}"], "path": ["licences", "resend-notification", "{{licenceId}}"],
              "query": [{ "key": "type", "value": "BOTH", "description": "EMAIL | SMS | BOTH" }]
            }
          }
        }
      ]
    },
    {
      "name": "🧑‍⚕️ Pacientes",
      "item": [
        {
          "name": "Listar pacientes",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": {
              "raw": "{{baseUrl}}/patients?page=0&size=20",
              "host": ["{{baseUrl}}"], "path": ["patients"],
              "query": [
                { "key": "page",  "value": "0" },
                { "key": "size",  "value": "20" },
                { "key": "sort",  "value": "name,asc", "disabled": true },
                { "key": "index", "value": "", "disabled": true }
              ]
            }
          }
        },
        {
          "name": "Buscar paciente por ID",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": { "raw": "{{baseUrl}}/patients/{{patientId}}", "host": ["{{baseUrl}}"], "path": ["patients", "{{patientId}}"] }
          }
        },
        {
          "name": "Criar paciente",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Accept",       "value": "application/hal+json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"documentNumber\": \"12345678901\",\n  \"name\": \"João Silva\",\n  \"clientId\": {{clientId}},\n  \"planId\": {{planId}},\n  \"origin\": \"{valor_definido_pela_mediquo}\",\n  \"email\": \"joao.silva@email.com\",\n  \"phone\": \"11999999999\",\n  \"gender\": \"MALE\",\n  \"birthDate\": \"1990-05-15T00:00:00.000Z\"\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{baseUrl}}/patients", "host": ["{{baseUrl}}"], "path": ["patients"] },
            "description": "⚠️ O campo `origin` deve ser solicitado à MediQuo antes da integração."
          }
        },
        {
          "name": "Atualizar paciente",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Accept",       "value": "application/hal+json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"documentNumber\": \"12345678901\",\n  \"name\": \"João Silva Santos\",\n  \"clientId\": {{clientId}},\n  \"planId\": {{planId}},\n  \"origin\": \"{valor_definido_pela_mediquo}\",\n  \"email\": \"joao.novo@email.com\",\n  \"phone\": \"11888888888\"\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{baseUrl}}/patients/{{patientId}}", "host": ["{{baseUrl}}"], "path": ["patients", "{{patientId}}"] }
          }
        },
        {
          "name": "Ativar paciente",
          "request": {
            "method": "PUT",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": { "raw": "{{baseUrl}}/patients/activate/{{patientId}}", "host": ["{{baseUrl}}"], "path": ["patients", "activate", "{{patientId}}"] }
          }
        },
        {
          "name": "Desativar paciente",
          "request": {
            "method": "PUT",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": { "raw": "{{baseUrl}}/patients/deactivate/{{patientId}}", "host": ["{{baseUrl}}"], "path": ["patients", "deactivate", "{{patientId}}"] }
          }
        }
      ]
    },
    {
      "name": "🔔 Webhooks",
      "item": [
        {
          "name": "Listar inscrições",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": {
              "raw": "{{baseUrl}}/webhooks/subscriptions?page=0&size=20",
              "host": ["{{baseUrl}}"], "path": ["webhooks", "subscriptions"],
              "query": [
                { "key": "page", "value": "0" },
                { "key": "size", "value": "20" },
                { "key": "sort", "value": "name,asc", "disabled": true },
                { "key": "index", "value": "", "disabled": true }
              ]
            }
          }
        },
        {
          "name": "Listar inscrições ativas",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": {
              "raw": "{{baseUrl}}/webhooks/subscriptions/active?active=true&page=0&size=20",
              "host": ["{{baseUrl}}"], "path": ["webhooks", "subscriptions", "active"],
              "query": [
                { "key": "active", "value": "true" },
                { "key": "page", "value": "0" },
                { "key": "size", "value": "20" }
              ]
            }
          }
        },
        {
          "name": "Buscar inscrição por ID",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": { "raw": "{{baseUrl}}/webhooks/subscriptions/{{subscriptionId}}", "host": ["{{baseUrl}}"], "path": ["webhooks", "subscriptions", "{{subscriptionId}}"] }
          }
        },
        {
          "name": "Criar inscrição",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Accept",       "value": "application/hal+json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Minha Integração\",\n  \"url\": \"https://meu-dominio.com/webhook/licencas\",\n  \"description\": \"Receber eventos de licenças\",\n  \"events\": [\"LICENCE_CREATED_SUCCESS\", \"LICENCE_CREATED_FAILED\"],\n  \"active\": true,\n  \"headerName\": \"X-Webhook-Secret\",\n  \"headerValue\": \"meu-segredo\"\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{baseUrl}}/webhooks/subscriptions", "host": ["{{baseUrl}}"], "path": ["webhooks", "subscriptions"] },
            "description": "A URL do endpoint receptor deve obrigatoriamente usar HTTPS."
          }
        },
        {
          "name": "Atualizar inscrição",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Content-Type", "value": "application/json" },
              { "key": "Accept",       "value": "application/hal+json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Minha Integração Atualizada\",\n  \"url\": \"https://meu-dominio.com/webhook/licencas\",\n  \"events\": [\"LICENCE_CREATED_SUCCESS\"]\n}",
              "options": { "raw": { "language": "json" } }
            },
            "url": { "raw": "{{baseUrl}}/webhooks/subscriptions/{{subscriptionId}}", "host": ["{{baseUrl}}"], "path": ["webhooks", "subscriptions", "{{subscriptionId}}"] }
          }
        },
        {
          "name": "Remover inscrição",
          "request": {
            "method": "DELETE",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": { "raw": "{{baseUrl}}/webhooks/subscriptions/{{subscriptionId}}", "host": ["{{baseUrl}}"], "path": ["webhooks", "subscriptions", "{{subscriptionId}}"] }
          }
        },
        {
          "name": "Histórico de entregas",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "application/hal+json" }],
            "url": {
              "raw": "{{baseUrl}}/webhooks/subscriptions/{{subscriptionId}}/deliveries?page=0&size=20",
              "host": ["{{baseUrl}}"], "path": ["webhooks", "subscriptions", "{{subscriptionId}}", "deliveries"],
              "query": [
                { "key": "page", "value": "0" },
                { "key": "size", "value": "20" }
              ]
            }
          }
        }
      ]
    }
  ]
}
