{
  "info": {
    "_postman_id": "6cf36d57-a033-4bd7-bd2b-369dd0ea4f16",
    "name": "ViperConnect API",
    "description": "Coleção gerada automaticamente a partir de docs/openapi.yaml.\n\nEdite as variáveis da coleção antes do primeiro uso. Não grave tokens reais no arquivo versionado.\n\nadmin_token: token global ou login administrativo; manager_login_token: login para gerenciar próprias chaves/senha; token: credencial das operações de sessão e VoIP com escopo.\n\nExemplos administrativos incluem exclusões reais. Não execute a coleção inteira automaticamente; revise e envie uma requisição por vez. Nenhuma requisição é disparada ao importar.\n\nNos pagamentos, reutilize payment_reference_id para confirmar e concluir a mesma cobrança.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{token}}",
        "type": "string"
      }
    ]
  },
  "event": [
    {
      "listen": "prerequest",
      "script": {
        "type": "text/javascript",
        "exec": [
          "pm.collectionVariables.set('unix_timestamp', Math.floor(Date.now() / 1000));"
        ]
      }
    }
  ],
  "variable": [
    {
      "key": "If-None-Match",
      "value": "",
      "type": "string"
    },
    {
      "key": "X-File-Name",
      "value": "",
      "type": "string"
    },
    {
      "key": "X-Part-SHA256",
      "value": "",
      "type": "string"
    },
    {
      "key": "accountId",
      "value": "",
      "type": "string"
    },
    {
      "key": "admin_token",
      "value": "",
      "type": "string"
    },
    {
      "key": "around",
      "value": "",
      "type": "string"
    },
    {
      "key": "base_url",
      "value": "http://localhost:9876",
      "type": "string"
    },
    {
      "key": "callId",
      "value": "",
      "type": "string"
    },
    {
      "key": "command",
      "value": "",
      "type": "string"
    },
    {
      "key": "conversationId",
      "value": "",
      "type": "string"
    },
    {
      "key": "conversation_ids",
      "value": "",
      "type": "string"
    },
    {
      "key": "cursor",
      "value": "",
      "type": "string"
    },
    {
      "key": "destination_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "endDate",
      "value": "",
      "type": "string"
    },
    {
      "key": "extensionGroupId",
      "value": "",
      "type": "string"
    },
    {
      "key": "extensionId",
      "value": "",
      "type": "string"
    },
    {
      "key": "file",
      "value": "",
      "type": "string"
    },
    {
      "key": "groupId",
      "value": "120363000000000000@g.us",
      "type": "string"
    },
    {
      "key": "hub.challenge",
      "value": "",
      "type": "string"
    },
    {
      "key": "hub.mode",
      "value": "",
      "type": "string"
    },
    {
      "key": "hub.verify_token",
      "value": "",
      "type": "string"
    },
    {
      "key": "id",
      "value": "",
      "type": "string"
    },
    {
      "key": "ids",
      "value": "",
      "type": "string"
    },
    {
      "key": "key",
      "value": "",
      "type": "string"
    },
    {
      "key": "kind",
      "value": "",
      "type": "string"
    },
    {
      "key": "limit",
      "value": "",
      "type": "string"
    },
    {
      "key": "lockId",
      "value": "",
      "type": "string"
    },
    {
      "key": "manager_login_token",
      "value": "",
      "type": "string"
    },
    {
      "key": "media_id",
      "value": "MEDIA_ID",
      "type": "string"
    },
    {
      "key": "messageId",
      "value": "MESSAGE_ID",
      "type": "string"
    },
    {
      "key": "operation",
      "value": "",
      "type": "string"
    },
    {
      "key": "page",
      "value": "",
      "type": "string"
    },
    {
      "key": "pageSize",
      "value": "",
      "type": "string"
    },
    {
      "key": "part",
      "value": "",
      "type": "string"
    },
    {
      "key": "payment_reference_id",
      "value": "payment-test-001",
      "type": "string"
    },
    {
      "key": "phone",
      "value": "5511999999999",
      "type": "string"
    },
    {
      "key": "picture_id",
      "value": "5511888888888",
      "type": "string"
    },
    {
      "key": "prefix",
      "value": "",
      "type": "string"
    },
    {
      "key": "provider",
      "value": "",
      "type": "string"
    },
    {
      "key": "purpose",
      "value": "",
      "type": "string"
    },
    {
      "key": "queue",
      "value": "",
      "type": "string"
    },
    {
      "key": "recordId",
      "value": "",
      "type": "string"
    },
    {
      "key": "refresh",
      "value": "",
      "type": "string"
    },
    {
      "key": "registrationId",
      "value": "",
      "type": "string"
    },
    {
      "key": "resource",
      "value": "",
      "type": "string"
    },
    {
      "key": "search",
      "value": "",
      "type": "string"
    },
    {
      "key": "session",
      "value": "5511999999999",
      "type": "string"
    },
    {
      "key": "startDate",
      "value": "",
      "type": "string"
    },
    {
      "key": "status_ids",
      "value": "",
      "type": "string"
    },
    {
      "key": "task",
      "value": "",
      "type": "string"
    },
    {
      "key": "to",
      "value": "5511888888888",
      "type": "string"
    },
    {
      "key": "token",
      "value": "",
      "type": "string"
    },
    {
      "key": "type",
      "value": "",
      "type": "string"
    },
    {
      "key": "upload",
      "value": "",
      "type": "string"
    },
    {
      "key": "version",
      "value": "v15.0",
      "type": "string"
    },
    {
      "key": "webhook_id",
      "value": "default",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "Mensagens",
      "item": [
        {
          "name": "Listar conversas do histórico local da sessão",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/conversations?cursor={{cursor}}&limit={{limit}}&search={{search}}&kind={{kind}}&conversation_ids={{conversation_ids}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "conversations"
              ],
              "query": [
                {
                  "key": "cursor",
                  "value": "{{cursor}}",
                  "description": "Cursor opaco vinculado à sessão/filtros",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "{{limit}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "search",
                  "value": "{{search}}",
                  "description": "Nome/telefone/identidade; não conteúdo",
                  "disabled": true
                },
                {
                  "key": "kind",
                  "value": "{{kind}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "conversation_ids",
                  "value": "{{conversation_ids}}",
                  "description": "Até 100 JIDs separados por vírgula para atualizar somente resumos afetados",
                  "disabled": true
                }
              ]
            },
            "description": "Zapo/Redis apenas. Token global, da sessão ou Manager autorizado. Sem consulta ao WhatsApp, recibo de leitura ou renovação do TTL. Inicialização do índice em background (indexing=true). Busca examina até 200 resumos por página; página vazia pode ter continuação. Não retorna contagem global. Exclui Status/newsletters."
          },
          "response": []
        },
        {
          "name": "Histórico local paginado, sem marcar como lido",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/conversations/{{conversationId}}/messages?cursor={{cursor}}&limit={{limit}}&ids={{ids}}&status_ids={{status_ids}}&around={{around}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "conversations",
                "{{conversationId}}",
                "messages"
              ],
              "query": [
                {
                  "key": "cursor",
                  "value": "{{cursor}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "{{limit}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "ids",
                  "value": "{{ids}}",
                  "description": "Até 100 IDs de provider separados por vírgula para delta dentro da conversa",
                  "disabled": true
                },
                {
                  "key": "status_ids",
                  "value": "{{status_ids}}",
                  "description": "Até 100 IDs UnoAPI separados por vírgula para recuperar status pendente após reconexão",
                  "disabled": true
                },
                {
                  "key": "around",
                  "value": "{{around}}",
                  "description": "ID de provider para carregar uma janela limitada ao redor da mensagem citada; não combinar com cursor ou ids. Retorna 404 quando expirada ou fora da conversa.",
                  "disabled": true
                }
              ]
            },
            "description": "Ordem decrescente timestamp/ID, preservando empates. Cursor ancorado no ID, sem deslocamento por novas mensagens. Retenção Redis pela data original (padrão 30 dias), sem renovação por leitura, regravação ou sincronização. Sem data válida, janela fixa desde a primeira gravação. Dados antigos não tocados aguardam o TTL anterior; mensagens com data expirada não são retornadas. Sem protobuf, URLs CDN ou chaves de mídia. Edições/remoções quando recebidas geram overlays locais. Reutilize POST messages para envio/resposta, com reply_id em context.message_id. Políticas existentes readOnReceipt/readOnReply são independentes."
          },
          "response": []
        },
        {
          "name": "Carregar mídia autorizada sob demanda",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages/{{messageId}}/media",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages",
                "{{messageId}}",
                "media"
              ],
              "query": []
            },
            "description": "Consulta a mensagem na sessão antes de acessar storage. Reutiliza mídia interna; quando ausente, download/decrypt oficial Zapo sem abrir socket WhatsApp, respeitando proxy/família IP. Máximo 256 MiB/60s; concorrência deduplicada por processo. Mídia expirada pode falhar; nunca expõe view_once ou mídia removida. Sem predownload/reupload automático. Cache-Control no-store, attachment e nosniff."
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Texto com prévia automática de link",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"text\",\n  \"text\": {\n    \"body\": \"Conheça o ViperConnect: github.com/ViperTecCorporation/ViperConnect\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Texto temporário",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"text\",\n  \"ttl\": 86400,\n  \"text\": {\n    \"body\": \"Esta mensagem expira em 24 horas.\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Localização estática (formato Cloud API)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"recipient_type\": \"individual\",\n  \"to\": \"{{to}}\",\n  \"type\": \"location\",\n  \"location\": {\n    \"latitude\": -15.601,\n    \"longitude\": -56.0974,\n    \"name\": \"Praça em Cuiabá\",\n    \"address\": \"Cuiabá, MT\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Texto em grupo com @all/@todos",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"text\",\n  \"text\": {\n    \"body\": \"Aviso @todos\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Texto em grupo com @telefone",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"text\",\n  \"text\": {\n    \"body\": \"Oi @5511999999999 e @5511888888888\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Editar mensagem enviada",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"message_edit\",\n  \"context\": {\n    \"message_id\": \"uno-message-id-original\"\n  },\n  \"text\": {\n    \"body\": \"Texto editado\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Imagem por link",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"image\",\n  \"image\": {\n    \"link\": \"https://exemplo.com/imagem.jpg\",\n    \"caption\": \"Legenda opcional\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Imagem por Base64 (extensão ViperConnect)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"image\",\n  \"image\": {\n    \"base64\": \"/9j/4AAQSkZJRgABAQ...\",\n    \"mime_type\": \"image/jpeg\",\n    \"filename\": \"foto.jpg\",\n    \"caption\": \"Legenda opcional\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Imagem de visualização única (Zapo)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"image\",\n  \"image\": {\n    \"link\": \"https://exemplo.com/imagem.jpg\",\n    \"view_once\": true\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Documento",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"document\",\n  \"document\": {\n    \"link\": \"https://exemplo.com/arquivo.pdf\",\n    \"filename\": \"contrato.pdf\",\n    \"caption\": \"Contrato para conferência\",\n    \"mime_type\": \"application/pdf\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Mensagem de voz",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"audio\",\n  \"audio\": {\n    \"link\": \"https://exemplo.com/audio.ogg\",\n    \"mime_type\": \"audio/ogg\",\n    \"ptt\": true\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Vídeo",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"video\",\n  \"video\": {\n    \"link\": \"https://exemplo.com/video.mp4\",\n    \"caption\": \"Vídeo curto\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Status/Story com imagem",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"image\",\n  \"image\": {\n    \"link\": \"https://vipertec.com.br/_content/ViperERP/img/FullCam08.jpg\",\n    \"caption\": \"Novidade\"\n  },\n  \"statusJidList\": [\n    \"5511999999999\",\n    \"5500000000002\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Contatos (vCard simplificado)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"contacts\",\n  \"contacts\": [\n    {\n      \"name\": {\n        \"formatted_name\": \"Contato Exemplo\"\n      },\n      \"phones\": [\n        {\n          \"wa_id\": \"5500000000002\",\n          \"phone\": \"+55 00 00000-0002\"\n        }\n      ]\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Reação",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"reaction\",\n  \"reaction\": {\n    \"message_id\": \"MESSAGE_ID\",\n    \"emoji\": \"👍\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Enquete",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"poll\",\n  \"poll\": {\n    \"name\": \"Qual plano você prefere?\",\n    \"options\": [\n      \"Básico\",\n      \"Profissional\"\n    ],\n    \"selectable_count\": 1,\n    \"allow_add_option\": false\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Votar em uma enquete",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"poll_vote\",\n  \"poll_vote\": {\n    \"message_id\": \"MESSAGE_ID_DA_ENQUETE\",\n    \"selected_options\": [\n      \"Profissional\"\n    ]\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Figurinha",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"sticker\",\n  \"sticker\": {\n    \"link\": \"https://example.com/sticker.png\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Interativo - Botões",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"interactive\",\n  \"interactive\": {\n    \"type\": \"button\",\n    \"body\": {\n      \"text\": \"Escolha uma opção\"\n    },\n    \"action\": {\n      \"buttons\": [\n        {\n          \"type\": \"reply\",\n          \"reply\": {\n            \"id\": \"btn_1\",\n            \"title\": \"Opção 1\"\n          }\n        },\n        {\n          \"type\": \"reply\",\n          \"reply\": {\n            \"id\": \"btn_2\",\n            \"title\": \"Opção 2\"\n          }\n        }\n      ]\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Interativo - Botões CTA (URL, ligação e copiar)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"interactive\",\n  \"interactive\": {\n    \"type\": \"button\",\n    \"body\": {\n      \"text\": \"Acesse ou fale com a equipe\"\n    },\n    \"action\": {\n      \"buttons\": [\n        {\n          \"type\": \"cta_url\",\n          \"url\": {\n            \"title\": \"Abrir site\",\n            \"link\": \"https://facebook.com.br\"\n          }\n        },\n        {\n          \"type\": \"cta_call\",\n          \"call\": {\n            \"title\": \"Ligar\",\n            \"phone_number\": \"+5511999999999\"\n          }\n        },\n        {\n          \"type\": \"cta_copy\",\n          \"copy_code\": {\n            \"title\": \"ChavePix\",\n            \"code\": \"0000000055442\"\n          }\n        }\n      ]\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Interativo - WebView Zapo (validado no lab em 03/10/2026)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n\n\nAbertura dentro do WhatsApp confirmada pelo usuario no iPhone em conversa individual e no Android em testes enviados a dois grupos, usando full e true com https://vipertec.com.br. Versoes de sistema e aplicativo nao registradas. Nao garante todos os clientes, carrosseis ou callback de formulario; delivered sozinho nao prova WebView.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"interactive\",\n  \"interactive\": {\n    \"type\": \"button\",\n    \"body\": {\n      \"text\": \"Abra o formulario pelo botao.\"\n    },\n    \"action\": {\n      \"buttons\": [\n        {\n          \"type\": \"cta_url\",\n          \"url\": {\n            \"title\": \"Abrir formulario\",\n            \"link\": \"https://example.com/form\",\n            \"webview_presentation\": \"full\",\n            \"webview_interaction\": true\n          }\n        }\n      ]\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Interativo - Lista",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"interactive\",\n  \"interactive\": {\n    \"type\": \"list\",\n    \"header\": {\n      \"type\": \"text\",\n      \"text\": \"Menu\"\n    },\n    \"body\": {\n      \"text\": \"Escolha uma opção\"\n    },\n    \"footer\": {\n      \"text\": \"Unoapi\"\n    },\n    \"action\": {\n      \"button\": \"Ver opções\",\n      \"sections\": [\n        {\n          \"title\": \"Planos\",\n          \"rows\": [\n            {\n              \"id\": \"plan_basic\",\n              \"title\": \"Básico\",\n              \"description\": \"R$ 10\"\n            },\n            {\n              \"id\": \"plan_pro\",\n              \"title\": \"Pro\",\n              \"description\": \"R$ 20\"\n            }\n          ]\n        }\n      ]\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Interativo - Carrossel com imagens e botões",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"interactive\",\n  \"interactive\": {\n    \"type\": \"carousel\",\n    \"body\": {\n      \"text\": \"Conheça nossos planos\"\n    },\n    \"action\": {\n      \"carousel\": {\n        \"cards\": [\n          {\n            \"header\": {\n              \"type\": \"image\",\n              \"image\": {\n                \"link\": \"https://vipertec.com.br/_content/ViperERP/img/FullCam08.jpg\"\n              }\n            },\n            \"body\": {\n              \"text\": \"Plano Básico\"\n            },\n            \"footer\": {\n              \"text\": \"Para começar\"\n            },\n            \"action\": {\n              \"buttons\": [\n                {\n                  \"type\": \"reply\",\n                  \"reply\": {\n                    \"id\": \"plan_basic\",\n                    \"title\": \"Escolher\"\n                  }\n                }\n              ]\n            }\n          },\n          {\n            \"header\": {\n              \"type\": \"image\",\n              \"image\": {\n                \"link\": \"https://vipertec.com.br/_content/ViperERP/img/FullCam08.jpg\"\n              }\n            },\n            \"body\": {\n              \"text\": \"Plano Profissional\"\n            },\n            \"footer\": {\n              \"text\": \"Mais recursos\"\n            },\n            \"action\": {\n              \"buttons\": [\n                {\n                  \"type\": \"cta_url\",\n                  \"url\": {\n                    \"title\": \"Ver detalhes\",\n                    \"link\": \"https://vipertec.com.br\"\n                  }\n                }\n              ]\n            }\n          }\n        ]\n      }\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Pagamento - PIX estático",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"interactive\",\n  \"interactive\": {\n    \"type\": \"button\",\n    \"action\": {\n      \"buttons\": [\n        {\n          \"type\": \"payment_request\",\n          \"payment_setting\": {\n            \"type\": \"pix_static_code\",\n            \"pix_static_code\": {\n              \"merchant_name\": \"Minha Empresa\",\n              \"key\": \"financeiro@minhaempresa.com.br\",\n              \"key_type\": \"EMAIL\"\n            }\n          }\n        }\n      ]\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — PIX dinâmico avulso - fluxo simplificado oficial",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"interactive\",\n  \"interactive\": {\n    \"type\": \"order_details\",\n    \"body\": {\n      \"text\": \"Pague R$ 149,90 via PIX\"\n    },\n    \"action\": {\n      \"name\": \"review_and_pay\",\n      \"parameters\": {\n        \"reference_id\": \"{{payment_reference_id}}\",\n        \"type\": \"digital-goods\",\n        \"payment_type\": \"br\",\n        \"payment_settings\": [\n          {\n            \"type\": \"pix_dynamic_code\",\n            \"pix_dynamic_code\": {\n              \"code\": \"000201010212...\",\n              \"merchant_name\": \"Minha Empresa\",\n              \"key\": \"12345678000199\",\n              \"key_type\": \"CNPJ\"\n            }\n          }\n        ],\n        \"currency\": \"BRL\",\n        \"total_amount\": {\n          \"value\": 14990,\n          \"offset\": 100\n        }\n      }\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Pedido com imagem e PIX dinâmico",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"interactive\",\n  \"interactive\": {\n    \"type\": \"order_details\",\n    \"header\": {\n      \"type\": \"image\",\n      \"image\": {\n        \"link\": \"https://vipertec.com.br/_content/ViperERP/img/FullCam08.jpg\"\n      }\n    },\n    \"body\": {\n      \"text\": \"Revise e pague seu pedido\"\n    },\n    \"action\": {\n      \"name\": \"review_and_pay\",\n      \"parameters\": {\n        \"reference_id\": \"{{payment_reference_id}}\",\n        \"type\": \"physical-goods\",\n        \"payment_type\": \"br\",\n        \"payment_settings\": [\n          {\n            \"type\": \"pix_dynamic_code\",\n            \"pix_dynamic_code\": {\n              \"code\": \"000201010212...\",\n              \"merchant_name\": \"Minha Empresa\",\n              \"key\": \"12345678000199\",\n              \"key_type\": \"CNPJ\"\n            }\n          }\n        ],\n        \"currency\": \"BRL\",\n        \"total_amount\": {\n          \"value\": 50000,\n          \"offset\": 100\n        },\n        \"order\": {\n          \"status\": \"pending\",\n          \"tax\": {\n            \"value\": 0,\n            \"offset\": 100,\n            \"description\": \"Sem impostos adicionais\"\n          },\n          \"items\": [\n            {\n              \"retailer_id\": \"produto-1\",\n              \"name\": \"Produto\",\n              \"amount\": {\n                \"value\": 50000,\n                \"offset\": 100\n              },\n              \"quantity\": 1\n            }\n          ],\n          \"subtotal\": {\n            \"value\": 50000,\n            \"offset\": 100\n          }\n        }\n      }\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Pedido simplificado com link de pagamento",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"interactive\",\n  \"interactive\": {\n    \"type\": \"order_details\",\n    \"body\": {\n      \"text\": \"Finalize seu pagamento\"\n    },\n    \"action\": {\n      \"name\": \"review_and_pay\",\n      \"parameters\": {\n        \"reference_id\": \"{{payment_reference_id}}\",\n        \"type\": \"digital-goods\",\n        \"payment_type\": \"br\",\n        \"payment_settings\": [\n          {\n            \"type\": \"payment_link\",\n            \"payment_link\": {\n              \"uri\": \"https://pagamentos.example.com/pedido-124\"\n            }\n          }\n        ],\n        \"currency\": \"BRL\",\n        \"total_amount\": {\n          \"value\": 1500,\n          \"offset\": 100\n        }\n      }\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Boleto avulso - fluxo simplificado oficial",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"interactive\",\n  \"interactive\": {\n    \"type\": \"order_details\",\n    \"body\": {\n      \"text\": \"Pague o boleto de R$ 88,48\"\n    },\n    \"action\": {\n      \"name\": \"review_and_pay\",\n      \"parameters\": {\n        \"reference_id\": \"{{payment_reference_id}}\",\n        \"type\": \"digital-goods\",\n        \"payment_type\": \"br\",\n        \"payment_settings\": [\n          {\n            \"type\": \"boleto\",\n            \"boleto\": {\n              \"digitable_line\": \"03399026944140000002628346101018898510000008848\"\n            }\n          }\n        ],\n        \"currency\": \"BRL\",\n        \"total_amount\": {\n          \"value\": 8848,\n          \"offset\": 100\n        }\n      }\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Cartão em um clique - fluxo simplificado oficial",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"interactive\",\n  \"interactive\": {\n    \"type\": \"order_details\",\n    \"body\": {\n      \"text\": \"Confirme o pagamento de R$ 149,90\"\n    },\n    \"action\": {\n      \"name\": \"review_and_pay\",\n      \"parameters\": {\n        \"reference_id\": \"{{payment_reference_id}}\",\n        \"type\": \"digital-goods\",\n        \"payment_type\": \"br\",\n        \"payment_settings\": [\n          {\n            \"type\": \"offsite_card_pay\",\n            \"offsite_card_pay\": {\n              \"last_four_digits\": \"5235\",\n              \"credential_id\": \"credencial-123\"\n            }\n          }\n        ],\n        \"currency\": \"BRL\",\n        \"total_amount\": {\n          \"value\": 14990,\n          \"offset\": 100\n        }\n      }\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Pedido real com boleto, PIX dinâmico e imagem",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"interactive\",\n  \"interactive\": {\n    \"type\": \"order_details\",\n    \"header\": {\n      \"type\": \"image\",\n      \"image\": {\n        \"link\": \"https://vipertec.com.br/_content/ViperERP/img/FullCam08.jpg\"\n      }\n    },\n    \"body\": {\n      \"text\": \"Boleto nº 1033239253 referente à assinatura de Câmera Comodato Mensal — 1 unidade. Vencimento: 10/07/2026. Valor: R$ 60,00.\"\n    },\n    \"action\": {\n      \"name\": \"review_and_pay\",\n      \"parameters\": {\n        \"reference_id\": \"{{payment_reference_id}}\",\n        \"type\": \"digital-goods\",\n        \"payment_type\": \"br\",\n        \"payment_settings\": [\n          {\n            \"type\": \"boleto\",\n            \"boleto\": {\n              \"digitable_line\": \"36490000920005525230800000010918900000000006000\"\n            }\n          },\n          {\n            \"type\": \"pix_dynamic_code\",\n            \"pix_dynamic_code\": {\n              \"code\": \"00020101021226940014BR.GOV.BCB.PIX2572qrcodespix.sejaefi.com.br/bolix/v2/cobv/663b44b6c993415e9e09f92c106d48865204000053039865802BR5905EFISA6008SAOPAULO62070503***63047595\",\n              \"merchant_name\": \"EFISA\",\n              \"key\": \"663b44b6c993415e9e09f92c106d4886\",\n              \"key_type\": \"EVP\"\n            }\n          }\n        ],\n        \"currency\": \"BRL\",\n        \"total_amount\": {\n          \"value\": 6000,\n          \"offset\": 100\n        },\n        \"order\": {\n          \"status\": \"pending\",\n          \"tax\": {\n            \"value\": 0,\n            \"offset\": 100,\n            \"description\": \"Sem impostos adicionais\"\n          },\n          \"items\": [\n            {\n              \"retailer_id\": \"camera-comodato-mensal\",\n              \"name\": \"Câmera Comodato Mensal\",\n              \"amount\": {\n                \"value\": 6000,\n                \"offset\": 100\n              },\n              \"quantity\": 1\n            }\n          ],\n          \"subtotal\": {\n            \"value\": 6000,\n            \"offset\": 100\n          }\n        }\n      }\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Confirmar pagamento e manter pedido em processamento",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"interactive\",\n  \"interactive\": {\n    \"type\": \"order_status\",\n    \"body\": {\n      \"text\": \"Pagamento confirmado para o boleto nº 1033239253.\"\n    },\n    \"footer\": {\n      \"text\": \"Assinatura confirmada\"\n    },\n    \"action\": {\n      \"name\": \"review_order\",\n      \"parameters\": {\n        \"reference_id\": \"{{payment_reference_id}}\",\n        \"order\": {\n          \"status\": \"processing\",\n          \"description\": \"Pagamento confirmado. Pedido em preparação.\"\n        },\n        \"payment\": {\n          \"status\": \"captured\",\n          \"timestamp\": {{unix_timestamp}}\n        }\n      }\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Concluir pedido já pago",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"interactive\",\n  \"interactive\": {\n    \"type\": \"order_status\",\n    \"body\": {\n      \"text\": \"Pedido concluído.\"\n    },\n    \"action\": {\n      \"name\": \"review_order\",\n      \"parameters\": {\n        \"reference_id\": \"{{payment_reference_id}}\",\n        \"order\": {\n          \"status\": \"completed\",\n          \"description\": \"Pagamento confirmado e pedido concluído.\"\n        },\n        \"payment\": {\n          \"status\": \"captured\",\n          \"timestamp\": {{unix_timestamp}}\n        }\n      }\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Marcar mensagem como lida",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"status\": \"read\",\n  \"message_id\": \"MESSAGE_ID\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar mensagem (WhatsApp Cloud shape) — Apagar mensagem enviada",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "messages"
              ],
              "query": []
            },
            "description": "- Em caso de falha de envio, a API responde 200 com corpo OK e o erro é enviado ao webhook de saída.\n- Para mensagens temporárias, informe `ttl` na raiz com o tempo de expiração em segundos.\n- A primeira URL ou domínio público válido gera prévia automaticamente; não é necessário definir uma flag no payload. Domínios sem protocolo são normalizados para `https://` antes do envio.\n- Para publicar Status/Stories, use o modelo específico com `to: status@broadcast`.\n- Mídias preservam o formato Cloud API por `link`. Como extensão ViperConnect, também podem usar `base64` puro ou Data URI; a UnoAPI persiste os bytes antes de enfileirar e nunca encaminha o Base64 ao RabbitMQ ou aos webhooks.\n- PDFs Oracle Reports legados são detectados e normalizados automaticamente antes do upload ao WhatsApp, tanto por `link` quanto por `base64`. O original permanece intacto; PDFs comuns, criptografados, assinados ou com formulário não são convertidos.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"status\": \"deleted\",\n  \"message_id\": \"MESSAGE_ID\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Iniciar timer de mensagem automática",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/timer/{{phone}}/{{to}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "timer",
                "{{phone}}",
                "{{to}}"
              ],
              "query": []
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"message\": \"Ainda precisamos da sua resposta\",\n  \"timeout\": 300000\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Cancelar timer ativo",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/timer/{{phone}}/{{to}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "timer",
                "{{phone}}",
                "{{to}}"
              ],
              "query": []
            },
            "description": ""
          },
          "response": []
        }
      ]
    },
    {
      "name": "Perfil",
      "item": [
        {
          "name": "Consultar privacidade da própria conta",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/{{phone}}/profile/privacy",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "profile",
                "privacy"
              ],
              "query": []
            },
            "description": "Sessões Zapo vinculadas e mobile primary. Consulta o worker; snapshot Redis por sessão, TTL 24h, como fallback de falhas totais/parciais. Sem polling. Cache não inclui Status/e-mail; erros de autorização não usam fallback. Escritas invalidam snapshot e impedem gravação de leituras anteriores. Ausência não significa vazio. Exige autenticação e escopo da sessão."
          },
          "response": []
        },
        {
          "name": "Alterar uma configuração, exceções, bloqueio ou duração padrão — visibility",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{phone}}/profile/privacy",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "profile",
                "privacy"
              ],
              "query": []
            },
            "description": "Alterações independentes, sem transação global. Exceções são deltas e ativam contact_blacklist. Timer afeta novas conversas individuais. Status substitui o público/lista dos próximos Status; não há leitura desse público nesta rota. Não repetir automaticamente após falha de transporte. Mesmo controle de escopo do perfil.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"value\": {\n    \"operation\": \"setting\",\n    \"setting\": \"lastSeen\",\n    \"value\": \"contacts\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Alterar uma configuração, exceções, bloqueio ou duração padrão — exceptions",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{phone}}/profile/privacy",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "profile",
                "privacy"
              ],
              "query": []
            },
            "description": "Alterações independentes, sem transação global. Exceções são deltas e ativam contact_blacklist. Timer afeta novas conversas individuais. Status substitui o público/lista dos próximos Status; não há leitura desse público nesta rota. Não repetir automaticamente após falha de transporte. Mesmo controle de escopo do perfil.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"value\": {\n    \"operation\": \"exceptions\",\n    \"setting\": \"lastSeen\",\n    \"add\": [\n      \"5511999999999\"\n    ],\n    \"remove\": []\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Alterar uma configuração, exceções, bloqueio ou duração padrão — block",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{phone}}/profile/privacy",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "profile",
                "privacy"
              ],
              "query": []
            },
            "description": "Alterações independentes, sem transação global. Exceções são deltas e ativam contact_blacklist. Timer afeta novas conversas individuais. Status substitui o público/lista dos próximos Status; não há leitura desse público nesta rota. Não repetir automaticamente após falha de transporte. Mesmo controle de escopo do perfil.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"value\": {\n    \"operation\": \"block\",\n    \"jid\": \"5511999999999\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Alterar uma configuração, exceções, bloqueio ou duração padrão — unblock",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{phone}}/profile/privacy",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "profile",
                "privacy"
              ],
              "query": []
            },
            "description": "Alterações independentes, sem transação global. Exceções são deltas e ativam contact_blacklist. Timer afeta novas conversas individuais. Status substitui o público/lista dos próximos Status; não há leitura desse público nesta rota. Não repetir automaticamente após falha de transporte. Mesmo controle de escopo do perfil.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"value\": {\n    \"operation\": \"unblock\",\n    \"jid\": \"123456789@lid\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Alterar uma configuração, exceções, bloqueio ou duração padrão — timer",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{phone}}/profile/privacy",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "profile",
                "privacy"
              ],
              "query": []
            },
            "description": "Alterações independentes, sem transação global. Exceções são deltas e ativam contact_blacklist. Timer afeta novas conversas individuais. Status substitui o público/lista dos próximos Status; não há leitura desse público nesta rota. Não repetir automaticamente após falha de transporte. Mesmo controle de escopo do perfil.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"value\": {\n    \"operation\": \"timer\",\n    \"duration\": 604800\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Alterar uma configuração, exceções, bloqueio ou duração padrão — status",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{phone}}/profile/privacy",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "profile",
                "privacy"
              ],
              "query": []
            },
            "description": "Alterações independentes, sem transação global. Exceções são deltas e ativam contact_blacklist. Timer afeta novas conversas individuais. Status substitui o público/lista dos próximos Status; não há leitura desse público nesta rota. Não repetir automaticamente após falha de transporte. Mesmo controle de escopo do perfil.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"value\": {\n    \"operation\": \"status\",\n    \"mode\": \"ALLOW_LIST\",\n    \"userJids\": [\n      \"5511999999999\"\n    ]\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Consultar e-mail da conta WhatsApp (mobile primary)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/{{phone}}/profile/account_email",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "profile",
                "account_email"
              ],
              "query": []
            },
            "description": "Consulta direta sem cache Redis, com Cache-Control no-store. Usa autenticação e escopo da sessão; indisponível em sessão vinculada. Não é o e-mail comercial público."
          },
          "response": []
        },
        {
          "name": "Cadastrar ou verificar e-mail da conta (mobile primary) — set",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{phone}}/profile/account_email",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "profile",
                "account_email"
              ],
              "query": []
            },
            "description": "Ações explícitas e separadas: set cadastra; request_code solicita código pt-BR; verify valida seis dígitos; confirm confirma a propriedade após verificação. Não envia código automaticamente, não remove e-mail e não altera o e-mail comercial. Código não entra no cache de perfil. Falha de transporte pode ter resultado incerto: consultar antes de repetir.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"value\": {\n    \"operation\": \"set\",\n    \"email\": \"conta@example.com\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Cadastrar ou verificar e-mail da conta (mobile primary) — request_code",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{phone}}/profile/account_email",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "profile",
                "account_email"
              ],
              "query": []
            },
            "description": "Ações explícitas e separadas: set cadastra; request_code solicita código pt-BR; verify valida seis dígitos; confirm confirma a propriedade após verificação. Não envia código automaticamente, não remove e-mail e não altera o e-mail comercial. Código não entra no cache de perfil. Falha de transporte pode ter resultado incerto: consultar antes de repetir.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"value\": {\n    \"operation\": \"request_code\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Cadastrar ou verificar e-mail da conta (mobile primary) — verify",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{phone}}/profile/account_email",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "profile",
                "account_email"
              ],
              "query": []
            },
            "description": "Ações explícitas e separadas: set cadastra; request_code solicita código pt-BR; verify valida seis dígitos; confirm confirma a propriedade após verificação. Não envia código automaticamente, não remove e-mail e não altera o e-mail comercial. Código não entra no cache de perfil. Falha de transporte pode ter resultado incerto: consultar antes de repetir.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"value\": {\n    \"operation\": \"verify\",\n    \"code\": \"123456\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Cadastrar ou verificar e-mail da conta (mobile primary) — confirm",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{phone}}/profile/account_email",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "profile",
                "account_email"
              ],
              "query": []
            },
            "description": "Ações explícitas e separadas: set cadastra; request_code solicita código pt-BR; verify valida seis dígitos; confirm confirma a propriedade após verificação. Não envia código automaticamente, não remove e-mail e não altera o e-mail comercial. Código não entra no cache de perfil. Falha de transporte pode ter resultado incerto: consultar antes de repetir.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"value\": {\n    \"operation\": \"confirm\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Obter chave de navegador para Google Maps (administrador)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/settings/google-maps/browser",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "settings",
                "google-maps",
                "browser"
              ],
              "query": []
            },
            "description": "Somente administrador. Retorna chave restrita a referrers para Maps JavaScript API, com Cache-Control no-store. A chave será visível no navegador; nunca usar chave irrestrita de servidor.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Configuração do navegador",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/settings/google-maps/browser",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "settings",
                    "google-maps",
                    "browser"
                  ],
                  "query": []
                },
                "description": "Somente administrador. Retorna chave restrita a referrers para Maps JavaScript API, com Cache-Control no-store. A chave será visível no navegador; nunca usar chave irrestrita de servidor.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Configuração do navegador",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            }
          ]
        },
        {
          "name": "Consultar configuração Google Maps (administrador)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/settings/google-maps",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "settings",
                "google-maps"
              ],
              "query": []
            },
            "description": "Estado global da instância; não retorna a chave. Mapa disponível ao administrador no perfil comercial, com carregamento explícito.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Estado",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/settings/google-maps",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "settings",
                    "google-maps"
                  ],
                  "query": []
                },
                "description": "Estado global da instância; não retorna a chave. Mapa disponível ao administrador no perfil comercial, com carregamento explícito.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Estado",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            }
          ]
        },
        {
          "name": "Salvar chave de navegador Google Maps (administrador)",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/settings/google-maps",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "settings",
                "google-maps"
              ],
              "query": []
            },
            "description": "Redis sem TTL e sem criptografia adicional. Restrinja domínios e APIs no Google Cloud. Não verifica validade ou quota e nunca retorna a chave.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"apiKey\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Remover chave Google Maps (administrador)",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/settings/google-maps",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "settings",
                "google-maps"
              ],
              "query": []
            },
            "description": "Remove a configuração global compartilhada entre as sessões.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Consultar o perfil da própria sessão Zapo",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/{{phone}}/profile?refresh={{refresh}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "profile"
              ],
              "query": [
                {
                  "key": "refresh",
                  "value": "{{refresh}}",
                  "description": "Use 1 para consultar a Zapo e renovar o cache. Sem esse parâmetro, retorna Redis quando disponível; cache ausente consulta a Zapo. Falhas preservam snapshot anterior e sinalizam stale/refresh_failed. Retenção de 24h.",
                  "disabled": true
                }
              ]
            },
            "description": "Funciona com sessões vinculadas e mobile primary, pessoais e Business. Campos de leitura indisponíveis ficam nulos e são listados em warnings; não são campos apagados. Não retorna credenciais nem PIN de username. Somente a sessão autenticada, sem parâmetro de JID alvo."
          },
          "response": []
        },
        {
          "name": "Alterar nome de exibição",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{phone}}/profile/name",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "profile",
                "name"
              ],
              "query": []
            },
            "description": "pushName; não modifica o nome comercial verificado. String vazia restaura o padrão do dispositivo.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"value\": \"João Silva\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Alterar recado About",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{phone}}/profile/about",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "profile",
                "about"
              ],
              "query": []
            },
            "description": "Recado legado via setStatus, não Status de 24 horas. String vazia limpa.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"value\": \"Atendimento de segunda a sexta\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Alterar nome de usuário",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{phone}}/profile/username",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "profile",
                "username"
              ],
              "query": []
            },
            "description": "Sujeito às regras adicionais da Zapo e disponibilidade no servidor. Retorno false do SDK resulta em 409, não sucesso.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"value\": \"empresa_suporte\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Remover username da própria sessão",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/{{phone}}/profile/username",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "profile",
                "username"
              ],
              "query": []
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Atualizar dados comerciais",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{phone}}/profile/business",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "profile",
                "business"
              ],
              "query": []
            },
            "description": "Exclusivo de conta Business, independentemente do tipo de conexão. Delta: campos omitidos preservados, string vazia limpa, listas vazias limpam. Não edita nome verificado, área de cobertura nem observações de localização. IDs de categoria devem ser conhecidos; sem catálogo.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"value\": {\n    \"description\": \"Suporte de TI\",\n    \"address\": \"Cláudia - MT\",\n    \"latitude\": -11.499317,\n    \"longitude\": -54.873917,\n    \"websites\": [\n      {\n        \"url\": \"https://example.com\"\n      }\n    ],\n    \"businessHours\": {\n      \"timezone\": \"America/Cuiaba\",\n      \"config\": [\n        {\n          \"dayOfWeek\": \"mon\",\n          \"mode\": \"specific_hours\",\n          \"openTime\": 480,\n          \"closeTime\": 1080\n        }\n      ]\n    }\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Enviar foto de perfil",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{phone}}/profile/picture",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "profile",
                "picture"
              ],
              "query": []
            },
            "description": "Até 5 MiB de bytes decodificados, máximo 20 milhões de pixels. PNG/JPEG/WebP são decodificados, orientação corrigida, recorte central 640x640 e JPEG. Sem URLs remotas nem JID alvo.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"value\": \"BASE64_DA_IMAGEM_SEM_PREFIXO_DATA\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Remover foto da própria sessão",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/{{phone}}/profile/picture",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "profile",
                "picture"
              ],
              "query": []
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Enviar capa Business",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{phone}}/profile/cover",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "profile",
                "cover"
              ],
              "query": []
            },
            "description": "Business somente; exige S3 configurado. Até 5 MiB, 20 milhões de pixels; JPEG com largura máxima 1600, sem recorte quadrado. Persiste imagem no S3 e ID no Redis sem TTL. GET profile retorna preview local com URL assinada por 15 minutos. O SDK não oferece leitura da capa remota; alterações externas não são detectadas. Falhas de persistência após confirmação remota retornam success e warning; guarde o ID nesse caso.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"value\": \"BASE64_DA_IMAGEM_SEM_PREFIXO_DATA\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Remover capa comercial pelo ID retornado no envio",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{phone}}/profile/cover",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "profile",
                "cover"
              ],
              "query": []
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"value\": \"ID_RETORNADO_AO_ENVIAR_CAPA\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Manager",
      "item": [
        {
          "name": "Envio manual de histórico desabilitado",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/mobile-devices/{{id}}/companion-history",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "mobile-devices",
                "{{id}}",
                "companion-history"
              ],
              "query": []
            },
            "description": "Retorna 410 mobile_history_pair_time_only. O histórico agora é iniciado automaticamente no bootstrap de um novo vínculo, não depois nem em reconexões. Fila separada; todo o histórico elegível disponível no Redis, sem corte por idade ou quantidade total, lido em páginas de 20 registros. Mantém filtros de privacidade e limites de tamanho por registro do piloto inline. A importação no secundário ainda depende de validação real.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"target\": \"5511999999999:2@s.whatsapp.net\",\n  \"confirm\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Consultar progresso do histórico enviado ao secundário",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/mobile-devices/{{id}}/companion-history/{{operation}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "mobile-devices",
                "{{id}}",
                "companion-history",
                "{{operation}}"
              ],
              "query": []
            },
            "description": "Não envia mensagens. submitted confirma apenas a conclusão das chamadas de publicação do SDK, não recebimento nem importação; empty indica ausência de registros elegíveis; unknown indica envio parcial/incerto, sem retry automático; failed indica falha antes do envio; expired indica que o worker não executou no prazo. Sem mensagens, chaves ou URLs na resposta. Registro cifrado no Redis por uma hora; nova tarefa substitui a anterior. queued/running vencem após cinco minutos e aparecem como expired/unknown.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Estado e contagem, sem conteúdo das mensagens",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/manager/mobile-devices/{{id}}/companion-history/{{operation}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "mobile-devices",
                    "{{id}}",
                    "companion-history",
                    "{{operation}}"
                  ],
                  "query": []
                },
                "description": "Não envia mensagens. submitted confirma apenas a conclusão das chamadas de publicação do SDK, não recebimento nem importação; empty indica ausência de registros elegíveis; unknown indica envio parcial/incerto, sem retry automático; failed indica falha antes do envio; expired indica que o worker não executou no prazo. Sem mensagens, chaves ou URLs na resposta. Registro cifrado no Redis por uma hora; nova tarefa substitui a anterior. queued/running vencem após cinco minutos e aparecem como expired/unknown.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Estado e contagem, sem conteúdo das mensagens",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            }
          ]
        },
        {
          "name": "Consultar, vincular ou revogar dispositivo secundário no worker",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/mobile-devices/{{id}}/companions",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "mobile-devices",
                "{{id}}",
                "companions"
              ],
              "query": []
            },
            "description": "Administrador em qualquer servidor configurado. Enfileira um comando cifrado no Redis por até 10 minutos, processado pelo worker que já possui a conexão do principal, fora da fila de mensagens. Listagem usa o epoch persistido, não presença nem inventário remoto completo. QR é o conteúdo decodificado da imagem; code é o código de 8 caracteres solicitado pelo secundário (não SMS). Mutações exigem confirm=true. Sem repetição automática em resultado incerto. Consultar o identificador retornado até estado terminal.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"action\": \"list\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Comando aceito, não significa vínculo concluído",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/manager/mobile-devices/{{id}}/companions",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "mobile-devices",
                    "{{id}}",
                    "companions"
                  ],
                  "query": []
                },
                "description": "Administrador em qualquer servidor configurado. Enfileira um comando cifrado no Redis por até 10 minutos, processado pelo worker que já possui a conexão do principal, fora da fila de mensagens. Listagem usa o epoch persistido, não presença nem inventário remoto completo. QR é o conteúdo decodificado da imagem; code é o código de 8 caracteres solicitado pelo secundário (não SMS). Mutações exigem confirm=true. Sem repetição automática em resultado incerto. Consultar o identificador retornado até estado terminal.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"action\": \"list\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Comando aceito, não significa vínculo concluído",
              "code": 202,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            }
          ]
        },
        {
          "name": "Consultar resultado de comando de dispositivos vinculados",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/mobile-devices/{{id}}/companions/{{operation}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "mobile-devices",
                "{{id}}",
                "companions",
                "{{operation}}"
              ],
              "query": []
            },
            "description": "Somente administrador. Esta consulta de resultado não envia comandos ao WhatsApp. QR, código e chaves nunca são retornados. queued/running são estados pendentes; done confirma a chamada SDK; unknown indica resultado remoto incerto, sem retry automático; expired indica que o comando não foi executado no prazo. O comando list consulta os dispositivos da própria conta com source=server_device_list e ignora resultados concluídos em cache para refletir desvinculação remota; chamadas ainda em andamento são deduplicadas. Cada companion contém deviceJid e canRevoke; keyIndex e addedAtSeconds são opcionais, presentes somente quando há registro no epoch local. canRevoke=false indica vínculo listado no servidor sem material local necessário para revogar pelo SDK; use o WhatsApp para revogá-lo. Não garante presença online nem conclusão do bootstrap. Falha de consulta não é apresentada como lista vazia.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Resultado sem material de autenticação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/manager/mobile-devices/{{id}}/companions/{{operation}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "mobile-devices",
                    "{{id}}",
                    "companions",
                    "{{operation}}"
                  ],
                  "query": []
                },
                "description": "Somente administrador. Esta consulta de resultado não envia comandos ao WhatsApp. QR, código e chaves nunca são retornados. queued/running são estados pendentes; done confirma a chamada SDK; unknown indica resultado remoto incerto, sem retry automático; expired indica que o comando não foi executado no prazo. O comando list consulta os dispositivos da própria conta com source=server_device_list e ignora resultados concluídos em cache para refletir desvinculação remota; chamadas ainda em andamento são deduplicadas. Cada companion contém deviceJid e canRevoke; keyIndex e addedAtSeconds são opcionais, presentes somente quando há registro no epoch local. canRevoke=false indica vínculo listado no servidor sem material local necessário para revogar pelo SDK; use o WhatsApp para revogá-lo. Não garante presença online nem conclusão do bootstrap. Falha de consulta não é apresentada como lista vazia.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Resultado sem material de autenticação",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            }
          ]
        },
        {
          "name": "Listar backups assíncronos de sessões Zapo normais",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/session-transfers/backups",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "session-transfers",
                "backups"
              ],
              "query": []
            },
            "description": "Administrador via Bearer, sem credenciais API. Retorna somente metadados, retidos por 24 horas.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Suspender e exportar sessão Zapo Redis em segundo plano",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/session-transfers/{{phone}}/backup-tasks",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "session-transfers",
                "{{phone}}",
                "backup-tasks"
              ],
              "query": []
            },
            "description": "Administrador autenticado. Suspende a origem e gera arquivo criptografado stream-v2 em blocos, disponível no storage por 24 horas. Sem teto global de registros ou bytes; depende da capacidade do Redis e storage. Blocos de até 4 MiB e DUMP base64 de até 2000000 caracteres por registro. Sem truncamento. Falha recupera autoConnect anterior se a tarefa ainda controlar a configuração; sucesso mantém origem suspensa.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Baixar .vipersession criptografado",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/session-transfers/{{phone}}/backup-tasks/{{task}}/download",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "session-transfers",
                "{{phone}}",
                "backup-tasks",
                "{{task}}",
                "download"
              ],
              "query": []
            },
            "description": "Somente administrador, Cache-Control no-store. Arquivos stream-v2 retornam metadados fileName e streamed=true; baixar os bytes pelo endpoint download/file. Backups legados retornam archive inline.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Baixar bytes do backup criptografado em streaming",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/session-transfers/{{phone}}/backup-tasks/{{task}}/download/file",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "session-transfers",
                "{{phone}}",
                "backup-tasks",
                "{{task}}",
                "download",
                "file"
              ],
              "query": []
            },
            "description": "Somente administrador. Cache-Control no-store e Content-Disposition attachment. Arquivo retido por 24 horas no storage.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Iniciar upload em partes de backup stream-v2",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/session-transfers/restore-uploads",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "session-transfers",
                "restore-uploads"
              ],
              "query": []
            },
            "description": "Administrador (login ou stack; chaves API recusadas). Cria UUID vinculado ao administrador autenticado, com retenção de 24h. Redis guarda somente metadados e recibos SHA-256; bytes cifrados ficam no media storage padrão da instalação. Em Swarm, todas as réplicas web e o broker devem compartilhar S3/MinIO ou volume local. Não recebe senha nesta etapa. Capacidade do storage limita o tamanho total.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"size\": 1\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Upload criado",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/manager/session-transfers/restore-uploads",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "session-transfers",
                    "restore-uploads"
                  ],
                  "query": []
                },
                "description": "Administrador (login ou stack; chaves API recusadas). Cria UUID vinculado ao administrador autenticado, com retenção de 24h. Redis guarda somente metadados e recibos SHA-256; bytes cifrados ficam no media storage padrão da instalação. Em Swarm, todas as réplicas web e o broker devem compartilhar S3/MinIO ou volume local. Não recebe senha nesta etapa. Capacidade do storage limita o tamanho total.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"size\": 1\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Upload criado",
              "code": 201,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            }
          ]
        },
        {
          "name": "Consultar upload e resultado assíncrono da restauração",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/session-transfers/restore-uploads/{{upload}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "session-transfers",
                "restore-uploads",
                "{{upload}}"
              ],
              "query": []
            },
            "description": "Somente o administrador dono. Estados uploading, restoring, ready, failed e interrupted. Inclui received, parts, expiresAt e result ou error quando disponíveis. Interrupção de processo/trava não reinicia a importação; revisar staging e destino. HTTP 202 da finalização não significa restauração concluída. Resposta sem senha ou chaves internas de objetos.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Cancelar upload e limpar partes temporárias",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/session-transfers/restore-uploads/{{upload}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "session-transfers",
                "restore-uploads",
                "{{upload}}"
              ],
              "query": []
            },
            "description": "Somente dono. Não cancela tarefas restoring/interrupted, pois a importação pode ter promovido chaves. Partes incompletas expiram com remoção agendada no broker; exige broker ativo. Não apaga credenciais da sessão.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Enviar parte binária de até 8 MiB",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/octet-stream"
              },
              {
                "key": "X-Part-SHA256",
                "value": "{{X-Part-SHA256}}",
                "description": "",
                "disabled": false
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/session-transfers/restore-uploads/{{upload}}/parts/{{part}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "session-transfers",
                "restore-uploads",
                "{{upload}}",
                "parts",
                "{{part}}"
              ],
              "query": []
            },
            "description": "Partes sequenciais, índice zero-based. Todas têm 8 MiB exceto a última, cujo tamanho restante deve ser exato. SHA-256 hexadecimal obrigatório; bytes e digest verificados antes do recibo. Repetição de uma parte confirmada só aceita bytes idênticos. Não é multipart/form-data de arquivo inteiro: cada parte é uma requisição separada, abaixo do limite padrão do Cloudflare. Respeitar limites menores configurados no proxy. Sem alteração de dados da sessão nesta fase.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "file",
              "file": {
                "src": ""
              }
            }
          },
          "response": []
        },
        {
          "name": "Finalizar upload e iniciar restauração em segundo plano",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/session-transfers/restore-uploads/{{upload}}/complete",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "session-transfers",
                "restore-uploads",
                "{{upload}}",
                "complete"
              ],
              "query": []
            },
            "description": "Exige todas as partes confirmadas. Recebe senha somente nesta requisição; não a persiste. Reconstrói stream ordenado com no máximo 8 MiB por parte, verifica novamente os recibos e usa o importador autenticado stream-v2. Valida fechamento e identidade antes de ativar sessão, sem sobrescrever destino. Consulta GET para resultado; não reenviar backup por timeout HTTP. Processo reiniciado perde execução e retorna interrupted, exigindo revisão manual. Partes são limpas após resultado e possuem remoção agendada em 24h.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"password\": \"string\",\n  \"confirmOriginOffline\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Restaurar backup stream-v2 em lotes",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/octet-stream"
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/session-transfers/restore-stream",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "session-transfers",
                "restore-stream"
              ],
              "query": []
            },
            "description": "Administrador autenticado antes da leitura. Corpo binário começa com uma linha JSON contendo password e confirmOriginOffline=true, seguida de newline e dos bytes originais do arquivo stream-v2. Sem teto global; limites por bloco e registro. Valida arquivo inteiro e identidade antes de ativar a sessão. Promove lotes de 100 registros sem sobrescrever destino. Preserva TTL, configura autoConnect=true e webhooks vazios. Interrupção durante promoção exige revisão; não repetir importação cegamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "file",
              "file": {
                "src": ""
              }
            }
          },
          "response": []
        },
        {
          "name": "Restaurar sessão vinculada com conexão automática sem sobrescrever o destino",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/session-transfers/restore",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "session-transfers",
                "restore"
              ],
              "query": []
            },
            "description": "Compatibilidade com backups legados Zapo Redis. Até 50000 registros, 8 MiB internos e 16 MiB por arquivo legado. JSON HTTP até 17 MiB após autenticar administrador. Para stream-v2 usar restore-stream. Webhooks vazios; autoConnect=true. Solicita conexão ao worker após liberar a trava. Confirmação obrigatória da origem offline.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"archive\": \"string\",\n  \"password\": \"string\",\n  \"confirmOriginOffline\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Consultar se a remoção local após migração está liberada",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/session-transfers/{{phone}}/transfer-removal",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "session-transfers",
                "{{phone}}",
                "transfer-removal"
              ],
              "query": []
            },
            "description": "Administrador; verifica checkpoint de backup e suspensão da origem.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Remover origem após migração, sem logout no WhatsApp",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/session-transfers/{{phone}}/transfer-removal",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "session-transfers",
                "{{phone}}",
                "transfer-removal"
              ],
              "query": []
            },
            "description": "Exige senha do administrador, telefone e confirmação da validação do backup no destino. Remove cadastro, índice e atribuição ativa ao usuário, preservando histórico de atribuições. Apenas limpeza local, sem revogação remota.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Listar tarefas de backup dos dispositivos",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/mobile-devices/backups",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "mobile-devices",
                "backups"
              ],
              "query": []
            },
            "description": "Somente administrador autenticado, sem credencial API. Retorna metadados, nunca a senha ou o arquivo. Atualizar ao retornar ao painel.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Gerar backup em segundo plano",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/mobile-devices/{{id}}/backup-tasks",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "mobile-devices",
                "{{id}}",
                "backup-tasks"
              ],
              "query": []
            },
            "description": "Somente administrador. Uma tarefa simultânea. Senha apenas em memória durante execução; arquivo criptografado disponível por 24 horas após conclusão. Reinício durante geração não retoma automaticamente; após 10 minutos aparece interrupted. Mantém somente o último resultado por dispositivo.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"password\": \"string\",\n  \"confirmSuspend\": true,\n  \"mode\": \"credentials\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Baixar arquivo criptografado de backup concluído",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/mobile-devices/{{id}}/backup-tasks/{{task}}/download",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "mobile-devices",
                "{{id}}",
                "backup-tasks",
                "{{task}}",
                "download"
              ],
              "query": []
            },
            "description": "Somente administrador autenticado. Resposta JSON com fileName e archive para download pelo navegador. Cache-Control no-store. A senha não é retornada.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Consultar liberação de remoção local após migração",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/mobile-devices/{{id}}/transfer-removal",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "mobile-devices",
                "{{id}}",
                "transfer-removal"
              ],
              "query": []
            },
            "description": "Administrador autenticado. Requer checkpoint de backup concluído e origem suspensa.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Elegibilidade local; não confirma restauração no destino.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/manager/mobile-devices/{{id}}/transfer-removal",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "mobile-devices",
                    "{{id}}",
                    "transfer-removal"
                  ],
                  "query": []
                },
                "description": "Administrador autenticado. Requer checkpoint de backup concluído e origem suspensa.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Elegibilidade local; não confirma restauração no destino.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            }
          ]
        },
        {
          "name": "Remover somente desta instância após migração",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/mobile-devices/{{id}}/transfer-removal",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "mobile-devices",
                "{{id}}",
                "transfer-removal"
              ],
              "query": []
            },
            "description": "Confere novamente a senha do administrador conectado, com limite de tentativas. Exige backup concluído, suspensão e confirmação humana da validação no destino. Remove a atribuição ativa ao usuário, preservando seu histórico. Não faz logout remoto nem revoga vínculos WhatsApp. Reativar a origem invalida o checkpoint.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"phone\": \"string\",\n  \"confirm\": true,\n  \"backupValidated\": true,\n  \"password\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Suspender e exportar backup criptografado do dispositivo principal",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/mobile-devices/{{id}}/backup",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "mobile-devices",
                "{{id}}",
                "backup"
              ],
              "query": []
            },
            "description": "Somente administrador, com Redis e chave de criptografia configurada. Suspende a conexão sem remover webhooks. Exporta auth, Signal, prekeys, sender keys, app-state, privacy tokens, companions e registro em .viperdevice cifrado por senha (AES-256-GCM e scrypt). mode=complete inclui também mensagens de todos os tipos, índices, contatos, mapeamentos UnoID/provider e status, preservando expiração. mode=credentials é o padrão da API para compatibilidade; o painel seleciona complete. Não inclui arquivos de mídia, webhooks, usuários ou tokens da stack. Limites de 16 MiB por arquivo, 8 MiB de conteúdo interno e 50000 registros, sem truncamento silencioso. A origem permanece com autoConnect=false, inclusive se o download falhar. Nunca reconecte a origem após começar a usar o destino.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"password\": \"string\",\n  \"confirmSuspend\": true,\n  \"mode\": \"credentials\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Conteúdo criptografado para download; resposta com Cache-Control no-store",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/manager/mobile-devices/{{id}}/backup",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "mobile-devices",
                    "{{id}}",
                    "backup"
                  ],
                  "query": []
                },
                "description": "Somente administrador, com Redis e chave de criptografia configurada. Suspende a conexão sem remover webhooks. Exporta auth, Signal, prekeys, sender keys, app-state, privacy tokens, companions e registro em .viperdevice cifrado por senha (AES-256-GCM e scrypt). mode=complete inclui também mensagens de todos os tipos, índices, contatos, mapeamentos UnoID/provider e status, preservando expiração. mode=credentials é o padrão da API para compatibilidade; o painel seleciona complete. Não inclui arquivos de mídia, webhooks, usuários ou tokens da stack. Limites de 16 MiB por arquivo, 8 MiB de conteúdo interno e 50000 registros, sem truncamento silencioso. A origem permanece com autoConnect=false, inclusive se o download falhar. Nunca reconecte a origem após começar a usar o destino.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"password\": \"string\",\n  \"confirmSuspend\": true,\n  \"mode\": \"credentials\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Conteúdo criptografado para download; resposta com Cache-Control no-store",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            }
          ]
        },
        {
          "name": "Restaurar dispositivo principal a partir de backup criptografado",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/mobile-devices/restore",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "mobile-devices",
                "restore"
              ],
              "query": []
            },
            "description": "Somente administrador em qualquer servidor configurado. Arquivo até 16 MiB; Zapo 1.9.0, store-redis 1.3.0, mesmo prefixo Redis e formato DUMP compatível. Recusa cadastro, configuração ou credenciais preexistentes para o número. Reprotege o registro com a chave da stack de destino. Restaura com autoConnect=true e sem webhooks; solicita conexão ao worker após liberar a trava. Não solicita SMS nem garante validade remota de credenciais revogadas. Exige confirmação da origem desligada. Falha de publicação retorna warning restore_connection_dispatch_failed sem desfazer a restauração.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"archive\": \"string\",\n  \"password\": \"string\",\n  \"confirmOriginOffline\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Dispositivo restaurado com conexão automática habilitada; solicitação ao worker não garante conexão concluída",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/manager/mobile-devices/restore",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "mobile-devices",
                    "restore"
                  ],
                  "query": []
                },
                "description": "Somente administrador em qualquer servidor configurado. Arquivo até 16 MiB; Zapo 1.9.0, store-redis 1.3.0, mesmo prefixo Redis e formato DUMP compatível. Recusa cadastro, configuração ou credenciais preexistentes para o número. Reprotege o registro com a chave da stack de destino. Restaura com autoConnect=true e sem webhooks; solicita conexão ao worker após liberar a trava. Não solicita SMS nem garante validade remota de credenciais revogadas. Exige confirmação da origem desligada. Falha de publicação retorna warning restore_connection_dispatch_failed sem desfazer a restauração.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"archive\": \"string\",\n  \"password\": \"string\",\n  \"confirmOriginOffline\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Dispositivo restaurado com conexão automática habilitada; solicitação ao worker não garante conexão concluída",
              "code": 201,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            }
          ]
        },
        {
          "name": "Consultar conexão do dispositivo principal",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/mobile-devices/{{id}}/connection",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "mobile-devices",
                "{{id}}",
                "connection"
              ],
              "query": []
            },
            "description": "Somente administrador no servidor configurado. Consulta a sessão Uno pelo número canônico registrado; não abre socket nem retorna credenciais.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Estado persistido da conexão, não confirmação de entrega de mensagens",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/manager/mobile-devices/{{id}}/connection",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "mobile-devices",
                    "{{id}}",
                    "connection"
                  ],
                  "query": []
                },
                "description": "Somente administrador no servidor configurado. Consulta a sessão Uno pelo número canônico registrado; não abre socket nem retorna credenciais.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Estado persistido da conexão, não confirmação de entrega de mensagens",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            }
          ]
        },
        {
          "name": "Importar registro e conectar dispositivo principal à Zapo",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/mobile-devices/{{id}}/connection",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "mobile-devices",
                "{{id}}",
                "connection"
              ],
              "query": []
            },
            "description": "Disponível no servidor configurado. Exige registro concluído e confirmação explícita. Preserva o registro cifrado, importa auth nativo somente se vazio e compatível, usa lease da sessão e publica a conexão para o worker existente. Habilita autoConnect somente após importação. Nunca sobrescreve auth atualizado nem restaura auth removido após importação. Uma resposta 202 não significa conectado; consultar GET. Não envia mensagens de teste.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"confirm\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Consultar estado do registro mobile experimental",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/mobile-devices/{{id}}/registration",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "mobile-devices",
                "{{id}}",
                "registration"
              ],
              "query": []
            },
            "description": "Somente administrador com Bearer. Proteção das credenciais provisionada automaticamente no Redis persistente; sem nova ENV em instalações novas. Retorna estado público, nunca OTP ou credenciais. Registrado não significa conectado pela Zapo. Operação interrompida fica incerta, sem reenvio automático.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Estado público do registro",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/manager/mobile-devices/{{id}}/registration",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "mobile-devices",
                    "{{id}}",
                    "registration"
                  ],
                  "query": []
                },
                "description": "Somente administrador com Bearer. Proteção das credenciais provisionada automaticamente no Redis persistente; sem nova ENV em instalações novas. Retorna estado público, nunca OTP ou credenciais. Registrado não significa conectado pela Zapo. Operação interrompida fica incerta, sem reenvio automático.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Estado público do registro",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"idle\"\n}"
            }
          ]
        },
        {
          "name": "Consultar confirmação feita no aparelho principal",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/mobile-devices/{{id}}/registration/check",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "mobile-devices",
                "{{id}}",
                "registration",
                "check"
              ],
              "query": []
            },
            "description": "Consulta somente /exist com as mesmas chaves após device_confirm_or_second_code. Não solicita nem verifica código e não conecta automaticamente. Exige resposta ok, login canônico válido e ausência de pendência; valida identidade e grava por CAS. Intervalo mínimo de 15 segundos entre consultas. Falhas preservam credenciais e prazos de reenvio. A sessão mantém o número cadastrado; a autenticação usa o canônico confirmado pelo WhatsApp.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"confirm\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Registro confirmado; conectar à Zapo pelo fluxo existente",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/manager/mobile-devices/{{id}}/registration/check",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "mobile-devices",
                    "{{id}}",
                    "registration",
                    "check"
                  ],
                  "query": []
                },
                "description": "Consulta somente /exist com as mesmas chaves após device_confirm_or_second_code. Não solicita nem verifica código e não conecta automaticamente. Exige resposta ok, login canônico válido e ausência de pendência; valida identidade e grava por CAS. Intervalo mínimo de 15 segundos entre consultas. Falhas preservam credenciais e prazos de reenvio. A sessão mantém o número cadastrado; a autenticação usa o canônico confirmado pelo WhatsApp.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"confirm\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Registro confirmado; conectar à Zapo pelo fluxo existente",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"idle\"\n}"
            }
          ]
        },
        {
          "name": "Solicitar código por SMS ou ligação de voz",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/mobile-devices/{{id}}/registration/request",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "mobile-devices",
                "{{id}}",
                "registration",
                "request"
              ],
              "query": []
            },
            "description": "Administrador e consentimento explícito. method=sms (padrão) ou voice, inclusive telefone fixo. Uma tentativa por ação, sem troca automática de método. Persiste chaves antes da rede e preserva identidade nos reenvios. Nova solicitação exige confirmResend=true e canResendSms ou canResendVoice conforme o método. fail/blocked na etapa request permite nova tentativa manual por qualquer método quando não há pendência ou prazo remoto ainda vigente; sem prazo, não impõe espera local. Respeita espera remota; desafios e resultados incertos continuam bloqueados. Não garante aceitação do provedor nem conecta automaticamente pela Zapo.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"confirm\": true,\n  \"method\": \"sms\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Consulte status; bloqueio não equivale a SMS enviado",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/manager/mobile-devices/{{id}}/registration/request",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "mobile-devices",
                    "{{id}}",
                    "registration",
                    "request"
                  ],
                  "query": []
                },
                "description": "Administrador e consentimento explícito. method=sms (padrão) ou voice, inclusive telefone fixo. Uma tentativa por ação, sem troca automática de método. Persiste chaves antes da rede e preserva identidade nos reenvios. Nova solicitação exige confirmResend=true e canResendSms ou canResendVoice conforme o método. fail/blocked na etapa request permite nova tentativa manual por qualquer método quando não há pendência ou prazo remoto ainda vigente; sem prazo, não impõe espera local. Respeita espera remota; desafios e resultados incertos continuam bloqueados. Não garante aceitação do provedor nem conecta automaticamente pela Zapo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"confirm\": true,\n  \"method\": \"sms\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Consulte status; bloqueio não equivale a SMS enviado",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"idle\"\n}"
            }
          ]
        },
        {
          "name": "Confirmar código SMS do registro mobile experimental",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/mobile-devices/{{id}}/registration/verify",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "mobile-devices",
                "{{id}}",
                "registration",
                "verify"
              ],
              "query": []
            },
            "description": "Código de seis dígitos como string. Aceito após code_required ou recuperação explícita com confirmRecovery=true quando canRetryVerification=true. Recuperação preserva chaves, não solicita SMS, exige intervalo de 60 segundos e limita a três confirmações totais. Autorizações no aparelho são concluídas manualmente e consultadas em registration/check sem novo código. A sessão preserva o número cadastrado e a autenticação usa o canônico retornado pelo WhatsApp. PIN, CAPTCHA e outros desafios não são contornados. Nunca inicia socket Zapo.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"code\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Estado atualizado; registrado não equivale a conectado",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/manager/mobile-devices/{{id}}/registration/verify",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "mobile-devices",
                    "{{id}}",
                    "registration",
                    "verify"
                  ],
                  "query": []
                },
                "description": "Código de seis dígitos como string. Aceito após code_required ou recuperação explícita com confirmRecovery=true quando canRetryVerification=true. Recuperação preserva chaves, não solicita SMS, exige intervalo de 60 segundos e limita a três confirmações totais. Autorizações no aparelho são concluídas manualmente e consultadas em registration/check sem novo código. A sessão preserva o número cadastrado e a autenticação usa o canônico retornado pelo WhatsApp. PIN, CAPTCHA e outros desafios não são contornados. Nunca inicia socket Zapo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"code\": \"string\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Estado atualizado; registrado não equivale a conectado",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"idle\"\n}"
            }
          ]
        },
        {
          "name": "Consultar capacidades Mobile Primary",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/mobile-devices/capabilities",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "mobile-devices",
                "capabilities"
              ],
              "query": []
            },
            "description": "Exige Authorization: Bearer administrativo. Disponível em qualquer UNOAPI_SERVER_NAME, Docker standalone ou Swarm. Web e worker compartilham a chave interna provisionada automaticamente na mesma base Redis persistente, independente do token da API. Instalações legadas preservam MOBILE_REGISTRATION_KEY durante a migração inicial. Runtime SMS incluído na imagem. VoIP requer serviço integrado configurado. A consulta não abre sockets nem envia SMS.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Capacidades e configuração do Mobile Primary",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/manager/mobile-devices/capabilities",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "mobile-devices",
                    "capabilities"
                  ],
                  "query": []
                },
                "description": "Exige Authorization: Bearer administrativo. Disponível em qualquer UNOAPI_SERVER_NAME, Docker standalone ou Swarm. Web e worker compartilham a chave interna provisionada automaticamente na mesma base Redis persistente, independente do token da API. Instalações legadas preservam MOBILE_REGISTRATION_KEY durante a migração inicial. Runtime SMS incluído na imagem. VoIP requer serviço integrado configurado. A consulta não abre sockets nem envia SMS.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Capacidades e configuração do Mobile Primary",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            }
          ]
        },
        {
          "name": "Listar rascunhos de dispositivos principais",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/mobile-devices",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "mobile-devices"
              ],
              "query": []
            },
            "description": "Somente administrador. Retorna até 100 rascunhos, ordenados por telefone. Esses registros não são sessões conectadas nem reservam o número. Authorization exige Bearer; tokens na URL não são aceitos. Cache-Control: no-store.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Rascunhos de dispositivos",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/manager/mobile-devices",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "mobile-devices"
                  ],
                  "query": []
                },
                "description": "Somente administrador. Retorna até 100 rascunhos, ordenados por telefone. Esses registros não são sessões conectadas nem reservam o número. Authorization exige Bearer; tokens na URL não são aceitos. Cache-Control: no-store.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Rascunhos de dispositivos",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            }
          ]
        },
        {
          "name": "Cadastrar rascunho de dispositivo principal",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/mobile-devices",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "mobile-devices"
              ],
              "query": []
            },
            "description": "Salva somente metadados no Redis; não solicita SMS, não cria credenciais, não conecta e não muda sessões existentes. Requer administrador e Bearer. Consentimento obrigatório; telefone único entre rascunhos. Repetição retorna 409, sem criar duplicata. Nome máximo de 80 caracteres sem caracteres de controle. Não aceita proxy, OTP, tokens, credenciais, estado ou atribuição de responsável.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"phone\": \"5511999999999\",\n  \"name\": \"Laboratório\",\n  \"platform\": \"android\",\n  \"accountType\": \"personal\",\n  \"labConsent\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Rascunho criado, não registrado no WhatsApp",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/manager/mobile-devices",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "mobile-devices"
                  ],
                  "query": []
                },
                "description": "Salva somente metadados no Redis; não solicita SMS, não cria credenciais, não conecta e não muda sessões existentes. Requer administrador e Bearer. Consentimento obrigatório; telefone único entre rascunhos. Repetição retorna 409, sem criar duplicata. Nome máximo de 80 caracteres sem caracteres de controle. Não aceita proxy, OTP, tokens, credenciais, estado ou atribuição de responsável.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"phone\": \"5511999999999\",\n  \"name\": \"Laboratório\",\n  \"platform\": \"android\",\n  \"accountType\": \"personal\",\n  \"labConsent\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Rascunho criado, não registrado no WhatsApp",
              "code": 201,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"string\",\n  \"phone\": \"string\",\n  \"name\": \"string\",\n  \"platform\": \"android\",\n  \"accountType\": \"personal\",\n  \"connectionMode\": \"mobile_primary\",\n  \"state\": \"draft\",\n  \"createdAt\": \"string\",\n  \"createdBy\": \"string\"\n}"
            }
          ]
        },
        {
          "name": "Consultar rascunho de dispositivo principal",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/mobile-devices/{{id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "mobile-devices",
                "{{id}}"
              ],
              "query": []
            },
            "description": "Consulta administrativa, com Bearer e flag experimental. Não consulta o WhatsApp. O ID identifica somente o cadastro local.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Metadados do cadastro experimental",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/manager/mobile-devices/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "mobile-devices",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Consulta administrativa, com Bearer e flag experimental. Não consulta o WhatsApp. O ID identifica somente o cadastro local.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Metadados do cadastro experimental",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"string\",\n  \"phone\": \"string\",\n  \"name\": \"string\",\n  \"platform\": \"android\",\n  \"accountType\": \"personal\",\n  \"connectionMode\": \"mobile_primary\",\n  \"state\": \"draft\",\n  \"createdAt\": \"string\",\n  \"createdBy\": \"string\"\n}"
            }
          ]
        },
        {
          "name": "Remover somente um rascunho experimental",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/mobile-devices/{{id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "mobile-devices",
                "{{id}}"
              ],
              "query": []
            },
            "description": "Requer administrador, Bearer e flag experimental. Exige confirm=true. Compare-and-delete impede apagar um registro substituído concorrentemente. Não desconecta nem exclui contas WhatsApp, credenciais, mídias, webhooks ou sessões vinculadas. Somente estado draft pode ser removido por esta operação.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"confirm\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Excluir definitivamente dispositivo principal e credenciais locais",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/mobile-devices/{{id}}/full",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "mobile-devices",
                "{{id}}",
                "full"
              ],
              "query": []
            },
            "description": "Exclusivo de administrador. Exige confirmação, aceite de novo SMS e número exato do cadastro. Marca exclusão em andamento, bloqueia registro/importação, suspende a conexão e aguarda a liberação da lease do worker antes de limpar o store Zapo, configuração, registro SMS cifrado e cadastro. Não exclui a conta no WhatsApp. Novo uso exige novo registro por SMS, sujeito às validações e esperas do provider. Mídias, histórico de webhooks e atribuições históricas são preservados. A atribuição ativa ao usuário é removida para não manter uma sessão pendente na lista. Em caso de falha parcial, repita a exclusão; o cadastro fica marcado como deleting.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"confirm\": true,\n  \"acknowledgeNewSms\": true,\n  \"phone\": \"5511999999999\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Entrar no Manager",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/login",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "login"
              ],
              "query": []
            },
            "description": "Local, não implantado. admin usa o token da stack como senha; usuários usam suas senhas. Retorna token e user; login expira em 12 horas.",
            "auth": {
              "type": "noauth"
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"username\": \"admin\",\n  \"password\": \"SUBSTITUA_PELO_TOKEN_DA_STACK\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Operação concluída",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/manager/login",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "login"
                  ],
                  "query": []
                },
                "description": "Local, não implantado. admin usa o token da stack como senha; usuários usam suas senhas. Retorna token e user; login expira em 12 horas.",
                "auth": {
                  "type": "noauth"
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"username\": \"admin\",\n  \"password\": \"SUBSTITUA_PELO_TOKEN_DA_STACK\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Operação concluída",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"token\": \"string\",\n  \"user\": {\n    \"id\": \"string\",\n    \"username\": \"string\",\n    \"name\": \"string\",\n    \"role\": \"admin\",\n    \"active\": false\n  }\n}"
            }
          ]
        },
        {
          "name": "Consultar identidade do Manager",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/me",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "me"
              ],
              "query": []
            },
            "description": "Papel resolvido pelo servidor a partir do token, sem aceitar claims do cliente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Operação concluída",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/manager/me",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "me"
                  ],
                  "query": []
                },
                "description": "Papel resolvido pelo servidor a partir do token, sem aceitar claims do cliente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Operação concluída",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"user\": {\n    \"id\": \"string\",\n    \"username\": \"string\",\n    \"name\": \"string\",\n    \"role\": \"admin\"\n  }\n}"
            }
          ]
        },
        {
          "name": "Sair do Manager",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/logout",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "logout"
              ],
              "query": []
            },
            "description": "Revoga somente o token de login atual; não revoga chave de API nem token global.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{manager_login_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Listar usuários do Manager",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/users",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "users"
              ],
              "query": []
            },
            "description": "Somente administrador.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Operação concluída",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/manager/users",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "users"
                  ],
                  "query": []
                },
                "description": "Somente administrador.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Operação concluída",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"users\": [\n    {\n      \"id\": \"string\",\n      \"username\": \"string\",\n      \"name\": \"string\",\n      \"role\": \"admin\",\n      \"active\": false,\n      \"phones\": [\n        \"string\"\n      ]\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Criar usuário do Manager",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/users",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "users"
              ],
              "query": []
            },
            "description": "Somente administrador. Cria usuário ativo com role user; admin é reservado e username é normalizado para minúsculas.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"username\": \"operador.exemplo\",\n  \"name\": \"Operador de exemplo\",\n  \"password\": \"SUBSTITUA_POR_SENHA_FORTE\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Operação concluída",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/manager/users",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "users"
                  ],
                  "query": []
                },
                "description": "Somente administrador. Cria usuário ativo com role user; admin é reservado e username é normalizado para minúsculas.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"username\": \"operador.exemplo\",\n  \"name\": \"Operador de exemplo\",\n  \"password\": \"SUBSTITUA_POR_SENHA_FORTE\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Operação concluída",
              "code": 201,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"string\",\n  \"username\": \"string\",\n  \"name\": \"string\",\n  \"role\": \"admin\",\n  \"active\": false\n}"
            }
          ]
        },
        {
          "name": "Atualizar usuário do Manager",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/users/{{id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "users",
                "{{id}}"
              ],
              "query": []
            },
            "description": "Somente administrador. Desativar invalida a geração de login; logins anteriores não retornam após reativação. Chaves de API ficam suspensas enquanto desativado e retomam após reativação se não expiradas nem revogadas. Senhas usam hashes scrypt.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Operador de exemplo\",\n  \"active\": false\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Operação concluída",
              "originalRequest": {
                "method": "PATCH",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/manager/users/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "users",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Somente administrador. Desativar invalida a geração de login; logins anteriores não retornam após reativação. Chaves de API ficam suspensas enquanto desativado e retomam após reativação se não expiradas nem revogadas. Senhas usam hashes scrypt.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"Operador de exemplo\",\n  \"active\": false\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Operação concluída",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"string\",\n  \"username\": \"string\",\n  \"name\": \"string\",\n  \"role\": \"admin\",\n  \"active\": false\n}"
            }
          ]
        },
        {
          "name": "Revogar chaves de usuário",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/users/{{id}}/revoke-keys",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "users",
                "{{id}}",
                "revoke-keys"
              ],
              "query": []
            },
            "description": "Somente administrador.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Consultar atribuições e histórico",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/assignments",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "assignments"
              ],
              "query": []
            },
            "description": "Somente administrador. Retorna assignments (mapa por PN canônico) e history. Atribuição persistente existe antes da conexão e sobrevive à remoção; webhooks exigem restauração manual.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Operação concluída",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/manager/assignments",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "assignments"
                  ],
                  "query": []
                },
                "description": "Somente administrador. Retorna assignments (mapa por PN canônico) e history. Atribuição persistente existe antes da conexão e sobrevive à remoção; webhooks exigem restauração manual.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Operação concluída",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"assignments\": {},\n  \"history\": [\n    {\n      \"phone\": \"string\",\n      \"from\": \"string\",\n      \"to\": \"string\",\n      \"at\": \"string\",\n      \"actor\": \"string\"\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Atribuir, transferir ou liberar conta",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/assignments/{{phone}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "assignments",
                "{{phone}}"
              ],
              "query": []
            },
            "description": "Somente administrador. CAS compara expected_owner com o proprietário atual; null representa ausência de proprietário. user_id null libera a atribuição. Em conflito, revisar proprietário atualizado no diálogo e confirmar novamente, sem repetição automática.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"user_id\": \"ID_DO_NOVO_PROPRIETARIO\",\n  \"expected_owner\": null\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Operação concluída",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/manager/assignments/{{phone}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "assignments",
                    "{{phone}}"
                  ],
                  "query": []
                },
                "description": "Somente administrador. CAS compara expected_owner com o proprietário atual; null representa ausência de proprietário. user_id null libera a atribuição. Em conflito, revisar proprietário atualizado no diálogo e confirmar novamente, sem repetição automática.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"user_id\": \"ID_DO_NOVO_PROPRIETARIO\",\n  \"expected_owner\": null\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Operação concluída",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true\n}"
            },
            {
              "name": "Proprietário alterado; revisar antes de tentar novamente",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/manager/assignments/{{phone}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "assignments",
                    "{{phone}}"
                  ],
                  "query": []
                },
                "description": "Somente administrador. CAS compara expected_owner com o proprietário atual; null representa ausência de proprietário. user_id null libera a atribuição. Em conflito, revisar proprietário atualizado no diálogo e confirmar novamente, sem repetição automática.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"user_id\": \"ID_DO_NOVO_PROPRIETARIO\",\n  \"expected_owner\": null\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Proprietário alterado; revisar antes de tentar novamente",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"string\",\n  \"current_owner\": \"string\"\n}"
            }
          ]
        },
        {
          "name": "Listar próprias chaves",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/keys",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "keys"
              ],
              "query": []
            },
            "description": "Somente chaves da conta autenticada; não aceita identidade escolhida pelo cliente. Exige token de login, não chave de API.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{manager_login_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Operação concluída",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/manager/keys",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "keys"
                  ],
                  "query": []
                },
                "description": "Somente chaves da conta autenticada; não aceita identidade escolhida pelo cliente. Exige token de login, não chave de API.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{manager_login_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Operação concluída",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"keys\": [\n    {\n      \"id\": \"string\",\n      \"userId\": \"string\",\n      \"name\": \"string\",\n      \"createdAt\": \"string\",\n      \"expiresAt\": \"string\"\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Criar chave pessoal",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/keys",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "keys"
              ],
              "query": []
            },
            "description": "Chave opaca aleatória, separada da senha. Pertence à conta autenticada. Validade padrão de 90 dias, máxima de 365 dias. Exige token de login, não chave de API.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{manager_login_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Integração de exemplo\",\n  \"days\": 90\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Operação concluída",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/manager/keys",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "manager",
                    "keys"
                  ],
                  "query": []
                },
                "description": "Chave opaca aleatória, separada da senha. Pertence à conta autenticada. Validade padrão de 90 dias, máxima de 365 dias. Exige token de login, não chave de API.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{manager_login_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"Integração de exemplo\",\n  \"days\": 90\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Operação concluída",
              "code": 201,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"token\": \"string\",\n  \"key\": {\n    \"id\": \"string\",\n    \"userId\": \"string\",\n    \"name\": \"string\",\n    \"createdAt\": \"string\",\n    \"expiresAt\": \"string\"\n  }\n}"
            }
          ]
        },
        {
          "name": "Revogar própria chave",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/manager/keys/{{id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "keys",
                "{{id}}"
              ],
              "query": []
            },
            "description": "Somente chave pertencente à conta autenticada. Exige token de login, não chave de API.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{manager_login_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Alterar própria senha",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/manager/password",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "manager",
                "password"
              ],
              "query": []
            },
            "description": "Verifica a senha atual e grava hash scrypt da nova senha. A chave pessoal não é a senha. Exige token de login, não chave de API.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{manager_login_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"current_password\": \"SENHA_ATUAL\",\n  \"password\": \"NOVA_SENHA_FORTE\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Administração",
      "item": [
        {
          "name": "Navegar na árvore de chaves Redis",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/redis/tree?prefix={{prefix}}&limit={{limit}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "redis",
                "tree"
              ],
              "query": [
                {
                  "key": "prefix",
                  "value": "{{prefix}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "{{limit}}",
                  "description": "",
                  "disabled": true
                }
              ]
            },
            "description": "Lista até 200 nós por prefixo permitido unoapi- ou unoapi:, incluindo as chaves públicas users, names, assignments, history e keys de manager-identity:{v1}:. Identidades e histórico de webhooks são somente leitura; suas subárvores não podem ser excluídas. Prefixo vazio lista raízes; não use curingas. descendantCount é informativo. Acesso exclusivo de administrador.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Nós da árvore",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/redis/tree?prefix={{prefix}}&limit={{limit}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "redis",
                    "tree"
                  ],
                  "query": [
                    {
                      "key": "prefix",
                      "value": "{{prefix}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "limit",
                      "value": "{{limit}}",
                      "description": "",
                      "disabled": true
                    }
                  ]
                },
                "description": "Lista até 200 nós por prefixo permitido unoapi- ou unoapi:, incluindo as chaves públicas users, names, assignments, history e keys de manager-identity:{v1}:. Identidades e histórico de webhooks são somente leitura; suas subárvores não podem ser excluídas. Prefixo vazio lista raízes; não use curingas. descendantCount é informativo. Acesso exclusivo de administrador.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Nós da árvore",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"prefix\": \"unoapi:exemplo:\",\n  \"nodes\": []\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/redis/tree?prefix={{prefix}}&limit={{limit}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "redis",
                    "tree"
                  ],
                  "query": [
                    {
                      "key": "prefix",
                      "value": "{{prefix}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "limit",
                      "value": "{{limit}}",
                      "description": "",
                      "disabled": true
                    }
                  ]
                },
                "description": "Lista até 200 nós por prefixo permitido unoapi- ou unoapi:, incluindo as chaves públicas users, names, assignments, history e keys de manager-identity:{v1}:. Identidades e histórico de webhooks são somente leitura; suas subárvores não podem ser excluídas. Prefixo vazio lista raízes; não use curingas. descendantCount é informativo. Acesso exclusivo de administrador.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/redis/tree?prefix={{prefix}}&limit={{limit}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "redis",
                    "tree"
                  ],
                  "query": [
                    {
                      "key": "prefix",
                      "value": "{{prefix}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "limit",
                      "value": "{{limit}}",
                      "description": "",
                      "disabled": true
                    }
                  ]
                },
                "description": "Lista até 200 nós por prefixo permitido unoapi- ou unoapi:, incluindo as chaves públicas users, names, assignments, history e keys de manager-identity:{v1}:. Identidades e histórico de webhooks são somente leitura; suas subárvores não podem ser excluídas. Prefixo vazio lista raízes; não use curingas. descendantCount é informativo. Acesso exclusivo de administrador.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            }
          ]
        },
        {
          "name": "Excluir todas as chaves de um prefixo Redis",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/redis/tree?prefix={{prefix}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "redis",
                "tree"
              ],
              "query": [
                {
                  "key": "prefix",
                  "value": "{{prefix}}",
                  "description": "",
                  "disabled": false
                }
              ]
            },
            "description": "Exclusão destrutiva sem dry-run. Prefixo permitido deve terminar em dois-pontos; confirm deve ser idêntico. Faça backup recuperável antes de executar.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"confirm\": \"unoapi:exemplo:\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Quantidade removida",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/redis/tree?prefix={{prefix}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "redis",
                    "tree"
                  ],
                  "query": [
                    {
                      "key": "prefix",
                      "value": "{{prefix}}",
                      "description": "",
                      "disabled": false
                    }
                  ]
                },
                "description": "Exclusão destrutiva sem dry-run. Prefixo permitido deve terminar em dois-pontos; confirm deve ser idêntico. Faça backup recuperável antes de executar.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"confirm\": \"unoapi:exemplo:\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Quantidade removida",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"prefix\": \"unoapi:exemplo:\",\n  \"removed\": 1\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/redis/tree?prefix={{prefix}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "redis",
                    "tree"
                  ],
                  "query": [
                    {
                      "key": "prefix",
                      "value": "{{prefix}}",
                      "description": "",
                      "disabled": false
                    }
                  ]
                },
                "description": "Exclusão destrutiva sem dry-run. Prefixo permitido deve terminar em dois-pontos; confirm deve ser idêntico. Faça backup recuperável antes de executar.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"confirm\": \"unoapi:exemplo:\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"redis_prefix_confirmation_mismatch\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/redis/tree?prefix={{prefix}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "redis",
                    "tree"
                  ],
                  "query": [
                    {
                      "key": "prefix",
                      "value": "{{prefix}}",
                      "description": "",
                      "disabled": false
                    }
                  ]
                },
                "description": "Exclusão destrutiva sem dry-run. Prefixo permitido deve terminar em dois-pontos; confirm deve ser idêntico. Faça backup recuperável antes de executar.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"confirm\": \"unoapi:exemplo:\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/redis/tree?prefix={{prefix}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "redis",
                    "tree"
                  ],
                  "query": [
                    {
                      "key": "prefix",
                      "value": "{{prefix}}",
                      "description": "",
                      "disabled": false
                    }
                  ]
                },
                "description": "Exclusão destrutiva sem dry-run. Prefixo permitido deve terminar em dois-pontos; confirm deve ser idêntico. Faça backup recuperável antes de executar.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"confirm\": \"unoapi:exemplo:\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            }
          ]
        },
        {
          "name": "Listar filas RabbitMQ da UnoAPI",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/rabbitmq/queues",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "rabbitmq",
                "queues"
              ],
              "query": []
            },
            "description": "Requer o token administrativo global (`UNOAPI_AUTH_TOKEN`). As credenciais são\nobtidas internamente de `AMQP_URL`; nenhuma credencial do RabbitMQ é recebida\nou devolvida por esta rota.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Filas cujo nome pertence ao namespace configurado da UnoAPI.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/rabbitmq/queues",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "rabbitmq",
                    "queues"
                  ],
                  "query": []
                },
                "description": "Requer o token administrativo global (`UNOAPI_AUTH_TOKEN`). As credenciais são\nobtidas internamente de `AMQP_URL`; nenhuma credencial do RabbitMQ é recebida\nou devolvida por esta rota.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Filas cujo nome pertence ao namespace configurado da UnoAPI.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/rabbitmq/queues",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "rabbitmq",
                    "queues"
                  ],
                  "query": []
                },
                "description": "Requer o token administrativo global (`UNOAPI_AUTH_TOKEN`). As credenciais são\nobtidas internamente de `AMQP_URL`; nenhuma credencial do RabbitMQ é recebida\nou devolvida por esta rota.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            }
          ]
        },
        {
          "name": "Inspecionar uma amostra de mensagens da fila",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/rabbitmq/queues/{{queue}}/messages?limit={{limit}}&session={{session}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "rabbitmq",
                "queues",
                "{{queue}}",
                "messages"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "{{limit}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "session",
                  "value": "{{session}}",
                  "description": "Filtra a amostra por telefone da sessão no routing key ou payload.",
                  "disabled": true
                }
              ]
            },
            "description": "Lê até 50 mensagens e as recoloca na fila. A inspeção pode alterar a ordem\nrelativa das mensagens e nunca remove itens.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Amostra com campos sensíveis mascarados.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/rabbitmq/queues/{{queue}}/messages?limit={{limit}}&session={{session}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "rabbitmq",
                    "queues",
                    "{{queue}}",
                    "messages"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "{{limit}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "session",
                      "value": "{{session}}",
                      "description": "Filtra a amostra por telefone da sessão no routing key ou payload.",
                      "disabled": true
                    }
                  ]
                },
                "description": "Lê até 50 mensagens e as recoloca na fila. A inspeção pode alterar a ordem\nrelativa das mensagens e nunca remove itens.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Amostra com campos sensíveis mascarados.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/rabbitmq/queues/{{queue}}/messages?limit={{limit}}&session={{session}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "rabbitmq",
                    "queues",
                    "{{queue}}",
                    "messages"
                  ],
                  "query": [
                    {
                      "key": "limit",
                      "value": "{{limit}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "session",
                      "value": "{{session}}",
                      "description": "Filtra a amostra por telefone da sessão no routing key ou payload.",
                      "disabled": true
                    }
                  ]
                },
                "description": "Lê até 50 mensagens e as recoloca na fila. A inspeção pode alterar a ordem\nrelativa das mensagens e nunca remove itens.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            }
          ]
        },
        {
          "name": "Remover uma ou várias mensagens prontas",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/rabbitmq/queues/{{queue}}/messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "rabbitmq",
                "queues",
                "{{queue}}",
                "messages"
              ],
              "query": []
            },
            "description": "Remove as próximas 1 a 50 mensagens prontas ou todas quando `count` for `all`.\nMensagens já entregues a consumidores (unacked) não são removidas. Exige confirmação\nliteral do nome da fila.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"count\": 1,\n  \"confirm\": \"SUBSTITUA_PELO_NOME_EXATO_DA_FILA\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Resultado da remoção.",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/rabbitmq/queues/{{queue}}/messages",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "rabbitmq",
                    "queues",
                    "{{queue}}",
                    "messages"
                  ],
                  "query": []
                },
                "description": "Remove as próximas 1 a 50 mensagens prontas ou todas quando `count` for `all`.\nMensagens já entregues a consumidores (unacked) não são removidas. Exige confirmação\nliteral do nome da fila.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"count\": 1,\n  \"confirm\": \"SUBSTITUA_PELO_NOME_EXATO_DA_FILA\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Resultado da remoção.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/rabbitmq/queues/{{queue}}/messages",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "rabbitmq",
                    "queues",
                    "{{queue}}",
                    "messages"
                  ],
                  "query": []
                },
                "description": "Remove as próximas 1 a 50 mensagens prontas ou todas quando `count` for `all`.\nMensagens já entregues a consumidores (unacked) não são removidas. Exige confirmação\nliteral do nome da fila.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"count\": 1,\n  \"confirm\": \"SUBSTITUA_PELO_NOME_EXATO_DA_FILA\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            }
          ]
        },
        {
          "name": "Listar chaves Redis da UnoAPI",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/redis/keys?search={{search}}&limit={{limit}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "redis",
                "keys"
              ],
              "query": [
                {
                  "key": "search",
                  "value": "{{search}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "{{limit}}",
                  "description": "",
                  "disabled": true
                }
              ]
            },
            "description": "Usa SCAN e limita o resultado a 1000 chaves. Expõe os namespaces unoapi- e unoapi:, além das chaves permitidas users, names, assignments, history e keys de manager-identity:{v1}:. Tokens de login e índices de autenticação permanecem ocultos. Acesso: administrador autenticado (token global da stack ou login Manager com papel admin).",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Chaves encontradas.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/redis/keys?search={{search}}&limit={{limit}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "redis",
                    "keys"
                  ],
                  "query": [
                    {
                      "key": "search",
                      "value": "{{search}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "limit",
                      "value": "{{limit}}",
                      "description": "",
                      "disabled": true
                    }
                  ]
                },
                "description": "Usa SCAN e limita o resultado a 1000 chaves. Expõe os namespaces unoapi- e unoapi:, além das chaves permitidas users, names, assignments, history e keys de manager-identity:{v1}:. Tokens de login e índices de autenticação permanecem ocultos. Acesso: administrador autenticado (token global da stack ou login Manager com papel admin).",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Chaves encontradas.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/redis/keys?search={{search}}&limit={{limit}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "redis",
                    "keys"
                  ],
                  "query": [
                    {
                      "key": "search",
                      "value": "{{search}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "limit",
                      "value": "{{limit}}",
                      "description": "",
                      "disabled": true
                    }
                  ]
                },
                "description": "Usa SCAN e limita o resultado a 1000 chaves. Expõe os namespaces unoapi- e unoapi:, além das chaves permitidas users, names, assignments, history e keys de manager-identity:{v1}:. Tokens de login e índices de autenticação permanecem ocultos. Acesso: administrador autenticado (token global da stack ou login Manager com papel admin).",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            }
          ]
        },
        {
          "name": "Consultar tipo, TTL e conteúdo de uma chave",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/redis/keys/{{key}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "redis",
                "keys",
                "{{key}}"
              ],
              "query": []
            },
            "description": "Limita coleções grandes e mascara campos sensíveis.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Conteúdo tipado da chave.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/redis/keys/{{key}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "redis",
                    "keys",
                    "{{key}}"
                  ],
                  "query": []
                },
                "description": "Limita coleções grandes e mascara campos sensíveis.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Conteúdo tipado da chave.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/redis/keys/{{key}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "redis",
                    "keys",
                    "{{key}}"
                  ],
                  "query": []
                },
                "description": "Limita coleções grandes e mascara campos sensíveis.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            }
          ]
        },
        {
          "name": "Criar ou substituir uma chave",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/redis/keys/{{key}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "redis",
                "keys",
                "{{key}}"
              ],
              "query": []
            },
            "description": "Aceita string, hash, list, set e zset. Exige confirmação literal da chave.\nConteúdo mascarado não pode ser salvo, evitando substituir segredos por `[REDACTED]`.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"type\": \"string\",\n  \"value\": \"exemplo\",\n  \"ttlSeconds\": 60,\n  \"confirm\": \"unoapi:exemplo:chave\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Chave salva.",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/redis/keys/{{key}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "redis",
                    "keys",
                    "{{key}}"
                  ],
                  "query": []
                },
                "description": "Aceita string, hash, list, set e zset. Exige confirmação literal da chave.\nConteúdo mascarado não pode ser salvo, evitando substituir segredos por `[REDACTED]`.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"type\": \"string\",\n  \"value\": \"exemplo\",\n  \"ttlSeconds\": 60,\n  \"confirm\": \"unoapi:exemplo:chave\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Chave salva.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/redis/keys/{{key}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "redis",
                    "keys",
                    "{{key}}"
                  ],
                  "query": []
                },
                "description": "Aceita string, hash, list, set e zset. Exige confirmação literal da chave.\nConteúdo mascarado não pode ser salvo, evitando substituir segredos por `[REDACTED]`.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"type\": \"string\",\n  \"value\": \"exemplo\",\n  \"ttlSeconds\": 60,\n  \"confirm\": \"unoapi:exemplo:chave\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            }
          ]
        },
        {
          "name": "Excluir uma chave",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/redis/keys/{{key}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "redis",
                "keys",
                "{{key}}"
              ],
              "query": []
            },
            "description": "Exige confirmação literal do nome da chave.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"confirm\": \"unoapi:exemplo:chave\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Quantidade de chaves removidas.",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/redis/keys/{{key}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "redis",
                    "keys",
                    "{{key}}"
                  ],
                  "query": []
                },
                "description": "Exige confirmação literal do nome da chave.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"confirm\": \"unoapi:exemplo:chave\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Quantidade de chaves removidas.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/redis/keys/{{key}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "redis",
                    "keys",
                    "{{key}}"
                  ],
                  "query": []
                },
                "description": "Exige confirmação literal do nome da chave.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"confirm\": \"unoapi:exemplo:chave\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            }
          ]
        },
        {
          "name": "Executar consulta Redis segura",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/redis/query",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "redis",
                "query"
              ],
              "query": []
            },
            "description": "Aceita apenas SCAN, TYPE, TTL, GET, HGETALL, LRANGE, SMEMBERS e ZRANGE.\nComandos administrativos, escrita, scripts e chaves fora do namespace UnoAPI são bloqueados.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"command\": \"SCAN\",\n  \"args\": [\n    \"unoapi:exemplo:\",\n    \"20\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Resultado da consulta.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/redis/query",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "redis",
                    "query"
                  ],
                  "query": []
                },
                "description": "Aceita apenas SCAN, TYPE, TTL, GET, HGETALL, LRANGE, SMEMBERS e ZRANGE.\nComandos administrativos, escrita, scripts e chaves fora do namespace UnoAPI são bloqueados.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"command\": \"SCAN\",\n  \"args\": [\n    \"unoapi:exemplo:\",\n    \"20\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Resultado da consulta.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/redis/query",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "redis",
                    "query"
                  ],
                  "query": []
                },
                "description": "Aceita apenas SCAN, TYPE, TTL, GET, HGETALL, LRANGE, SMEMBERS e ZRANGE.\nComandos administrativos, escrita, scripts e chaves fora do namespace UnoAPI são bloqueados.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"command\": \"SCAN\",\n  \"args\": [\n    \"unoapi:exemplo:\",\n    \"20\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "VoIP",
      "item": [
        {
          "name": "Listar modelos atuais do OpenRouter para IA pós-chamada",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/ai/models?provider={{provider}}&purpose={{purpose}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "ai",
                "models"
              ],
              "query": [
                {
                  "key": "provider",
                  "value": "{{provider}}",
                  "description": "",
                  "disabled": false
                },
                {
                  "key": "purpose",
                  "value": "{{purpose}}",
                  "description": "",
                  "disabled": false
                }
              ]
            },
            "description": "Catálogo público consultado pelo worker, sem enviar chave ou áudio. Somente administradores. Não valida crédito nem acesso da chave ao modelo.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Modelos compatíveis com a finalidade solicitada",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/ai/models?provider={{provider}}&purpose={{purpose}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "ai",
                    "models"
                  ],
                  "query": [
                    {
                      "key": "provider",
                      "value": "{{provider}}",
                      "description": "",
                      "disabled": false
                    },
                    {
                      "key": "purpose",
                      "value": "{{purpose}}",
                      "description": "",
                      "disabled": false
                    }
                  ]
                },
                "description": "Catálogo público consultado pelo worker, sem enviar chave ou áudio. Somente administradores. Não valida crédito nem acesso da chave ao modelo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Modelos compatíveis com a finalidade solicitada",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            }
          ]
        }
      ]
    },
    {
      "name": "Telefonia",
      "item": [
        {
          "name": "Consultar bootstrap do console VoIP",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/bootstrap",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "bootstrap"
              ],
              "query": []
            },
            "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário recebe apenas inventário filtrado e capacidades. Não retorna configuração global ou credenciais compartilhadas. Histórico/gravações dependem de upstream capabilities.managerSessionHistoryScope=1 e das duas versões atualizadas. Com upstream antigo, history=false e recordings=false (acesso negado por segurança).",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Estado usado pela página Telefonia do Manager.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/bootstrap",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "bootstrap"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário recebe apenas inventário filtrado e capacidades. Não retorna configuração global ou credenciais compartilhadas. Histórico/gravações dependem de upstream capabilities.managerSessionHistoryScope=1 e das duas versões atualizadas. Com upstream antigo, history=false e recordings=false (acesso negado por segurança).",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Estado usado pela página Telefonia do Manager.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"capabilities\": {\n    \"scoped\": true,\n    \"activeCalls\": true,\n    \"callCommands\": true,\n    \"createCalls\": false,\n    \"history\": true,\n    \"recordings\": true,\n    \"configuration\": false,\n    \"lines\": true,\n    \"automaticExtensions\": true,\n    \"extensionCredentials\": true,\n    \"extensionSipMode\": true,\n    \"disconnectRegistration\": false,\n    \"basicInboundSettings\": false\n  },\n  \"accounts\": [],\n  \"sessions\": [],\n  \"extensions\": [],\n  \"zapoLines\": [],\n  \"bridges\": [],\n  \"calls\": []\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/bootstrap",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "bootstrap"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário recebe apenas inventário filtrado e capacidades. Não retorna configuração global ou credenciais compartilhadas. Histórico/gravações dependem de upstream capabilities.managerSessionHistoryScope=1 e das duas versões atualizadas. Com upstream antigo, history=false e recordings=false (acesso negado por segurança).",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/bootstrap",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "bootstrap"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário recebe apenas inventário filtrado e capacidades. Não retorna configuração global ou credenciais compartilhadas. Histórico/gravações dependem de upstream capabilities.managerSessionHistoryScope=1 e das duas versões atualizadas. Com upstream antigo, history=false e recordings=false (acesso negado por segurança).",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/bootstrap",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "bootstrap"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário recebe apenas inventário filtrado e capacidades. Não retorna configuração global ou credenciais compartilhadas. Histórico/gravações dependem de upstream capabilities.managerSessionHistoryScope=1 e das duas versões atualizadas. Com upstream antigo, history=false e recordings=false (acesso negado por segurança).",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/bootstrap",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "bootstrap"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário recebe apenas inventário filtrado e capacidades. Não retorna configuração global ou credenciais compartilhadas. Histórico/gravações dependem de upstream capabilities.managerSessionHistoryScope=1 e das duas versões atualizadas. Com upstream antigo, history=false e recordings=false (acesso negado por segurança).",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Alterar modo SIP de um ramal",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/extensions/{{extensionId}}/sip-mode",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "extensions",
                "{{extensionId}}",
                "sip-mode"
              ],
              "query": []
            },
            "description": "Administrador ou usuário Manager padrão, somente ramal zapo_auto próprio, não compartilhado e com vínculo comprovado. Usuário usa o ID exato; ramais manuais, trunks externos/compartilhados e aliases ambíguos são negados. Seleciona extension ou trunk sem editar outros campos. Corpo estrito: apenas sipEndpointMode. Um ramal automático próprio em trunk continua visível e pode ter suas credenciais consultadas. Executar altera o modo real; não rotaciona senha nem desconecta registros automaticamente. Fluxos legados permanecem inalterados.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"sipEndpointMode\": \"extension\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Modo salvo",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{extensionId}}/sip-mode",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{extensionId}}",
                    "sip-mode"
                  ],
                  "query": []
                },
                "description": "Administrador ou usuário Manager padrão, somente ramal zapo_auto próprio, não compartilhado e com vínculo comprovado. Usuário usa o ID exato; ramais manuais, trunks externos/compartilhados e aliases ambíguos são negados. Seleciona extension ou trunk sem editar outros campos. Corpo estrito: apenas sipEndpointMode. Um ramal automático próprio em trunk continua visível e pode ter suas credenciais consultadas. Executar altera o modo real; não rotaciona senha nem desconecta registros automaticamente. Fluxos legados permanecem inalterados.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sipEndpointMode\": \"extension\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Modo salvo",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"extensionId\": \"1001\",\n  \"sipEndpointMode\": \"extension\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{extensionId}}/sip-mode",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{extensionId}}",
                    "sip-mode"
                  ],
                  "query": []
                },
                "description": "Administrador ou usuário Manager padrão, somente ramal zapo_auto próprio, não compartilhado e com vínculo comprovado. Usuário usa o ID exato; ramais manuais, trunks externos/compartilhados e aliases ambíguos são negados. Seleciona extension ou trunk sem editar outros campos. Corpo estrito: apenas sipEndpointMode. Um ramal automático próprio em trunk continua visível e pode ter suas credenciais consultadas. Executar altera o modo real; não rotaciona senha nem desconecta registros automaticamente. Fluxos legados permanecem inalterados.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sipEndpointMode\": \"extension\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_sip_endpoint_mode\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{extensionId}}/sip-mode",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{extensionId}}",
                    "sip-mode"
                  ],
                  "query": []
                },
                "description": "Administrador ou usuário Manager padrão, somente ramal zapo_auto próprio, não compartilhado e com vínculo comprovado. Usuário usa o ID exato; ramais manuais, trunks externos/compartilhados e aliases ambíguos são negados. Seleciona extension ou trunk sem editar outros campos. Corpo estrito: apenas sipEndpointMode. Um ramal automático próprio em trunk continua visível e pode ter suas credenciais consultadas. Executar altera o modo real; não rotaciona senha nem desconecta registros automaticamente. Fluxos legados permanecem inalterados.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sipEndpointMode\": \"extension\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{extensionId}}/sip-mode",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{extensionId}}",
                    "sip-mode"
                  ],
                  "query": []
                },
                "description": "Administrador ou usuário Manager padrão, somente ramal zapo_auto próprio, não compartilhado e com vínculo comprovado. Usuário usa o ID exato; ramais manuais, trunks externos/compartilhados e aliases ambíguos são negados. Seleciona extension ou trunk sem editar outros campos. Corpo estrito: apenas sipEndpointMode. Um ramal automático próprio em trunk continua visível e pode ter suas credenciais consultadas. Executar altera o modo real; não rotaciona senha nem desconecta registros automaticamente. Fluxos legados permanecem inalterados.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sipEndpointMode\": \"extension\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"manager_voip_forbidden\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{extensionId}}/sip-mode",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{extensionId}}",
                    "sip-mode"
                  ],
                  "query": []
                },
                "description": "Administrador ou usuário Manager padrão, somente ramal zapo_auto próprio, não compartilhado e com vínculo comprovado. Usuário usa o ID exato; ramais manuais, trunks externos/compartilhados e aliases ambíguos são negados. Seleciona extension ou trunk sem editar outros campos. Corpo estrito: apenas sipEndpointMode. Um ramal automático próprio em trunk continua visível e pode ter suas credenciais consultadas. Executar altera o modo real; não rotaciona senha nem desconecta registros automaticamente. Fluxos legados permanecem inalterados.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sipEndpointMode\": \"extension\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"extension_not_found\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{extensionId}}/sip-mode",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{extensionId}}",
                    "sip-mode"
                  ],
                  "query": []
                },
                "description": "Administrador ou usuário Manager padrão, somente ramal zapo_auto próprio, não compartilhado e com vínculo comprovado. Usuário usa o ID exato; ramais manuais, trunks externos/compartilhados e aliases ambíguos são negados. Seleciona extension ou trunk sem editar outros campos. Corpo estrito: apenas sipEndpointMode. Um ramal automático próprio em trunk continua visível e pode ter suas credenciais consultadas. Executar altera o modo real; não rotaciona senha nem desconecta registros automaticamente. Fluxos legados permanecem inalterados.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sipEndpointMode\": \"extension\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{extensionId}}/sip-mode",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{extensionId}}",
                    "sip-mode"
                  ],
                  "query": []
                },
                "description": "Administrador ou usuário Manager padrão, somente ramal zapo_auto próprio, não compartilhado e com vínculo comprovado. Usuário usa o ID exato; ramais manuais, trunks externos/compartilhados e aliases ambíguos são negados. Seleciona extension ou trunk sem editar outros campos. Corpo estrito: apenas sipEndpointMode. Um ramal automático próprio em trunk continua visível e pode ter suas credenciais consultadas. Executar altera o modo real; não rotaciona senha nem desconecta registros automaticamente. Fluxos legados permanecem inalterados.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sipEndpointMode\": \"extension\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{extensionId}}/sip-mode",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{extensionId}}",
                    "sip-mode"
                  ],
                  "query": []
                },
                "description": "Administrador ou usuário Manager padrão, somente ramal zapo_auto próprio, não compartilhado e com vínculo comprovado. Usuário usa o ID exato; ramais manuais, trunks externos/compartilhados e aliases ambíguos são negados. Seleciona extension ou trunk sem editar outros campos. Corpo estrito: apenas sipEndpointMode. Um ramal automático próprio em trunk continua visível e pode ter suas credenciais consultadas. Executar altera o modo real; não rotaciona senha nem desconecta registros automaticamente. Fluxos legados permanecem inalterados.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sipEndpointMode\": \"extension\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Listar empresas",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/companies",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "companies"
              ],
              "query": []
            },
            "description": "Lista empresas com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Itens cadastrados",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/companies",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "companies"
                  ],
                  "query": []
                },
                "description": "Lista empresas com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Itens cadastrados",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"items\": []\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/companies",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "companies"
                  ],
                  "query": []
                },
                "description": "Lista empresas com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/companies",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "companies"
                  ],
                  "query": []
                },
                "description": "Lista empresas com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/companies",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "companies"
                  ],
                  "query": []
                },
                "description": "Lista empresas com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/companies",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "companies"
                  ],
                  "query": []
                },
                "description": "Lista empresas com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/companies",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "companies"
                  ],
                  "query": []
                },
                "description": "Lista empresas com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Criar ou atualizar empresas",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/companies/{{id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "companies",
                "{{id}}"
              ],
              "query": []
            },
            "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"label\": \"Empresa de exemplo\",\n  \"timeZone\": \"America/Cuiaba\",\n  \"enabled\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Configuração salva com segredos omitidos",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/companies/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "companies",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Empresa de exemplo\",\n  \"timeZone\": \"America/Cuiaba\",\n  \"enabled\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Configuração salva com segredos omitidos",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/companies/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "companies",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Empresa de exemplo\",\n  \"timeZone\": \"America/Cuiaba\",\n  \"enabled\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_configuration\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/companies/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "companies",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Empresa de exemplo\",\n  \"timeZone\": \"America/Cuiaba\",\n  \"enabled\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/companies/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "companies",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Empresa de exemplo\",\n  \"timeZone\": \"America/Cuiaba\",\n  \"enabled\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/companies/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "companies",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Empresa de exemplo\",\n  \"timeZone\": \"America/Cuiaba\",\n  \"enabled\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"automatic_resource_managed\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/companies/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "companies",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Empresa de exemplo\",\n  \"timeZone\": \"America/Cuiaba\",\n  \"enabled\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/companies/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "companies",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Empresa de exemplo\",\n  \"timeZone\": \"America/Cuiaba\",\n  \"enabled\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/companies/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "companies",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Empresa de exemplo\",\n  \"timeZone\": \"America/Cuiaba\",\n  \"enabled\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Excluir empresas",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/companies/{{id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "companies",
                "{{id}}"
              ],
              "query": []
            },
            "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Configuração resultante",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/companies/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "companies",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Configuração resultante",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/companies/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "companies",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/companies/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "companies",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/companies/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "companies",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"resource_in_use\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/companies/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "companies",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/companies/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "companies",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/companies/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "companies",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Listar contas/linhas",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/accounts",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "accounts"
              ],
              "query": []
            },
            "description": "Lista contas/linhas com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Itens cadastrados",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/accounts",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "accounts"
                  ],
                  "query": []
                },
                "description": "Lista contas/linhas com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Itens cadastrados",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"items\": []\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/accounts",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "accounts"
                  ],
                  "query": []
                },
                "description": "Lista contas/linhas com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/accounts",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "accounts"
                  ],
                  "query": []
                },
                "description": "Lista contas/linhas com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/accounts",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "accounts"
                  ],
                  "query": []
                },
                "description": "Lista contas/linhas com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/accounts",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "accounts"
                  ],
                  "query": []
                },
                "description": "Lista contas/linhas com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/accounts",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "accounts"
                  ],
                  "query": []
                },
                "description": "Lista contas/linhas com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Criar ou atualizar contas/linhas",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/accounts/{{id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "accounts",
                "{{id}}"
              ],
              "query": []
            },
            "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"label\": \"Linha de exemplo\",\n  \"companyId\": \"empresa-exemplo\",\n  \"phoneNumber\": \"5511999999999\",\n  \"enabled\": true,\n  \"maxConcurrentCalls\": 2\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Configuração salva com segredos omitidos",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/accounts/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "accounts",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Linha de exemplo\",\n  \"companyId\": \"empresa-exemplo\",\n  \"phoneNumber\": \"5511999999999\",\n  \"enabled\": true,\n  \"maxConcurrentCalls\": 2\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Configuração salva com segredos omitidos",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/accounts/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "accounts",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Linha de exemplo\",\n  \"companyId\": \"empresa-exemplo\",\n  \"phoneNumber\": \"5511999999999\",\n  \"enabled\": true,\n  \"maxConcurrentCalls\": 2\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_configuration\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/accounts/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "accounts",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Linha de exemplo\",\n  \"companyId\": \"empresa-exemplo\",\n  \"phoneNumber\": \"5511999999999\",\n  \"enabled\": true,\n  \"maxConcurrentCalls\": 2\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/accounts/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "accounts",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Linha de exemplo\",\n  \"companyId\": \"empresa-exemplo\",\n  \"phoneNumber\": \"5511999999999\",\n  \"enabled\": true,\n  \"maxConcurrentCalls\": 2\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/accounts/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "accounts",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Linha de exemplo\",\n  \"companyId\": \"empresa-exemplo\",\n  \"phoneNumber\": \"5511999999999\",\n  \"enabled\": true,\n  \"maxConcurrentCalls\": 2\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"automatic_resource_managed\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/accounts/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "accounts",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Linha de exemplo\",\n  \"companyId\": \"empresa-exemplo\",\n  \"phoneNumber\": \"5511999999999\",\n  \"enabled\": true,\n  \"maxConcurrentCalls\": 2\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/accounts/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "accounts",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Linha de exemplo\",\n  \"companyId\": \"empresa-exemplo\",\n  \"phoneNumber\": \"5511999999999\",\n  \"enabled\": true,\n  \"maxConcurrentCalls\": 2\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/accounts/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "accounts",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Linha de exemplo\",\n  \"companyId\": \"empresa-exemplo\",\n  \"phoneNumber\": \"5511999999999\",\n  \"enabled\": true,\n  \"maxConcurrentCalls\": 2\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Excluir contas/linhas",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/accounts/{{id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "accounts",
                "{{id}}"
              ],
              "query": []
            },
            "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Configuração resultante",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/accounts/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "accounts",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Configuração resultante",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/accounts/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "accounts",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/accounts/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "accounts",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/accounts/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "accounts",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"resource_in_use\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/accounts/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "accounts",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/accounts/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "accounts",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/accounts/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "accounts",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Listar sessões",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/sessions",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "sessions"
              ],
              "query": []
            },
            "description": "Lista sessões com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Itens cadastrados",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/sessions",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "sessions"
                  ],
                  "query": []
                },
                "description": "Lista sessões com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Itens cadastrados",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"items\": []\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/sessions",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "sessions"
                  ],
                  "query": []
                },
                "description": "Lista sessões com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/sessions",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "sessions"
                  ],
                  "query": []
                },
                "description": "Lista sessões com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/sessions",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "sessions"
                  ],
                  "query": []
                },
                "description": "Lista sessões com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/sessions",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "sessions"
                  ],
                  "query": []
                },
                "description": "Lista sessões com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/sessions",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "sessions"
                  ],
                  "query": []
                },
                "description": "Lista sessões com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Criar ou atualizar sessões",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/sessions/{{id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "sessions",
                "{{id}}"
              ],
              "query": []
            },
            "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"label\": \"Sessão de exemplo\",\n  \"companyId\": \"empresa-exemplo\",\n  \"accountId\": \"linha-exemplo\",\n  \"unoSession\": \"5511999999999\",\n  \"maxConcurrentCalls\": 2,\n  \"routing\": {\n    \"basicInboundEnabled\": true\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Configuração salva com segredos omitidos",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/sessions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "sessions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Sessão de exemplo\",\n  \"companyId\": \"empresa-exemplo\",\n  \"accountId\": \"linha-exemplo\",\n  \"unoSession\": \"5511999999999\",\n  \"maxConcurrentCalls\": 2,\n  \"routing\": {\n    \"basicInboundEnabled\": true\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Configuração salva com segredos omitidos",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/sessions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "sessions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Sessão de exemplo\",\n  \"companyId\": \"empresa-exemplo\",\n  \"accountId\": \"linha-exemplo\",\n  \"unoSession\": \"5511999999999\",\n  \"maxConcurrentCalls\": 2,\n  \"routing\": {\n    \"basicInboundEnabled\": true\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_configuration\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/sessions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "sessions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Sessão de exemplo\",\n  \"companyId\": \"empresa-exemplo\",\n  \"accountId\": \"linha-exemplo\",\n  \"unoSession\": \"5511999999999\",\n  \"maxConcurrentCalls\": 2,\n  \"routing\": {\n    \"basicInboundEnabled\": true\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/sessions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "sessions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Sessão de exemplo\",\n  \"companyId\": \"empresa-exemplo\",\n  \"accountId\": \"linha-exemplo\",\n  \"unoSession\": \"5511999999999\",\n  \"maxConcurrentCalls\": 2,\n  \"routing\": {\n    \"basicInboundEnabled\": true\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/sessions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "sessions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Sessão de exemplo\",\n  \"companyId\": \"empresa-exemplo\",\n  \"accountId\": \"linha-exemplo\",\n  \"unoSession\": \"5511999999999\",\n  \"maxConcurrentCalls\": 2,\n  \"routing\": {\n    \"basicInboundEnabled\": true\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"automatic_resource_managed\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/sessions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "sessions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Sessão de exemplo\",\n  \"companyId\": \"empresa-exemplo\",\n  \"accountId\": \"linha-exemplo\",\n  \"unoSession\": \"5511999999999\",\n  \"maxConcurrentCalls\": 2,\n  \"routing\": {\n    \"basicInboundEnabled\": true\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/sessions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "sessions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Sessão de exemplo\",\n  \"companyId\": \"empresa-exemplo\",\n  \"accountId\": \"linha-exemplo\",\n  \"unoSession\": \"5511999999999\",\n  \"maxConcurrentCalls\": 2,\n  \"routing\": {\n    \"basicInboundEnabled\": true\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/sessions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "sessions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Sessão de exemplo\",\n  \"companyId\": \"empresa-exemplo\",\n  \"accountId\": \"linha-exemplo\",\n  \"unoSession\": \"5511999999999\",\n  \"maxConcurrentCalls\": 2,\n  \"routing\": {\n    \"basicInboundEnabled\": true\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Excluir sessões",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/sessions/{{id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "sessions",
                "{{id}}"
              ],
              "query": []
            },
            "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Configuração resultante",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/sessions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "sessions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Configuração resultante",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/sessions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "sessions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/sessions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "sessions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/sessions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "sessions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"resource_in_use\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/sessions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "sessions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/sessions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "sessions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/sessions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "sessions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Listar ramais",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/extensions",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "extensions"
              ],
              "query": []
            },
            "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Para usuário, lista somente ramais automáticos próprios, não compartilhados, sem senha. Ramais automáticos próprios em extension ou trunk permanecem visíveis. Ramais manuais, trunks externos/compartilhados, aliases ambíguos e grupos compartilhados são recusados/omitidos.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Itens cadastrados",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Para usuário, lista somente ramais automáticos próprios, não compartilhados, sem senha. Ramais automáticos próprios em extension ou trunk permanecem visíveis. Ramais manuais, trunks externos/compartilhados, aliases ambíguos e grupos compartilhados são recusados/omitidos.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Itens cadastrados",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"items\": []\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Para usuário, lista somente ramais automáticos próprios, não compartilhados, sem senha. Ramais automáticos próprios em extension ou trunk permanecem visíveis. Ramais manuais, trunks externos/compartilhados, aliases ambíguos e grupos compartilhados são recusados/omitidos.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Para usuário, lista somente ramais automáticos próprios, não compartilhados, sem senha. Ramais automáticos próprios em extension ou trunk permanecem visíveis. Ramais manuais, trunks externos/compartilhados, aliases ambíguos e grupos compartilhados são recusados/omitidos.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Para usuário, lista somente ramais automáticos próprios, não compartilhados, sem senha. Ramais automáticos próprios em extension ou trunk permanecem visíveis. Ramais manuais, trunks externos/compartilhados, aliases ambíguos e grupos compartilhados são recusados/omitidos.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Para usuário, lista somente ramais automáticos próprios, não compartilhados, sem senha. Ramais automáticos próprios em extension ou trunk permanecem visíveis. Ramais manuais, trunks externos/compartilhados, aliases ambíguos e grupos compartilhados são recusados/omitidos.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Para usuário, lista somente ramais automáticos próprios, não compartilhados, sem senha. Ramais automáticos próprios em extension ou trunk permanecem visíveis. Ramais manuais, trunks externos/compartilhados, aliases ambíguos e grupos compartilhados são recusados/omitidos.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Criar ou atualizar ramais",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/extensions/{{id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "extensions",
                "{{id}}"
              ],
              "query": []
            },
            "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"displayName\": \"Ramal de exemplo\",\n  \"username\": \"1001\",\n  \"companyId\": \"empresa-exemplo\",\n  \"type\": \"both\",\n  \"password\": \"SUBSTITUA_POR_SENHA_FORTE\",\n  \"enabled\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Configuração salva com segredos omitidos",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"displayName\": \"Ramal de exemplo\",\n  \"username\": \"1001\",\n  \"companyId\": \"empresa-exemplo\",\n  \"type\": \"both\",\n  \"password\": \"SUBSTITUA_POR_SENHA_FORTE\",\n  \"enabled\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Configuração salva com segredos omitidos",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"displayName\": \"Ramal de exemplo\",\n  \"username\": \"1001\",\n  \"companyId\": \"empresa-exemplo\",\n  \"type\": \"both\",\n  \"password\": \"SUBSTITUA_POR_SENHA_FORTE\",\n  \"enabled\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_configuration\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"displayName\": \"Ramal de exemplo\",\n  \"username\": \"1001\",\n  \"companyId\": \"empresa-exemplo\",\n  \"type\": \"both\",\n  \"password\": \"SUBSTITUA_POR_SENHA_FORTE\",\n  \"enabled\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"displayName\": \"Ramal de exemplo\",\n  \"username\": \"1001\",\n  \"companyId\": \"empresa-exemplo\",\n  \"type\": \"both\",\n  \"password\": \"SUBSTITUA_POR_SENHA_FORTE\",\n  \"enabled\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"displayName\": \"Ramal de exemplo\",\n  \"username\": \"1001\",\n  \"companyId\": \"empresa-exemplo\",\n  \"type\": \"both\",\n  \"password\": \"SUBSTITUA_POR_SENHA_FORTE\",\n  \"enabled\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"automatic_resource_managed\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"displayName\": \"Ramal de exemplo\",\n  \"username\": \"1001\",\n  \"companyId\": \"empresa-exemplo\",\n  \"type\": \"both\",\n  \"password\": \"SUBSTITUA_POR_SENHA_FORTE\",\n  \"enabled\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"displayName\": \"Ramal de exemplo\",\n  \"username\": \"1001\",\n  \"companyId\": \"empresa-exemplo\",\n  \"type\": \"both\",\n  \"password\": \"SUBSTITUA_POR_SENHA_FORTE\",\n  \"enabled\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"displayName\": \"Ramal de exemplo\",\n  \"username\": \"1001\",\n  \"companyId\": \"empresa-exemplo\",\n  \"type\": \"both\",\n  \"password\": \"SUBSTITUA_POR_SENHA_FORTE\",\n  \"enabled\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Excluir ramais",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/extensions/{{id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "extensions",
                "{{id}}"
              ],
              "query": []
            },
            "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Configuração resultante",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Configuração resultante",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"resource_in_use\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Listar grupos de linhas",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/lineGroups",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "lineGroups"
              ],
              "query": []
            },
            "description": "Lista grupos de linhas com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Itens cadastrados",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/lineGroups",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "lineGroups"
                  ],
                  "query": []
                },
                "description": "Lista grupos de linhas com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Itens cadastrados",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"items\": []\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/lineGroups",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "lineGroups"
                  ],
                  "query": []
                },
                "description": "Lista grupos de linhas com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/lineGroups",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "lineGroups"
                  ],
                  "query": []
                },
                "description": "Lista grupos de linhas com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/lineGroups",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "lineGroups"
                  ],
                  "query": []
                },
                "description": "Lista grupos de linhas com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/lineGroups",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "lineGroups"
                  ],
                  "query": []
                },
                "description": "Lista grupos de linhas com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/lineGroups",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "lineGroups"
                  ],
                  "query": []
                },
                "description": "Lista grupos de linhas com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Criar ou atualizar grupos de linhas",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/lineGroups/{{id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "lineGroups",
                "{{id}}"
              ],
              "query": []
            },
            "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"label\": \"Grupo de linhas\",\n  \"companyId\": \"empresa-exemplo\",\n  \"inboundSessionIds\": [\n    \"sessao-exemplo\"\n  ],\n  \"outboundPrioritySessionIds\": [\n    \"sessao-exemplo\"\n  ],\n  \"targetExtensionGroupIds\": [\n    \"grupo-ramais\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Configuração salva com segredos omitidos",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/lineGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "lineGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Grupo de linhas\",\n  \"companyId\": \"empresa-exemplo\",\n  \"inboundSessionIds\": [\n    \"sessao-exemplo\"\n  ],\n  \"outboundPrioritySessionIds\": [\n    \"sessao-exemplo\"\n  ],\n  \"targetExtensionGroupIds\": [\n    \"grupo-ramais\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Configuração salva com segredos omitidos",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/lineGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "lineGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Grupo de linhas\",\n  \"companyId\": \"empresa-exemplo\",\n  \"inboundSessionIds\": [\n    \"sessao-exemplo\"\n  ],\n  \"outboundPrioritySessionIds\": [\n    \"sessao-exemplo\"\n  ],\n  \"targetExtensionGroupIds\": [\n    \"grupo-ramais\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_configuration\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/lineGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "lineGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Grupo de linhas\",\n  \"companyId\": \"empresa-exemplo\",\n  \"inboundSessionIds\": [\n    \"sessao-exemplo\"\n  ],\n  \"outboundPrioritySessionIds\": [\n    \"sessao-exemplo\"\n  ],\n  \"targetExtensionGroupIds\": [\n    \"grupo-ramais\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/lineGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "lineGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Grupo de linhas\",\n  \"companyId\": \"empresa-exemplo\",\n  \"inboundSessionIds\": [\n    \"sessao-exemplo\"\n  ],\n  \"outboundPrioritySessionIds\": [\n    \"sessao-exemplo\"\n  ],\n  \"targetExtensionGroupIds\": [\n    \"grupo-ramais\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/lineGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "lineGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Grupo de linhas\",\n  \"companyId\": \"empresa-exemplo\",\n  \"inboundSessionIds\": [\n    \"sessao-exemplo\"\n  ],\n  \"outboundPrioritySessionIds\": [\n    \"sessao-exemplo\"\n  ],\n  \"targetExtensionGroupIds\": [\n    \"grupo-ramais\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"automatic_resource_managed\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/lineGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "lineGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Grupo de linhas\",\n  \"companyId\": \"empresa-exemplo\",\n  \"inboundSessionIds\": [\n    \"sessao-exemplo\"\n  ],\n  \"outboundPrioritySessionIds\": [\n    \"sessao-exemplo\"\n  ],\n  \"targetExtensionGroupIds\": [\n    \"grupo-ramais\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/lineGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "lineGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Grupo de linhas\",\n  \"companyId\": \"empresa-exemplo\",\n  \"inboundSessionIds\": [\n    \"sessao-exemplo\"\n  ],\n  \"outboundPrioritySessionIds\": [\n    \"sessao-exemplo\"\n  ],\n  \"targetExtensionGroupIds\": [\n    \"grupo-ramais\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/lineGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "lineGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Grupo de linhas\",\n  \"companyId\": \"empresa-exemplo\",\n  \"inboundSessionIds\": [\n    \"sessao-exemplo\"\n  ],\n  \"outboundPrioritySessionIds\": [\n    \"sessao-exemplo\"\n  ],\n  \"targetExtensionGroupIds\": [\n    \"grupo-ramais\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Excluir grupos de linhas",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/lineGroups/{{id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "lineGroups",
                "{{id}}"
              ],
              "query": []
            },
            "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Configuração resultante",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/lineGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "lineGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Configuração resultante",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/lineGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "lineGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/lineGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "lineGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/lineGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "lineGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"resource_in_use\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/lineGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "lineGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/lineGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "lineGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/lineGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "lineGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Listar grupos de ramais",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/extensionGroups",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "extensionGroups"
              ],
              "query": []
            },
            "description": "Lista grupos de ramais com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Itens cadastrados",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups"
                  ],
                  "query": []
                },
                "description": "Lista grupos de ramais com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Itens cadastrados",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"items\": []\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups"
                  ],
                  "query": []
                },
                "description": "Lista grupos de ramais com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups"
                  ],
                  "query": []
                },
                "description": "Lista grupos de ramais com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups"
                  ],
                  "query": []
                },
                "description": "Lista grupos de ramais com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups"
                  ],
                  "query": []
                },
                "description": "Lista grupos de ramais com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups"
                  ],
                  "query": []
                },
                "description": "Lista grupos de ramais com segredos omitidos.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Criar ou atualizar grupos de ramais",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "extensionGroups",
                "{{id}}"
              ],
              "query": []
            },
            "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"label\": \"Grupo de ramais\",\n  \"companyId\": \"empresa-exemplo\",\n  \"extensionIds\": [\n    \"1001\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Configuração salva com segredos omitidos",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Grupo de ramais\",\n  \"companyId\": \"empresa-exemplo\",\n  \"extensionIds\": [\n    \"1001\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Configuração salva com segredos omitidos",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Grupo de ramais\",\n  \"companyId\": \"empresa-exemplo\",\n  \"extensionIds\": [\n    \"1001\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_configuration\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Grupo de ramais\",\n  \"companyId\": \"empresa-exemplo\",\n  \"extensionIds\": [\n    \"1001\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Grupo de ramais\",\n  \"companyId\": \"empresa-exemplo\",\n  \"extensionIds\": [\n    \"1001\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Grupo de ramais\",\n  \"companyId\": \"empresa-exemplo\",\n  \"extensionIds\": [\n    \"1001\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"automatic_resource_managed\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Grupo de ramais\",\n  \"companyId\": \"empresa-exemplo\",\n  \"extensionIds\": [\n    \"1001\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Grupo de ramais\",\n  \"companyId\": \"empresa-exemplo\",\n  \"extensionIds\": [\n    \"1001\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "ID do caminho identifica o recurso. Requer vínculos existentes e consistentes. Recursos automáticos preservam campos gerenciados; modificá-los pode retornar 409. Senha vazia preserva a existente.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"label\": \"Grupo de ramais\",\n  \"companyId\": \"empresa-exemplo\",\n  \"extensionIds\": [\n    \"1001\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Excluir grupos de ramais",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "extensionGroups",
                "{{id}}"
              ],
              "query": []
            },
            "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Configuração resultante",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Configuração resultante",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"resource_in_use\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Recursos referenciados, empresa padrão e recursos automáticos gerenciados são protegidos (409). Não há confirmação no corpo; o envio confirma a operação.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Estado agregado da telefonia",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/bootstrap",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "bootstrap"
              ],
              "query": []
            },
            "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário recebe apenas inventário filtrado e capacidades. Não retorna configuração global ou credenciais compartilhadas. Usuário Manager somente com Uno + VoIP compatíveis: upstream capabilities.managerSessionHistoryScope=1. Upstream antigo/incompatível mantém history=false e recordings=false; acesso negado sem fallback global. Credencial e escopo são resolvidos no servidor, não por headers enviados pelo cliente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Estado usado pela página Telefonia do Manager.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/bootstrap",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "bootstrap"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário recebe apenas inventário filtrado e capacidades. Não retorna configuração global ou credenciais compartilhadas. Usuário Manager somente com Uno + VoIP compatíveis: upstream capabilities.managerSessionHistoryScope=1. Upstream antigo/incompatível mantém history=false e recordings=false; acesso negado sem fallback global. Credencial e escopo são resolvidos no servidor, não por headers enviados pelo cliente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Estado usado pela página Telefonia do Manager.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"capabilities\": {\n    \"scoped\": true,\n    \"activeCalls\": true,\n    \"callCommands\": true,\n    \"createCalls\": false,\n    \"history\": true,\n    \"recordings\": true,\n    \"configuration\": false,\n    \"lines\": true,\n    \"automaticExtensions\": true,\n    \"extensionCredentials\": true,\n    \"disconnectRegistration\": false,\n    \"extensionSipMode\": true,\n    \"basicInboundSettings\": false\n  },\n  \"accounts\": [],\n  \"sessions\": [],\n  \"extensions\": [],\n  \"zapoLines\": [],\n  \"bridges\": [],\n  \"calls\": []\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/bootstrap",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "bootstrap"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário recebe apenas inventário filtrado e capacidades. Não retorna configuração global ou credenciais compartilhadas. Usuário Manager somente com Uno + VoIP compatíveis: upstream capabilities.managerSessionHistoryScope=1. Upstream antigo/incompatível mantém history=false e recordings=false; acesso negado sem fallback global. Credencial e escopo são resolvidos no servidor, não por headers enviados pelo cliente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/bootstrap",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "bootstrap"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário recebe apenas inventário filtrado e capacidades. Não retorna configuração global ou credenciais compartilhadas. Usuário Manager somente com Uno + VoIP compatíveis: upstream capabilities.managerSessionHistoryScope=1. Upstream antigo/incompatível mantém history=false e recordings=false; acesso negado sem fallback global. Credencial e escopo são resolvidos no servidor, não por headers enviados pelo cliente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/bootstrap",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "bootstrap"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário recebe apenas inventário filtrado e capacidades. Não retorna configuração global ou credenciais compartilhadas. Usuário Manager somente com Uno + VoIP compatíveis: upstream capabilities.managerSessionHistoryScope=1. Upstream antigo/incompatível mantém history=false e recordings=false; acesso negado sem fallback global. Credencial e escopo são resolvidos no servidor, não por headers enviados pelo cliente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/bootstrap",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "bootstrap"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário recebe apenas inventário filtrado e capacidades. Não retorna configuração global ou credenciais compartilhadas. Usuário Manager somente com Uno + VoIP compatíveis: upstream capabilities.managerSessionHistoryScope=1. Upstream antigo/incompatível mantém history=false e recordings=false; acesso negado sem fallback global. Credencial e escopo são resolvidos no servidor, não por headers enviados pelo cliente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Listar chamadas ativas",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/calls",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "calls"
              ],
              "query": []
            },
            "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário vê apenas chamadas ativas das sessões atribuídas.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Chamadas isoladas por sessão e callId.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/calls",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "calls"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário vê apenas chamadas ativas das sessões atribuídas.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Chamadas isoladas por sessão e callId.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/calls",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "calls"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário vê apenas chamadas ativas das sessões atribuídas.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/calls",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "calls"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário vê apenas chamadas ativas das sessões atribuídas.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/calls",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "calls"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário vê apenas chamadas ativas das sessões atribuídas.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/calls",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "calls"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário vê apenas chamadas ativas das sessões atribuídas.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/calls",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "calls"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário vê apenas chamadas ativas das sessões atribuídas.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Iniciar chamada pela sessão Zapo",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/voip/calls",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "calls"
              ],
              "query": []
            },
            "description": "Iniciar chamada pela sessão Zapo\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"session\": \"5511999999999\",\n  \"peerJid\": \"5511888888888@s.whatsapp.net\",\n  \"extensionId\": \"1001\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Chamada iniciada; retorna session e callId.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/calls",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "calls"
                  ],
                  "query": []
                },
                "description": "Iniciar chamada pela sessão Zapo\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"session\": \"5511999999999\",\n  \"peerJid\": \"5511888888888@s.whatsapp.net\",\n  \"extensionId\": \"1001\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Chamada iniciada; retorna session e callId.",
              "code": 201,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"callId\": \"string\",\n  \"session\": \"5566999554300\",\n  \"peerJid\": \"5566996269251@s.whatsapp.net\",\n  \"callerPn\": \"5566996269251\",\n  \"callerName\": \"João da Silva\",\n  \"extensionId\": \"1001\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/calls",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "calls"
                  ],
                  "query": []
                },
                "description": "Iniciar chamada pela sessão Zapo\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"session\": \"5511999999999\",\n  \"peerJid\": \"5511888888888@s.whatsapp.net\",\n  \"extensionId\": \"1001\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/calls",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "calls"
                  ],
                  "query": []
                },
                "description": "Iniciar chamada pela sessão Zapo\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"session\": \"5511999999999\",\n  \"peerJid\": \"5511888888888@s.whatsapp.net\",\n  \"extensionId\": \"1001\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/calls",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "calls"
                  ],
                  "query": []
                },
                "description": "Iniciar chamada pela sessão Zapo\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"session\": \"5511999999999\",\n  \"peerJid\": \"5511888888888@s.whatsapp.net\",\n  \"extensionId\": \"1001\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/calls",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "calls"
                  ],
                  "query": []
                },
                "description": "Iniciar chamada pela sessão Zapo\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"session\": \"5511999999999\",\n  \"peerJid\": \"5511888888888@s.whatsapp.net\",\n  \"extensionId\": \"1001\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Controlar uma chamada Zapo",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/voip/calls/{{callId}}/{{command}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "calls",
                "{{callId}}",
                "{{command}}"
              ],
              "query": []
            },
            "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. accept/reject/end/mute exigem uma única chamada ativa da sessão própria. Sessão divergente no corpo é negada. Executar modifica a chamada real.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"session\": \"5511999999999\",\n  \"muted\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Resultado correlacionado do worker dono da sessão.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/calls/{{callId}}/{{command}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "calls",
                    "{{callId}}",
                    "{{command}}"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. accept/reject/end/mute exigem uma única chamada ativa da sessão própria. Sessão divergente no corpo é negada. Executar modifica a chamada real.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"session\": \"5511999999999\",\n  \"muted\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Resultado correlacionado do worker dono da sessão.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/calls/{{callId}}/{{command}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "calls",
                    "{{callId}}",
                    "{{command}}"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. accept/reject/end/mute exigem uma única chamada ativa da sessão própria. Sessão divergente no corpo é negada. Executar modifica a chamada real.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"session\": \"5511999999999\",\n  \"muted\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Propriedade não comprovada ou sessão divergente; manager_voip_forbidden.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/calls/{{callId}}/{{command}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "calls",
                    "{{callId}}",
                    "{{command}}"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. accept/reject/end/mute exigem uma única chamada ativa da sessão própria. Sessão divergente no corpo é negada. Executar modifica a chamada real.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"session\": \"5511999999999\",\n  \"muted\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Propriedade não comprovada ou sessão divergente; manager_voip_forbidden.",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/calls/{{callId}}/{{command}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "calls",
                    "{{callId}}",
                    "{{command}}"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. accept/reject/end/mute exigem uma única chamada ativa da sessão própria. Sessão divergente no corpo é negada. Executar modifica a chamada real.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"session\": \"5511999999999\",\n  \"muted\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/calls/{{callId}}/{{command}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "calls",
                    "{{callId}}",
                    "{{command}}"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. accept/reject/end/mute exigem uma única chamada ativa da sessão própria. Sessão divergente no corpo é negada. Executar modifica a chamada real.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"session\": \"5511999999999\",\n  \"muted\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/calls/{{callId}}/{{command}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "calls",
                    "{{callId}}",
                    "{{command}}"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. accept/reject/end/mute exigem uma única chamada ativa da sessão própria. Sessão divergente no corpo é negada. Executar modifica a chamada real.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"session\": \"5511999999999\",\n  \"muted\": true\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Reproduzir ou baixar gravação de chamada",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/recordings/{{recordId}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "recordings",
                "{{recordId}}"
              ],
              "query": []
            },
            "description": "Usuário Manager somente com Uno + VoIP compatíveis: upstream capabilities.managerSessionHistoryScope=1. Upstream antigo/incompatível mantém history=false e recordings=false; acesso negado sem fallback global. Credencial e escopo são resolvidos no servidor, não por headers enviados pelo cliente. A atribuição atual governa todo o histórico do phoneNumber salvo no snapshot, inclusive antes da atribuição. Snapshot ausente ou não confiável é excluído para usuário, sem inferir empresa compartilhada ou contato remoto. Remover sessão preserva acesso se a atribuição persistir. Novas requisições consultam a atribuição atual; bytes/blobs já entregues não podem ser revogados. Administrador permanece inalterado. Exige propriedade do recordId exato; nunca substitui por outro registro com o mesmo callId. Valida internamente X-Unoapi-Session-Scope-Applied: 1 antes de transmitir o stream. Header é resposta interna upstream, não parâmetro público. Sem URL global, URL interna ou chave de armazenamento no cliente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/recordings/{{recordId}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "recordings",
                    "{{recordId}}"
                  ],
                  "query": []
                },
                "description": "Usuário Manager somente com Uno + VoIP compatíveis: upstream capabilities.managerSessionHistoryScope=1. Upstream antigo/incompatível mantém history=false e recordings=false; acesso negado sem fallback global. Credencial e escopo são resolvidos no servidor, não por headers enviados pelo cliente. A atribuição atual governa todo o histórico do phoneNumber salvo no snapshot, inclusive antes da atribuição. Snapshot ausente ou não confiável é excluído para usuário, sem inferir empresa compartilhada ou contato remoto. Remover sessão preserva acesso se a atribuição persistir. Novas requisições consultam a atribuição atual; bytes/blobs já entregues não podem ser revogados. Administrador permanece inalterado. Exige propriedade do recordId exato; nunca substitui por outro registro com o mesmo callId. Valida internamente X-Unoapi-Session-Scope-Applied: 1 antes de transmitir o stream. Header é resposta interna upstream, não parâmetro público. Sem URL global, URL interna ou chave de armazenamento no cliente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Propriedade/escopo não comprovados; não retorna dados globais ou bytes.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/recordings/{{recordId}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "recordings",
                    "{{recordId}}"
                  ],
                  "query": []
                },
                "description": "Usuário Manager somente com Uno + VoIP compatíveis: upstream capabilities.managerSessionHistoryScope=1. Upstream antigo/incompatível mantém history=false e recordings=false; acesso negado sem fallback global. Credencial e escopo são resolvidos no servidor, não por headers enviados pelo cliente. A atribuição atual governa todo o histórico do phoneNumber salvo no snapshot, inclusive antes da atribuição. Snapshot ausente ou não confiável é excluído para usuário, sem inferir empresa compartilhada ou contato remoto. Remover sessão preserva acesso se a atribuição persistir. Novas requisições consultam a atribuição atual; bytes/blobs já entregues não podem ser revogados. Administrador permanece inalterado. Exige propriedade do recordId exato; nunca substitui por outro registro com o mesmo callId. Valida internamente X-Unoapi-Session-Scope-Applied: 1 antes de transmitir o stream. Header é resposta interna upstream, não parâmetro público. Sem URL global, URL interna ou chave de armazenamento no cliente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Propriedade/escopo não comprovados; não retorna dados globais ou bytes.",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"manager_voip_forbidden\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/recordings/{{recordId}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "recordings",
                    "{{recordId}}"
                  ],
                  "query": []
                },
                "description": "Usuário Manager somente com Uno + VoIP compatíveis: upstream capabilities.managerSessionHistoryScope=1. Upstream antigo/incompatível mantém history=false e recordings=false; acesso negado sem fallback global. Credencial e escopo são resolvidos no servidor, não por headers enviados pelo cliente. A atribuição atual governa todo o histórico do phoneNumber salvo no snapshot, inclusive antes da atribuição. Snapshot ausente ou não confiável é excluído para usuário, sem inferir empresa compartilhada ou contato remoto. Remover sessão preserva acesso se a atribuição persistir. Novas requisições consultam a atribuição atual; bytes/blobs já entregues não podem ser revogados. Administrador permanece inalterado. Exige propriedade do recordId exato; nunca substitui por outro registro com o mesmo callId. Valida internamente X-Unoapi-Session-Scope-Applied: 1 antes de transmitir o stream. Header é resposta interna upstream, não parâmetro público. Sem URL global, URL interna ou chave de armazenamento no cliente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/recordings/{{recordId}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "recordings",
                    "{{recordId}}"
                  ],
                  "query": []
                },
                "description": "Usuário Manager somente com Uno + VoIP compatíveis: upstream capabilities.managerSessionHistoryScope=1. Upstream antigo/incompatível mantém history=false e recordings=false; acesso negado sem fallback global. Credencial e escopo são resolvidos no servidor, não por headers enviados pelo cliente. A atribuição atual governa todo o histórico do phoneNumber salvo no snapshot, inclusive antes da atribuição. Snapshot ausente ou não confiável é excluído para usuário, sem inferir empresa compartilhada ou contato remoto. Remover sessão preserva acesso se a atribuição persistir. Novas requisições consultam a atribuição atual; bytes/blobs já entregues não podem ser revogados. Administrador permanece inalterado. Exige propriedade do recordId exato; nunca substitui por outro registro com o mesmo callId. Valida internamente X-Unoapi-Session-Scope-Applied: 1 antes de transmitir o stream. Header é resposta interna upstream, não parâmetro público. Sem URL global, URL interna ou chave de armazenamento no cliente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/recordings/{{recordId}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "recordings",
                    "{{recordId}}"
                  ],
                  "query": []
                },
                "description": "Usuário Manager somente com Uno + VoIP compatíveis: upstream capabilities.managerSessionHistoryScope=1. Upstream antigo/incompatível mantém history=false e recordings=false; acesso negado sem fallback global. Credencial e escopo são resolvidos no servidor, não por headers enviados pelo cliente. A atribuição atual governa todo o histórico do phoneNumber salvo no snapshot, inclusive antes da atribuição. Snapshot ausente ou não confiável é excluído para usuário, sem inferir empresa compartilhada ou contato remoto. Remover sessão preserva acesso se a atribuição persistir. Novas requisições consultam a atribuição atual; bytes/blobs já entregues não podem ser revogados. Administrador permanece inalterado. Exige propriedade do recordId exato; nunca substitui por outro registro com o mesmo callId. Valida internamente X-Unoapi-Session-Scope-Applied: 1 antes de transmitir o stream. Header é resposta interna upstream, não parâmetro público. Sem URL global, URL interna ou chave de armazenamento no cliente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Transferir chamada para outro ramal",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/calls/{{callId}}/transfer",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "calls",
                "{{callId}}",
                "transfer"
              ],
              "query": []
            },
            "description": "Transferir chamada para outro ramal\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"targetExtensionId\": \"1002\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/calls/{{callId}}/transfer",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "calls",
                    "{{callId}}",
                    "transfer"
                  ],
                  "query": []
                },
                "description": "Transferir chamada para outro ramal\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"targetExtensionId\": \"1002\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/calls/{{callId}}/transfer",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "calls",
                    "{{callId}}",
                    "transfer"
                  ],
                  "query": []
                },
                "description": "Transferir chamada para outro ramal\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"targetExtensionId\": \"1002\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/calls/{{callId}}/transfer",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "calls",
                    "{{callId}}",
                    "transfer"
                  ],
                  "query": []
                },
                "description": "Transferir chamada para outro ramal\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"targetExtensionId\": \"1002\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/calls/{{callId}}/transfer",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "calls",
                    "{{callId}}",
                    "transfer"
                  ],
                  "query": []
                },
                "description": "Transferir chamada para outro ramal\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"targetExtensionId\": \"1002\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/calls/{{callId}}/transfer",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "calls",
                    "{{callId}}",
                    "transfer"
                  ],
                  "query": []
                },
                "description": "Transferir chamada para outro ramal\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"targetExtensionId\": \"1002\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Listar recursos administrativos de telefonia",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/{{resource}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "{{resource}}"
              ],
              "query": []
            },
            "description": "Listar recursos administrativos de telefonia\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Recursos administrativos configurados no serviço de telefonia.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/{{resource}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "{{resource}}"
                  ],
                  "query": []
                },
                "description": "Listar recursos administrativos de telefonia\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Recursos administrativos configurados no serviço de telefonia.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"items\": [\n    {}\n  ]\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/{{resource}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "{{resource}}"
                  ],
                  "query": []
                },
                "description": "Listar recursos administrativos de telefonia\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/{{resource}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "{{resource}}"
                  ],
                  "query": []
                },
                "description": "Listar recursos administrativos de telefonia\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/{{resource}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "{{resource}}"
                  ],
                  "query": []
                },
                "description": "Listar recursos administrativos de telefonia\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/{{resource}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "{{resource}}"
                  ],
                  "query": []
                },
                "description": "Listar recursos administrativos de telefonia\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/{{resource}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "{{resource}}"
                  ],
                  "query": []
                },
                "description": "Listar recursos administrativos de telefonia\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Criar ou atualizar recurso avançado de telefonia",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/{{resource}}/{{id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "{{resource}}",
                "{{id}}"
              ],
              "query": []
            },
            "description": "Criar ou atualizar recurso avançado de telefonia\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"enabled\": true,\n  \"label\": \"Matriz\",\n  \"timeZone\": \"America/Cuiaba\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Configuração validada, persistida e devolvida com segredos omitidos.",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/{{resource}}/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "{{resource}}",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Criar ou atualizar recurso avançado de telefonia\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"enabled\": true,\n  \"label\": \"Matriz\",\n  \"timeZone\": \"America/Cuiaba\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Configuração validada, persistida e devolvida com segredos omitidos.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/{{resource}}/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "{{resource}}",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Criar ou atualizar recurso avançado de telefonia\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"enabled\": true,\n  \"label\": \"Matriz\",\n  \"timeZone\": \"America/Cuiaba\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/{{resource}}/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "{{resource}}",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Criar ou atualizar recurso avançado de telefonia\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"enabled\": true,\n  \"label\": \"Matriz\",\n  \"timeZone\": \"America/Cuiaba\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/{{resource}}/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "{{resource}}",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Criar ou atualizar recurso avançado de telefonia\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"enabled\": true,\n  \"label\": \"Matriz\",\n  \"timeZone\": \"America/Cuiaba\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/{{resource}}/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "{{resource}}",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Criar ou atualizar recurso avançado de telefonia\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"enabled\": true,\n  \"label\": \"Matriz\",\n  \"timeZone\": \"America/Cuiaba\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/{{resource}}/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "{{resource}}",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Criar ou atualizar recurso avançado de telefonia\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"enabled\": true,\n  \"label\": \"Matriz\",\n  \"timeZone\": \"America/Cuiaba\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Excluir recurso avançado de telefonia",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/{{resource}}/{{id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "{{resource}}",
                "{{id}}"
              ],
              "query": []
            },
            "description": "Excluir recurso avançado de telefonia\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/{{resource}}/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "{{resource}}",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Excluir recurso avançado de telefonia\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/{{resource}}/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "{{resource}}",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Excluir recurso avançado de telefonia\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/{{resource}}/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "{{resource}}",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Excluir recurso avançado de telefonia\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/{{resource}}/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "{{resource}}",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Excluir recurso avançado de telefonia\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/{{resource}}/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "{{resource}}",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Excluir recurso avançado de telefonia\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Listar linhas descobertas pela bridge Zapo",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/zapo-lines",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "zapo-lines"
              ],
              "query": []
            },
            "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Lista linhas próprias; dados do ramal automático aparecem somente quando o vínculo pode ser comprovado.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Inventário de linhas reconciliadas automaticamente com empresa, conta, sessão e ramal SIP/WebRTC.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/zapo-lines",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "zapo-lines"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Lista linhas próprias; dados do ramal automático aparecem somente quando o vínculo pode ser comprovado.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Inventário de linhas reconciliadas automaticamente com empresa, conta, sessão e ramal SIP/WebRTC.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"lines\": [\n    {\n      \"session\": \"5566999554300\",\n      \"connected\": false,\n      \"maxConcurrentCalls\": 2,\n      \"automatic\": {\n        \"extensionId\": \"string\",\n        \"username\": \"5566999554300\",\n        \"status\": \"active\",\n        \"registrationCount\": 0,\n        \"freeRegistrationCount\": 0,\n        \"busyRegistrationCount\": 0,\n        \"transports\": [\n          \"sip\"\n        ],\n        \"basicInboundEnabled\": true\n      },\n      \"advancedRoutingConfigured\": false\n    }\n  ]\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/zapo-lines",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "zapo-lines"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Lista linhas próprias; dados do ramal automático aparecem somente quando o vínculo pode ser comprovado.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/zapo-lines",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "zapo-lines"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Lista linhas próprias; dados do ramal automático aparecem somente quando o vínculo pode ser comprovado.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/zapo-lines",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "zapo-lines"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Lista linhas próprias; dados do ramal automático aparecem somente quando o vínculo pode ser comprovado.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/zapo-lines",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "zapo-lines"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Lista linhas próprias; dados do ramal automático aparecem somente quando o vínculo pode ser comprovado.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/zapo-lines",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "zapo-lines"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Lista linhas próprias; dados do ramal automático aparecem somente quando o vínculo pode ser comprovado.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Alterar a empresa de uma linha Zapo provisionada",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/zapo-lines/{{session}}/assign",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "zapo-lines",
                "{{session}}",
                "assign"
              ],
              "query": []
            },
            "description": "O provisionamento inicial é automático. Esta operação permanece disponível somente para uma mudança administrativa posterior de empresa.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"companyId\": \"empresa-exemplo\",\n  \"label\": \"Linha de exemplo\",\n  \"maxConcurrentCalls\": 2\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/zapo-lines/{{session}}/assign",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "zapo-lines",
                    "{{session}}",
                    "assign"
                  ],
                  "query": []
                },
                "description": "O provisionamento inicial é automático. Esta operação permanece disponível somente para uma mudança administrativa posterior de empresa.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"companyId\": \"empresa-exemplo\",\n  \"label\": \"Linha de exemplo\",\n  \"maxConcurrentCalls\": 2\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/zapo-lines/{{session}}/assign",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "zapo-lines",
                    "{{session}}",
                    "assign"
                  ],
                  "query": []
                },
                "description": "O provisionamento inicial é automático. Esta operação permanece disponível somente para uma mudança administrativa posterior de empresa.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"companyId\": \"empresa-exemplo\",\n  \"label\": \"Linha de exemplo\",\n  \"maxConcurrentCalls\": 2\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/zapo-lines/{{session}}/assign",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "zapo-lines",
                    "{{session}}",
                    "assign"
                  ],
                  "query": []
                },
                "description": "O provisionamento inicial é automático. Esta operação permanece disponível somente para uma mudança administrativa posterior de empresa.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"companyId\": \"empresa-exemplo\",\n  \"label\": \"Linha de exemplo\",\n  \"maxConcurrentCalls\": 2\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/zapo-lines/{{session}}/assign",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "zapo-lines",
                    "{{session}}",
                    "assign"
                  ],
                  "query": []
                },
                "description": "O provisionamento inicial é automático. Esta operação permanece disponível somente para uma mudança administrativa posterior de empresa.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"companyId\": \"empresa-exemplo\",\n  \"label\": \"Linha de exemplo\",\n  \"maxConcurrentCalls\": 2\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/zapo-lines/{{session}}/assign",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "zapo-lines",
                    "{{session}}",
                    "assign"
                  ],
                  "query": []
                },
                "description": "O provisionamento inicial é automático. Esta operação permanece disponível somente para uma mudança administrativa posterior de empresa.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"companyId\": \"empresa-exemplo\",\n  \"label\": \"Linha de exemplo\",\n  \"maxConcurrentCalls\": 2\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Consultar histórico de chamadas e gravações",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/history?page={{page}}&pageSize={{pageSize}}&limit={{limit}}&search={{search}}&startDate={{startDate}}&endDate={{endDate}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "history"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "{{page}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "pageSize",
                  "value": "{{pageSize}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "{{limit}}",
                  "description": "Alias de pageSize.",
                  "disabled": true
                },
                {
                  "key": "search",
                  "value": "{{search}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "startDate",
                  "value": "{{startDate}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "endDate",
                  "value": "{{endDate}}",
                  "description": "",
                  "disabled": true
                }
              ]
            },
            "description": "Usuário Manager somente com Uno + VoIP compatíveis: upstream capabilities.managerSessionHistoryScope=1. Upstream antigo/incompatível mantém history=false e recordings=false; acesso negado sem fallback global. Credencial e escopo são resolvidos no servidor, não por headers enviados pelo cliente. A atribuição atual governa todo o histórico do phoneNumber salvo no snapshot, inclusive antes da atribuição. Snapshot ausente ou não confiável é excluído para usuário, sem inferir empresa compartilhada ou contato remoto. Remover sessão preserva acesso se a atribuição persistir. Novas requisições consultam a atribuição atual; bytes/blobs já entregues não podem ser revogados. Administrador permanece inalterado. Filtros e contagem são aplicados antes da paginação pelo snapshot phoneNumber. Valida scope.version=1 e scope.phones exatamente iguais ao conjunto autorizado; qualquer item de outra sessão invalida toda a resposta. Retorna somente campos permitidos, sem URLs globais ou chaves de armazenamento. X-Unoapi-Session-Scope é comunicação interna confiável, não autenticação pública.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Página administrativa ou restrita; total contado dentro do escopo antes da paginação.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/history?page={{page}}&pageSize={{pageSize}}&limit={{limit}}&search={{search}}&startDate={{startDate}}&endDate={{endDate}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "history"
                  ],
                  "query": [
                    {
                      "key": "page",
                      "value": "{{page}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "pageSize",
                      "value": "{{pageSize}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "limit",
                      "value": "{{limit}}",
                      "description": "Alias de pageSize.",
                      "disabled": true
                    },
                    {
                      "key": "search",
                      "value": "{{search}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "startDate",
                      "value": "{{startDate}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "endDate",
                      "value": "{{endDate}}",
                      "description": "",
                      "disabled": true
                    }
                  ]
                },
                "description": "Usuário Manager somente com Uno + VoIP compatíveis: upstream capabilities.managerSessionHistoryScope=1. Upstream antigo/incompatível mantém history=false e recordings=false; acesso negado sem fallback global. Credencial e escopo são resolvidos no servidor, não por headers enviados pelo cliente. A atribuição atual governa todo o histórico do phoneNumber salvo no snapshot, inclusive antes da atribuição. Snapshot ausente ou não confiável é excluído para usuário, sem inferir empresa compartilhada ou contato remoto. Remover sessão preserva acesso se a atribuição persistir. Novas requisições consultam a atribuição atual; bytes/blobs já entregues não podem ser revogados. Administrador permanece inalterado. Filtros e contagem são aplicados antes da paginação pelo snapshot phoneNumber. Valida scope.version=1 e scope.phones exatamente iguais ao conjunto autorizado; qualquer item de outra sessão invalida toda a resposta. Retorna somente campos permitidos, sem URLs globais ou chaves de armazenamento. X-Unoapi-Session-Scope é comunicação interna confiável, não autenticação pública.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Página administrativa ou restrita; total contado dentro do escopo antes da paginação.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"items\": [\n    {\n      \"id\": \"registro-exemplo\",\n      \"callId\": \"chamada-exemplo\",\n      \"phoneNumber\": \"5511999999999\",\n      \"direction\": \"inbound\",\n      \"status\": \"completed\",\n      \"recordingStatus\": \"available\"\n    }\n  ],\n  \"total\": 1,\n  \"page\": 1,\n  \"pageSize\": 20,\n  \"totalPages\": 1,\n  \"scope\": {\n    \"version\": 1,\n    \"phones\": [\n      \"5511999999999\"\n    ]\n  }\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/history?page={{page}}&pageSize={{pageSize}}&limit={{limit}}&search={{search}}&startDate={{startDate}}&endDate={{endDate}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "history"
                  ],
                  "query": [
                    {
                      "key": "page",
                      "value": "{{page}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "pageSize",
                      "value": "{{pageSize}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "limit",
                      "value": "{{limit}}",
                      "description": "Alias de pageSize.",
                      "disabled": true
                    },
                    {
                      "key": "search",
                      "value": "{{search}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "startDate",
                      "value": "{{startDate}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "endDate",
                      "value": "{{endDate}}",
                      "description": "",
                      "disabled": true
                    }
                  ]
                },
                "description": "Usuário Manager somente com Uno + VoIP compatíveis: upstream capabilities.managerSessionHistoryScope=1. Upstream antigo/incompatível mantém history=false e recordings=false; acesso negado sem fallback global. Credencial e escopo são resolvidos no servidor, não por headers enviados pelo cliente. A atribuição atual governa todo o histórico do phoneNumber salvo no snapshot, inclusive antes da atribuição. Snapshot ausente ou não confiável é excluído para usuário, sem inferir empresa compartilhada ou contato remoto. Remover sessão preserva acesso se a atribuição persistir. Novas requisições consultam a atribuição atual; bytes/blobs já entregues não podem ser revogados. Administrador permanece inalterado. Filtros e contagem são aplicados antes da paginação pelo snapshot phoneNumber. Valida scope.version=1 e scope.phones exatamente iguais ao conjunto autorizado; qualquer item de outra sessão invalida toda a resposta. Retorna somente campos permitidos, sem URLs globais ou chaves de armazenamento. X-Unoapi-Session-Scope é comunicação interna confiável, não autenticação pública.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Propriedade/escopo não comprovados; não retorna dados globais ou bytes.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/history?page={{page}}&pageSize={{pageSize}}&limit={{limit}}&search={{search}}&startDate={{startDate}}&endDate={{endDate}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "history"
                  ],
                  "query": [
                    {
                      "key": "page",
                      "value": "{{page}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "pageSize",
                      "value": "{{pageSize}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "limit",
                      "value": "{{limit}}",
                      "description": "Alias de pageSize.",
                      "disabled": true
                    },
                    {
                      "key": "search",
                      "value": "{{search}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "startDate",
                      "value": "{{startDate}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "endDate",
                      "value": "{{endDate}}",
                      "description": "",
                      "disabled": true
                    }
                  ]
                },
                "description": "Usuário Manager somente com Uno + VoIP compatíveis: upstream capabilities.managerSessionHistoryScope=1. Upstream antigo/incompatível mantém history=false e recordings=false; acesso negado sem fallback global. Credencial e escopo são resolvidos no servidor, não por headers enviados pelo cliente. A atribuição atual governa todo o histórico do phoneNumber salvo no snapshot, inclusive antes da atribuição. Snapshot ausente ou não confiável é excluído para usuário, sem inferir empresa compartilhada ou contato remoto. Remover sessão preserva acesso se a atribuição persistir. Novas requisições consultam a atribuição atual; bytes/blobs já entregues não podem ser revogados. Administrador permanece inalterado. Filtros e contagem são aplicados antes da paginação pelo snapshot phoneNumber. Valida scope.version=1 e scope.phones exatamente iguais ao conjunto autorizado; qualquer item de outra sessão invalida toda a resposta. Retorna somente campos permitidos, sem URLs globais ou chaves de armazenamento. X-Unoapi-Session-Scope é comunicação interna confiável, não autenticação pública.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Propriedade/escopo não comprovados; não retorna dados globais ou bytes.",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"manager_voip_forbidden\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/history?page={{page}}&pageSize={{pageSize}}&limit={{limit}}&search={{search}}&startDate={{startDate}}&endDate={{endDate}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "history"
                  ],
                  "query": [
                    {
                      "key": "page",
                      "value": "{{page}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "pageSize",
                      "value": "{{pageSize}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "limit",
                      "value": "{{limit}}",
                      "description": "Alias de pageSize.",
                      "disabled": true
                    },
                    {
                      "key": "search",
                      "value": "{{search}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "startDate",
                      "value": "{{startDate}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "endDate",
                      "value": "{{endDate}}",
                      "description": "",
                      "disabled": true
                    }
                  ]
                },
                "description": "Usuário Manager somente com Uno + VoIP compatíveis: upstream capabilities.managerSessionHistoryScope=1. Upstream antigo/incompatível mantém history=false e recordings=false; acesso negado sem fallback global. Credencial e escopo são resolvidos no servidor, não por headers enviados pelo cliente. A atribuição atual governa todo o histórico do phoneNumber salvo no snapshot, inclusive antes da atribuição. Snapshot ausente ou não confiável é excluído para usuário, sem inferir empresa compartilhada ou contato remoto. Remover sessão preserva acesso se a atribuição persistir. Novas requisições consultam a atribuição atual; bytes/blobs já entregues não podem ser revogados. Administrador permanece inalterado. Filtros e contagem são aplicados antes da paginação pelo snapshot phoneNumber. Valida scope.version=1 e scope.phones exatamente iguais ao conjunto autorizado; qualquer item de outra sessão invalida toda a resposta. Retorna somente campos permitidos, sem URLs globais ou chaves de armazenamento. X-Unoapi-Session-Scope é comunicação interna confiável, não autenticação pública.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/history?page={{page}}&pageSize={{pageSize}}&limit={{limit}}&search={{search}}&startDate={{startDate}}&endDate={{endDate}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "history"
                  ],
                  "query": [
                    {
                      "key": "page",
                      "value": "{{page}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "pageSize",
                      "value": "{{pageSize}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "limit",
                      "value": "{{limit}}",
                      "description": "Alias de pageSize.",
                      "disabled": true
                    },
                    {
                      "key": "search",
                      "value": "{{search}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "startDate",
                      "value": "{{startDate}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "endDate",
                      "value": "{{endDate}}",
                      "description": "",
                      "disabled": true
                    }
                  ]
                },
                "description": "Usuário Manager somente com Uno + VoIP compatíveis: upstream capabilities.managerSessionHistoryScope=1. Upstream antigo/incompatível mantém history=false e recordings=false; acesso negado sem fallback global. Credencial e escopo são resolvidos no servidor, não por headers enviados pelo cliente. A atribuição atual governa todo o histórico do phoneNumber salvo no snapshot, inclusive antes da atribuição. Snapshot ausente ou não confiável é excluído para usuário, sem inferir empresa compartilhada ou contato remoto. Remover sessão preserva acesso se a atribuição persistir. Novas requisições consultam a atribuição atual; bytes/blobs já entregues não podem ser revogados. Administrador permanece inalterado. Filtros e contagem são aplicados antes da paginação pelo snapshot phoneNumber. Valida scope.version=1 e scope.phones exatamente iguais ao conjunto autorizado; qualquer item de outra sessão invalida toda a resposta. Retorna somente campos permitidos, sem URLs globais ou chaves de armazenamento. X-Unoapi-Session-Scope é comunicação interna confiável, não autenticação pública.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/history?page={{page}}&pageSize={{pageSize}}&limit={{limit}}&search={{search}}&startDate={{startDate}}&endDate={{endDate}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "history"
                  ],
                  "query": [
                    {
                      "key": "page",
                      "value": "{{page}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "pageSize",
                      "value": "{{pageSize}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "limit",
                      "value": "{{limit}}",
                      "description": "Alias de pageSize.",
                      "disabled": true
                    },
                    {
                      "key": "search",
                      "value": "{{search}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "startDate",
                      "value": "{{startDate}}",
                      "description": "",
                      "disabled": true
                    },
                    {
                      "key": "endDate",
                      "value": "{{endDate}}",
                      "description": "",
                      "disabled": true
                    }
                  ]
                },
                "description": "Usuário Manager somente com Uno + VoIP compatíveis: upstream capabilities.managerSessionHistoryScope=1. Upstream antigo/incompatível mantém history=false e recordings=false; acesso negado sem fallback global. Credencial e escopo são resolvidos no servidor, não por headers enviados pelo cliente. A atribuição atual governa todo o histórico do phoneNumber salvo no snapshot, inclusive antes da atribuição. Snapshot ausente ou não confiável é excluído para usuário, sem inferir empresa compartilhada ou contato remoto. Remover sessão preserva acesso se a atribuição persistir. Novas requisições consultam a atribuição atual; bytes/blobs já entregues não podem ser revogados. Administrador permanece inalterado. Filtros e contagem são aplicados antes da paginação pelo snapshot phoneNumber. Valida scope.version=1 e scope.phones exatamente iguais ao conjunto autorizado; qualquer item de outra sessão invalida toda a resposta. Retorna somente campos permitidos, sem URLs globais ou chaves de armazenamento. X-Unoapi-Session-Scope é comunicação interna confiável, não autenticação pública.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Consultar configuração de gravações",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/recording/settings",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "recording",
                "settings"
              ],
              "query": []
            },
            "description": "Consultar configuração de gravações\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Configuração com segredos omitidos.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/recording/settings",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "recording",
                    "settings"
                  ],
                  "query": []
                },
                "description": "Consultar configuração de gravações\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Configuração com segredos omitidos.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/recording/settings",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "recording",
                    "settings"
                  ],
                  "query": []
                },
                "description": "Consultar configuração de gravações\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/recording/settings",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "recording",
                    "settings"
                  ],
                  "query": []
                },
                "description": "Consultar configuração de gravações\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/recording/settings",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "recording",
                    "settings"
                  ],
                  "query": []
                },
                "description": "Consultar configuração de gravações\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/recording/settings",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "recording",
                    "settings"
                  ],
                  "query": []
                },
                "description": "Consultar configuração de gravações\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/recording/settings",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "recording",
                    "settings"
                  ],
                  "query": []
                },
                "description": "Consultar configuração de gravações\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Atualizar configuração de gravações",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/recording/settings",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "recording",
                "settings"
              ],
              "query": []
            },
            "description": "Atualizar configuração de gravações\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"localDir\": \"/home/u/app/data/recordings\",\n  \"s3Region\": \"auto\",\n  \"s3PresignTtlSeconds\": 3600,\n  \"retentionDays\": 0\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/recording/settings",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "recording",
                    "settings"
                  ],
                  "query": []
                },
                "description": "Atualizar configuração de gravações\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"localDir\": \"/home/u/app/data/recordings\",\n  \"s3Region\": \"auto\",\n  \"s3PresignTtlSeconds\": 3600,\n  \"retentionDays\": 0\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/recording/settings",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "recording",
                    "settings"
                  ],
                  "query": []
                },
                "description": "Atualizar configuração de gravações\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"localDir\": \"/home/u/app/data/recordings\",\n  \"s3Region\": \"auto\",\n  \"s3PresignTtlSeconds\": 3600,\n  \"retentionDays\": 0\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/recording/settings",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "recording",
                    "settings"
                  ],
                  "query": []
                },
                "description": "Atualizar configuração de gravações\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"localDir\": \"/home/u/app/data/recordings\",\n  \"s3Region\": \"auto\",\n  \"s3PresignTtlSeconds\": 3600,\n  \"retentionDays\": 0\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/recording/settings",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "recording",
                    "settings"
                  ],
                  "query": []
                },
                "description": "Atualizar configuração de gravações\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"localDir\": \"/home/u/app/data/recordings\",\n  \"s3Region\": \"auto\",\n  \"s3PresignTtlSeconds\": 3600,\n  \"retentionDays\": 0\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/recording/settings",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "recording",
                    "settings"
                  ],
                  "query": []
                },
                "description": "Atualizar configuração de gravações\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"localDir\": \"/home/u/app/data/recordings\",\n  \"s3Region\": \"auto\",\n  \"s3PresignTtlSeconds\": 3600,\n  \"retentionDays\": 0\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Resumir armazenamento de gravações por linha",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/recording/summary",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "recording",
                "summary"
              ],
              "query": []
            },
            "description": "Resumir armazenamento de gravações por linha\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Quantidade e bytes armazenados por conta de telefonia.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/recording/summary",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "recording",
                    "summary"
                  ],
                  "query": []
                },
                "description": "Resumir armazenamento de gravações por linha\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Quantidade e bytes armazenados por conta de telefonia.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/recording/summary",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "recording",
                    "summary"
                  ],
                  "query": []
                },
                "description": "Resumir armazenamento de gravações por linha\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/recording/summary",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "recording",
                    "summary"
                  ],
                  "query": []
                },
                "description": "Resumir armazenamento de gravações por linha\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/recording/summary",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "recording",
                    "summary"
                  ],
                  "query": []
                },
                "description": "Resumir armazenamento de gravações por linha\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/recording/summary",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "recording",
                    "summary"
                  ],
                  "query": []
                },
                "description": "Resumir armazenamento de gravações por linha\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/recording/summary",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "recording",
                    "summary"
                  ],
                  "query": []
                },
                "description": "Resumir armazenamento de gravações por linha\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Limpar gravações armazenadas de uma linha",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/recording/accounts/{{accountId}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "recording",
                "accounts",
                "{{accountId}}"
              ],
              "query": []
            },
            "description": "Limpar gravações armazenadas de uma linha\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Total de arquivos e bytes removidos.",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/recording/accounts/{{accountId}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "recording",
                    "accounts",
                    "{{accountId}}"
                  ],
                  "query": []
                },
                "description": "Limpar gravações armazenadas de uma linha\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Total de arquivos e bytes removidos.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"deleted\": 0,\n  \"bytes\": 0\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/recording/accounts/{{accountId}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "recording",
                    "accounts",
                    "{{accountId}}"
                  ],
                  "query": []
                },
                "description": "Limpar gravações armazenadas de uma linha\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/recording/accounts/{{accountId}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "recording",
                    "accounts",
                    "{{accountId}}"
                  ],
                  "query": []
                },
                "description": "Limpar gravações armazenadas de uma linha\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/recording/accounts/{{accountId}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "recording",
                    "accounts",
                    "{{accountId}}"
                  ],
                  "query": []
                },
                "description": "Limpar gravações armazenadas de uma linha\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/recording/accounts/{{accountId}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "recording",
                    "accounts",
                    "{{accountId}}"
                  ],
                  "query": []
                },
                "description": "Limpar gravações armazenadas de uma linha\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/recording/accounts/{{accountId}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "recording",
                    "accounts",
                    "{{accountId}}"
                  ],
                  "query": []
                },
                "description": "Limpar gravações armazenadas de uma linha\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Consultar credenciais SIP e WebRTC do ramal",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/extensions/{{extensionId}}/credentials",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "extensions",
                "{{extensionId}}",
                "credentials"
              ],
              "query": []
            },
            "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário usa o ID exato do ramal automático próprio, validado por PN/linha/sessão; não por empresa. Ramais automáticos próprios em extension ou trunk podem ter suas credenciais consultadas. Trunks externos/compartilhados, ramais manuais, aliases ambíguos e compartilhamento por grupos são negados. Retorna senha SIP desse ramal e coordenadas de conexão, nunca credenciais ICE/TURN compartilhadas. Transferir atribuição impede consultas posteriores pelo antigo proprietário, mas não invalida senha SIP já copiada nem registro ativo. Não há rotação ou desconexão automática; o administrador precisa rotacionar a credencial e desconectar registros pelo processo de telefonia suportado para revogação externa completa.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Credenciais: contrato administrativo ou projeção restrita do ramal automático próprio.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{extensionId}}/credentials",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{extensionId}}",
                    "credentials"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário usa o ID exato do ramal automático próprio, validado por PN/linha/sessão; não por empresa. Ramais automáticos próprios em extension ou trunk podem ter suas credenciais consultadas. Trunks externos/compartilhados, ramais manuais, aliases ambíguos e compartilhamento por grupos são negados. Retorna senha SIP desse ramal e coordenadas de conexão, nunca credenciais ICE/TURN compartilhadas. Transferir atribuição impede consultas posteriores pelo antigo proprietário, mas não invalida senha SIP já copiada nem registro ativo. Não há rotação ou desconexão automática; o administrador precisa rotacionar a credencial e desconectar registros pelo processo de telefonia suportado para revogação externa completa.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Credenciais: contrato administrativo ou projeção restrita do ramal automático próprio.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"extensionId\": \"ramal-auto-exemplo\",\n  \"username\": \"1001\",\n  \"password\": \"SEGREDO_EXIBIDO_SOMENTE_AO_AUTORIZADO\",\n  \"sipEndpointMode\": \"extension\",\n  \"sipUri\": \"sip:1001@sip.example.invalid\",\n  \"sip\": {\n    \"domain\": \"sip.example.invalid\",\n    \"transport\": \"udp\"\n  }\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{extensionId}}/credentials",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{extensionId}}",
                    "credentials"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário usa o ID exato do ramal automático próprio, validado por PN/linha/sessão; não por empresa. Ramais automáticos próprios em extension ou trunk podem ter suas credenciais consultadas. Trunks externos/compartilhados, ramais manuais, aliases ambíguos e compartilhamento por grupos são negados. Retorna senha SIP desse ramal e coordenadas de conexão, nunca credenciais ICE/TURN compartilhadas. Transferir atribuição impede consultas posteriores pelo antigo proprietário, mas não invalida senha SIP já copiada nem registro ativo. Não há rotação ou desconexão automática; o administrador precisa rotacionar a credencial e desconectar registros pelo processo de telefonia suportado para revogação externa completa.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{extensionId}}/credentials",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{extensionId}}",
                    "credentials"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário usa o ID exato do ramal automático próprio, validado por PN/linha/sessão; não por empresa. Ramais automáticos próprios em extension ou trunk podem ter suas credenciais consultadas. Trunks externos/compartilhados, ramais manuais, aliases ambíguos e compartilhamento por grupos são negados. Retorna senha SIP desse ramal e coordenadas de conexão, nunca credenciais ICE/TURN compartilhadas. Transferir atribuição impede consultas posteriores pelo antigo proprietário, mas não invalida senha SIP já copiada nem registro ativo. Não há rotação ou desconexão automática; o administrador precisa rotacionar a credencial e desconectar registros pelo processo de telefonia suportado para revogação externa completa.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{extensionId}}/credentials",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{extensionId}}",
                    "credentials"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário usa o ID exato do ramal automático próprio, validado por PN/linha/sessão; não por empresa. Ramais automáticos próprios em extension ou trunk podem ter suas credenciais consultadas. Trunks externos/compartilhados, ramais manuais, aliases ambíguos e compartilhamento por grupos são negados. Retorna senha SIP desse ramal e coordenadas de conexão, nunca credenciais ICE/TURN compartilhadas. Transferir atribuição impede consultas posteriores pelo antigo proprietário, mas não invalida senha SIP já copiada nem registro ativo. Não há rotação ou desconexão automática; o administrador precisa rotacionar a credencial e desconectar registros pelo processo de telefonia suportado para revogação externa completa.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{extensionId}}/credentials",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{extensionId}}",
                    "credentials"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário usa o ID exato do ramal automático próprio, validado por PN/linha/sessão; não por empresa. Ramais automáticos próprios em extension ou trunk podem ter suas credenciais consultadas. Trunks externos/compartilhados, ramais manuais, aliases ambíguos e compartilhamento por grupos são negados. Retorna senha SIP desse ramal e coordenadas de conexão, nunca credenciais ICE/TURN compartilhadas. Transferir atribuição impede consultas posteriores pelo antigo proprietário, mas não invalida senha SIP já copiada nem registro ativo. Não há rotação ou desconexão automática; o administrador precisa rotacionar a credencial e desconectar registros pelo processo de telefonia suportado para revogação externa completa.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{extensionId}}/credentials",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{extensionId}}",
                    "credentials"
                  ],
                  "query": []
                },
                "description": "Acesso: administrador ou credencial Manager de usuário, limitada aos PNs atribuídos. Papel e propriedade vêm do servidor; empresa em comum não concede acesso. Fluxos legados OAuth/QR/socket permanecem inalterados. Usuário usa o ID exato do ramal automático próprio, validado por PN/linha/sessão; não por empresa. Ramais automáticos próprios em extension ou trunk podem ter suas credenciais consultadas. Trunks externos/compartilhados, ramais manuais, aliases ambíguos e compartilhamento por grupos são negados. Retorna senha SIP desse ramal e coordenadas de conexão, nunca credenciais ICE/TURN compartilhadas. Transferir atribuição impede consultas posteriores pelo antigo proprietário, mas não invalida senha SIP já copiada nem registro ativo. Não há rotação ou desconexão automática; o administrador precisa rotacionar a credencial e desconectar registros pelo processo de telefonia suportado para revogação externa completa.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Desconectar registro ativo de um ramal",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/extensions/{{extensionId}}/registrations/{{registrationId}}?type={{type}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "extensions",
                "{{extensionId}}",
                "registrations",
                "{{registrationId}}"
              ],
              "query": [
                {
                  "key": "type",
                  "value": "{{type}}",
                  "description": "",
                  "disabled": true
                }
              ]
            },
            "description": "Desconectar registro ativo de um ramal\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente. Usuário Manager comum: sempre negado (disconnectRegistration=false), pois o upstream resolve aliases globais e pode fechar sockets compartilhados. Exclusivo do processo administrativo de telefonia.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Registro desconectado e lista ativa atualizada.",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{extensionId}}/registrations/{{registrationId}}?type={{type}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{extensionId}}",
                    "registrations",
                    "{{registrationId}}"
                  ],
                  "query": [
                    {
                      "key": "type",
                      "value": "{{type}}",
                      "description": "",
                      "disabled": true
                    }
                  ]
                },
                "description": "Desconectar registro ativo de um ramal\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente. Usuário Manager comum: sempre negado (disconnectRegistration=false), pois o upstream resolve aliases globais e pode fechar sockets compartilhados. Exclusivo do processo administrativo de telefonia.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Registro desconectado e lista ativa atualizada.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{extensionId}}/registrations/{{registrationId}}?type={{type}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{extensionId}}",
                    "registrations",
                    "{{registrationId}}"
                  ],
                  "query": [
                    {
                      "key": "type",
                      "value": "{{type}}",
                      "description": "",
                      "disabled": true
                    }
                  ]
                },
                "description": "Desconectar registro ativo de um ramal\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente. Usuário Manager comum: sempre negado (disconnectRegistration=false), pois o upstream resolve aliases globais e pode fechar sockets compartilhados. Exclusivo do processo administrativo de telefonia.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{extensionId}}/registrations/{{registrationId}}?type={{type}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{extensionId}}",
                    "registrations",
                    "{{registrationId}}"
                  ],
                  "query": [
                    {
                      "key": "type",
                      "value": "{{type}}",
                      "description": "",
                      "disabled": true
                    }
                  ]
                },
                "description": "Desconectar registro ativo de um ramal\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente. Usuário Manager comum: sempre negado (disconnectRegistration=false), pois o upstream resolve aliases globais e pode fechar sockets compartilhados. Exclusivo do processo administrativo de telefonia.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{extensionId}}/registrations/{{registrationId}}?type={{type}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{extensionId}}",
                    "registrations",
                    "{{registrationId}}"
                  ],
                  "query": [
                    {
                      "key": "type",
                      "value": "{{type}}",
                      "description": "",
                      "disabled": true
                    }
                  ]
                },
                "description": "Desconectar registro ativo de um ramal\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente. Usuário Manager comum: sempre negado (disconnectRegistration=false), pois o upstream resolve aliases globais e pode fechar sockets compartilhados. Exclusivo do processo administrativo de telefonia.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{extensionId}}/registrations/{{registrationId}}?type={{type}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{extensionId}}",
                    "registrations",
                    "{{registrationId}}"
                  ],
                  "query": [
                    {
                      "key": "type",
                      "value": "{{type}}",
                      "description": "",
                      "disabled": true
                    }
                  ]
                },
                "description": "Desconectar registro ativo de um ramal\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente. Usuário Manager comum: sempre negado (disconnectRegistration=false), pois o upstream resolve aliases globais e pode fechar sockets compartilhados. Exclusivo do processo administrativo de telefonia.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensions/{{extensionId}}/registrations/{{registrationId}}?type={{type}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensions",
                    "{{extensionId}}",
                    "registrations",
                    "{{registrationId}}"
                  ],
                  "query": [
                    {
                      "key": "type",
                      "value": "{{type}}",
                      "description": "",
                      "disabled": true
                    }
                  ]
                },
                "description": "Desconectar registro ativo de um ramal\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente. Usuário Manager comum: sempre negado (disconnectRegistration=false), pois o upstream resolve aliases globais e pode fechar sockets compartilhados. Exclusivo do processo administrativo de telefonia.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Reproduzir áudio de transferência do grupo",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{extensionGroupId}}/transfer-audio",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "extensionGroups",
                "{{extensionGroupId}}",
                "transfer-audio"
              ],
              "query": []
            },
            "description": "Reproduzir áudio de transferência do grupo\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{extensionGroupId}}/transfer-audio",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{extensionGroupId}}",
                    "transfer-audio"
                  ],
                  "query": []
                },
                "description": "Reproduzir áudio de transferência do grupo\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{extensionGroupId}}/transfer-audio",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{extensionGroupId}}",
                    "transfer-audio"
                  ],
                  "query": []
                },
                "description": "Reproduzir áudio de transferência do grupo\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{extensionGroupId}}/transfer-audio",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{extensionGroupId}}",
                    "transfer-audio"
                  ],
                  "query": []
                },
                "description": "Reproduzir áudio de transferência do grupo\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{extensionGroupId}}/transfer-audio",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{extensionGroupId}}",
                    "transfer-audio"
                  ],
                  "query": []
                },
                "description": "Reproduzir áudio de transferência do grupo\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{extensionGroupId}}/transfer-audio",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{extensionGroupId}}",
                    "transfer-audio"
                  ],
                  "query": []
                },
                "description": "Reproduzir áudio de transferência do grupo\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Substituir áudio de transferência do grupo",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "audio/mpeg"
              },
              {
                "key": "X-File-Name",
                "value": "{{X-File-Name}}",
                "description": "Nome original codificado com encodeURIComponent.",
                "disabled": true
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{extensionGroupId}}/transfer-audio",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "extensionGroups",
                "{{extensionGroupId}}",
                "transfer-audio"
              ],
              "query": []
            },
            "description": "Substituir áudio de transferência do grupo\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "file",
              "file": {
                "src": ""
              }
            }
          },
          "response": [
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "audio/mpeg"
                  },
                  {
                    "key": "X-File-Name",
                    "value": "{{X-File-Name}}",
                    "description": "Nome original codificado com encodeURIComponent.",
                    "disabled": true
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{extensionGroupId}}/transfer-audio",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{extensionGroupId}}",
                    "transfer-audio"
                  ],
                  "query": []
                },
                "description": "Substituir áudio de transferência do grupo\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "file",
                  "file": {
                    "src": ""
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "audio/mpeg"
                  },
                  {
                    "key": "X-File-Name",
                    "value": "{{X-File-Name}}",
                    "description": "Nome original codificado com encodeURIComponent.",
                    "disabled": true
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{extensionGroupId}}/transfer-audio",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{extensionGroupId}}",
                    "transfer-audio"
                  ],
                  "query": []
                },
                "description": "Substituir áudio de transferência do grupo\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "file",
                  "file": {
                    "src": ""
                  }
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "audio/mpeg"
                  },
                  {
                    "key": "X-File-Name",
                    "value": "{{X-File-Name}}",
                    "description": "Nome original codificado com encodeURIComponent.",
                    "disabled": true
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{extensionGroupId}}/transfer-audio",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{extensionGroupId}}",
                    "transfer-audio"
                  ],
                  "query": []
                },
                "description": "Substituir áudio de transferência do grupo\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "file",
                  "file": {
                    "src": ""
                  }
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "audio/mpeg"
                  },
                  {
                    "key": "X-File-Name",
                    "value": "{{X-File-Name}}",
                    "description": "Nome original codificado com encodeURIComponent.",
                    "disabled": true
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{extensionGroupId}}/transfer-audio",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{extensionGroupId}}",
                    "transfer-audio"
                  ],
                  "query": []
                },
                "description": "Substituir áudio de transferência do grupo\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "file",
                  "file": {
                    "src": ""
                  }
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "audio/mpeg"
                  },
                  {
                    "key": "X-File-Name",
                    "value": "{{X-File-Name}}",
                    "description": "Nome original codificado com encodeURIComponent.",
                    "disabled": true
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/extensionGroups/{{extensionGroupId}}/transfer-audio",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "extensionGroups",
                    "{{extensionGroupId}}",
                    "transfer-audio"
                  ],
                  "query": []
                },
                "description": "Substituir áudio de transferência do grupo\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "file",
                  "file": {
                    "src": ""
                  }
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Simular roteamento de entrada",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/router/resolve-inbound",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "router",
                "resolve-inbound"
              ],
              "query": []
            },
            "description": "Simular roteamento de entrada\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"sessionId\": \"5566999554300\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Resultado da simulação, sem abrir chamada.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/resolve-inbound",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "resolve-inbound"
                  ],
                  "query": []
                },
                "description": "Simular roteamento de entrada\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sessionId\": \"5566999554300\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Resultado da simulação, sem abrir chamada.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"ok\": false\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/resolve-inbound",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "resolve-inbound"
                  ],
                  "query": []
                },
                "description": "Simular roteamento de entrada\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sessionId\": \"5566999554300\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/resolve-inbound",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "resolve-inbound"
                  ],
                  "query": []
                },
                "description": "Simular roteamento de entrada\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sessionId\": \"5566999554300\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/resolve-inbound",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "resolve-inbound"
                  ],
                  "query": []
                },
                "description": "Simular roteamento de entrada\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sessionId\": \"5566999554300\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/resolve-inbound",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "resolve-inbound"
                  ],
                  "query": []
                },
                "description": "Simular roteamento de entrada\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sessionId\": \"5566999554300\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/resolve-inbound",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "resolve-inbound"
                  ],
                  "query": []
                },
                "description": "Simular roteamento de entrada\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"sessionId\": \"5566999554300\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Simular roteamento de saída",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/router/resolve-outbound",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "router",
                "resolve-outbound"
              ],
              "query": []
            },
            "description": "Simular roteamento de saída\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"extensionId\": \"1001\",\n  \"target\": \"5566996269251\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Resultado da simulação, sem abrir chamada.",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/resolve-outbound",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "resolve-outbound"
                  ],
                  "query": []
                },
                "description": "Simular roteamento de saída\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"extensionId\": \"1001\",\n  \"target\": \"5566996269251\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Resultado da simulação, sem abrir chamada.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"ok\": false\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/resolve-outbound",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "resolve-outbound"
                  ],
                  "query": []
                },
                "description": "Simular roteamento de saída\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"extensionId\": \"1001\",\n  \"target\": \"5566996269251\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/resolve-outbound",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "resolve-outbound"
                  ],
                  "query": []
                },
                "description": "Simular roteamento de saída\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"extensionId\": \"1001\",\n  \"target\": \"5566996269251\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/resolve-outbound",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "resolve-outbound"
                  ],
                  "query": []
                },
                "description": "Simular roteamento de saída\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"extensionId\": \"1001\",\n  \"target\": \"5566996269251\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/resolve-outbound",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "resolve-outbound"
                  ],
                  "query": []
                },
                "description": "Simular roteamento de saída\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"extensionId\": \"1001\",\n  \"target\": \"5566996269251\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/resolve-outbound",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "resolve-outbound"
                  ],
                  "query": []
                },
                "description": "Simular roteamento de saída\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"extensionId\": \"1001\",\n  \"target\": \"5566996269251\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Listar reservas ativas do roteador",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/router/locks",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "router",
                "locks"
              ],
              "query": []
            },
            "description": "Listar reservas ativas do roteador\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Reservas atuais, isoladas por chamada e linha Zapo.",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/locks",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "locks"
                  ],
                  "query": []
                },
                "description": "Listar reservas ativas do roteador\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Reservas atuais, isoladas por chamada e linha Zapo.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"locks\": [\n    {\n      \"id\": \"string\"\n    }\n  ]\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/locks",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "locks"
                  ],
                  "query": []
                },
                "description": "Listar reservas ativas do roteador\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/locks",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "locks"
                  ],
                  "query": []
                },
                "description": "Listar reservas ativas do roteador\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/locks",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "locks"
                  ],
                  "query": []
                },
                "description": "Listar reservas ativas do roteador\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/locks",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "locks"
                  ],
                  "query": []
                },
                "description": "Listar reservas ativas do roteador\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/locks",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "locks"
                  ],
                  "query": []
                },
                "description": "Listar reservas ativas do roteador\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Liberar uma reserva do roteador",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/router/locks/{{lockId}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "router",
                "locks",
                "{{lockId}}"
              ],
              "query": []
            },
            "description": "Liberar uma reserva do roteador\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Resultado da liberação e reservas restantes.",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/locks/{{lockId}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "locks",
                    "{{lockId}}"
                  ],
                  "query": []
                },
                "description": "Liberar uma reserva do roteador\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Resultado da liberação e reservas restantes.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/locks/{{lockId}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "locks",
                    "{{lockId}}"
                  ],
                  "query": []
                },
                "description": "Liberar uma reserva do roteador\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/locks/{{lockId}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "locks",
                    "{{lockId}}"
                  ],
                  "query": []
                },
                "description": "Liberar uma reserva do roteador\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/locks/{{lockId}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "locks",
                    "{{lockId}}"
                  ],
                  "query": []
                },
                "description": "Liberar uma reserva do roteador\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/locks/{{lockId}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "locks",
                    "{{lockId}}"
                  ],
                  "query": []
                },
                "description": "Liberar uma reserva do roteador\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/locks/{{lockId}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "locks",
                    "{{lockId}}"
                  ],
                  "query": []
                },
                "description": "Liberar uma reserva do roteador\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        },
        {
          "name": "Liberar todas as reservas de uma chamada",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/voip/console/router/calls/{{callId}}/locks",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "voip",
                "console",
                "router",
                "calls",
                "{{callId}}",
                "locks"
              ],
              "query": []
            },
            "description": "Liberar todas as reservas de uma chamada\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Quantidade liberada e reservas restantes.",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/calls/{{callId}}/locks",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "calls",
                    "{{callId}}",
                    "locks"
                  ],
                  "query": []
                },
                "description": "Liberar todas as reservas de uma chamada\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Quantidade liberada e reservas restantes.",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/calls/{{callId}}/locks",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "calls",
                    "{{callId}}",
                    "locks"
                  ],
                  "query": []
                },
                "description": "Liberar todas as reservas de uma chamada\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/calls/{{callId}}/locks",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "calls",
                    "{{callId}}",
                    "locks"
                  ],
                  "query": []
                },
                "description": "Liberar todas as reservas de uma chamada\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"admin_token_required\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/calls/{{callId}}/locks",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "calls",
                    "{{callId}}",
                    "locks"
                  ],
                  "query": []
                },
                "description": "Liberar todas as reservas de uma chamada\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_unavailable\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/calls/{{callId}}/locks",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "calls",
                    "{{callId}}",
                    "locks"
                  ],
                  "query": []
                },
                "description": "Liberar todas as reservas de uma chamada\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 503,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_not_configured\"\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/voip/console/router/calls/{{callId}}/locks",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "voip",
                    "console",
                    "router",
                    "calls",
                    "{{callId}}",
                    "locks"
                  ],
                  "query": []
                },
                "description": "Liberar todas as reservas de uma chamada\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 504,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"voip_service_timeout\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Webhooks",
      "item": [
        {
          "name": "Consultar histórico de webhooks de mensagens",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/webhooks/history/{{phone}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "webhooks",
                "history",
                "{{phone}}"
              ],
              "query": []
            },
            "description": "Exclusivo do token global UNOAPI_AUTH_TOKEN. Retorna até 20 versões por número, mesmo após remoção. URLs exibem somente a origem; tokens e cabeçalhos não são retornados. Não consulta nem reconecta o WhatsApp.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Histórico em ordem de arquivamento mais recente primeiro",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/webhooks/history/{{phone}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "webhooks",
                    "history",
                    "{{phone}}"
                  ],
                  "query": []
                },
                "description": "Exclusivo do token global UNOAPI_AUTH_TOKEN. Retorna até 20 versões por número, mesmo após remoção. URLs exibem somente a origem; tokens e cabeçalhos não são retornados. Não consulta nem reconecta o WhatsApp.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Histórico em ordem de arquivamento mais recente primeiro",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"snapshots\": [\n    {\n      \"id\": \"string\",\n      \"archived_at\": \"string\",\n      \"reason\": \"updated\",\n      \"server\": \"string\",\n      \"webhooks\": [\n        {\n          \"id\": \"string\",\n          \"destination\": \"string\",\n          \"has_credentials\": false,\n          \"events\": [\n            \"string\"\n          ]\n        }\n      ]\n    }\n  ]\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/webhooks/history/{{phone}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "webhooks",
                    "history",
                    "{{phone}}"
                  ],
                  "query": []
                },
                "description": "Exclusivo do token global UNOAPI_AUTH_TOKEN. Retorna até 20 versões por número, mesmo após remoção. URLs exibem somente a origem; tokens e cabeçalhos não são retornados. Não consulta nem reconecta o WhatsApp.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            }
          ]
        },
        {
          "name": "Restaurar webhooks históricos como desativados",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/webhooks/history/{{phone}}/restore",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "webhooks",
                "history",
                "{{phone}}",
                "restore"
              ],
              "query": []
            },
            "description": "Exclusivo do token global. Exige sessão existente no mesmo servidor do snapshot. Mantém IDs e credenciais sem retorná-las. Não reconecta, não reenvia mensagens e não altera destinos centralizados de status. Conflitos exigem replace_existing=true. Alterações concorrentes retornam 409; a expiração da configuração é preservada.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"snapshot_id\": \"string\",\n  \"webhook_ids\": [\n    \"string\"\n  ],\n  \"replace_existing\": false\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Seleção restaurada sem ativação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/webhooks/history/{{phone}}/restore",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "webhooks",
                    "history",
                    "{{phone}}",
                    "restore"
                  ],
                  "query": []
                },
                "description": "Exclusivo do token global. Exige sessão existente no mesmo servidor do snapshot. Mantém IDs e credenciais sem retorná-las. Não reconecta, não reenvia mensagens e não altera destinos centralizados de status. Conflitos exigem replace_existing=true. Alterações concorrentes retornam 409; a expiração da configuração é preservada.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"snapshot_id\": \"string\",\n  \"webhook_ids\": [\n    \"string\"\n  ],\n  \"replace_existing\": false\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Seleção restaurada sem ativação",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"restored\": [\n    \"string\"\n  ],\n  \"enabled\": false\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/webhooks/history/{{phone}}/restore",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "webhooks",
                    "history",
                    "{{phone}}",
                    "restore"
                  ],
                  "query": []
                },
                "description": "Exclusivo do token global. Exige sessão existente no mesmo servidor do snapshot. Mantém IDs e credenciais sem retorná-las. Não reconecta, não reenvia mensagens e não altera destinos centralizados de status. Conflitos exigem replace_existing=true. Alterações concorrentes retornam 409; a expiração da configuração é preservada.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"snapshot_id\": \"string\",\n  \"webhook_ids\": [\n    \"string\"\n  ],\n  \"replace_existing\": false\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            }
          ]
        },
        {
          "name": "Adicionar ou remover telefone, LID ou grupo da blacklist de um webhook",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{phone}}/blacklist/{{webhook_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "blacklist",
                "{{webhook_id}}"
              ],
              "query": []
            },
            "description": "Bloqueia somente o encaminhamento ao webhook. Telefone e LID são equivalentes quando\nseu vínculo está no store da própria sessão; adicionar/remover qualquer variante afeta ambas.\nSem vínculo conhecido, somente a identidade informada é tratada. Grupos @g.us são\nindependentes dos participantes. Chaves antigas continuam consultadas nos próximos eventos.\nA resposta confirma enfileiramento, não aplicação imediata, em instalações com AMQP.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"to\": \"{{to}}\",\n  \"ttl\": 86400\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Verificar assinatura do webhook",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/webhooks/whatsapp/{{phone}}?hub.mode={{hub.mode}}&hub.verify_token={{hub.verify_token}}&hub.challenge={{hub.challenge}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "webhooks",
                "whatsapp",
                "{{phone}}"
              ],
              "query": [
                {
                  "key": "hub.mode",
                  "value": "{{hub.mode}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "hub.verify_token",
                  "value": "{{hub.verify_token}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "hub.challenge",
                  "value": "{{hub.challenge}}",
                  "description": "",
                  "disabled": true
                }
              ]
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Receber eventos do WhatsApp (Forward mode)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/webhooks/whatsapp/{{phone}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "webhooks",
                "whatsapp",
                "{{phone}}"
              ],
              "query": []
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"object\": \"whatsapp_business_account\",\n  \"entry\": [\n    {\n      \"id\": \"5511999999999\",\n      \"changes\": [\n        {\n          \"field\": \"messages\",\n          \"value\": {\n            \"messaging_product\": \"whatsapp\",\n            \"messages\": [\n              {\n                \"from\": \"5566999999999\",\n                \"id\": \"MESSAGE_ID\",\n                \"timestamp\": {{unix_timestamp}},\n                \"type\": \"interactive\",\n                \"interactive\": {\n                  \"type\": \"list_reply\",\n                  \"list_reply\": {\n                    \"id\": \"plan_basic\",\n                    \"title\": \"Básico\",\n                    \"description\": \"R$ 10\"\n                  }\n                }\n              }\n            ]\n          }\n        }\n      ]\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Webhook de teste (Fake)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/webhooks/fake/{{phone}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "webhooks",
                "fake",
                "{{phone}}"
              ],
              "query": []
            },
            "description": "Recebe qualquer payload e responde `{ \"success\": true }`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"object\": \"whatsapp_business_account\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Webhooks de sessões",
      "item": [
        {
          "name": "Listar destinos centralizados de eventos de sessão",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/session-webhooks",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "session-webhooks"
              ],
              "query": []
            },
            "description": "Requer UNOAPI_AUTH_TOKEN global. Tokens de sessão não são aceitos. Segredos nunca são retornados.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Destinos",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/session-webhooks",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "session-webhooks"
                  ],
                  "query": []
                },
                "description": "Requer UNOAPI_AUTH_TOKEN global. Tokens de sessão não são aceitos. Segredos nunca são retornados.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Destinos",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"destinations\": [\n    {\n      \"id\": \"string\",\n      \"name\": \"string\",\n      \"url\": \"https://example.com/resource\",\n      \"server\": \"string\",\n      \"enabled\": false,\n      \"session_ids\": [\n        \"string\"\n      ],\n      \"auto_include_new_sessions\": false,\n      \"events\": [\n        \"session.connected\"\n      ],\n      \"heartbeat_interval_seconds\": 0,\n      \"revision\": \"string\",\n      \"has_bearer_token\": false,\n      \"has_signing_secret\": false\n    }\n  ]\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/session-webhooks",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "session-webhooks"
                  ],
                  "query": []
                },
                "description": "Requer UNOAPI_AUTH_TOKEN global. Tokens de sessão não são aceitos. Segredos nunca são retornados.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            }
          ]
        },
        {
          "name": "Criar destino de eventos de sessão",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/session-webhooks",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "session-webhooks"
              ],
              "query": []
            },
            "description": "Requer UNOAPI_AUTH_TOKEN global. Não altera os webhooks de mensagens.\nSessões atuais devem ser selecionadas explicitamente; a inclusão automática\nvale somente para sessões Zapo criadas posteriormente no servidor informado.\nLimite de 100 destinos e 1000 sessões por destino. Não há escopo de conta ViperChat implícito.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"string\",\n  \"url\": \"https://example.com/resource\",\n  \"server\": \"server_1\",\n  \"enabled\": false,\n  \"session_ids\": [\n    \"string\"\n  ],\n  \"auto_include_new_sessions\": false,\n  \"events\": [\n    \"session.connected\"\n  ],\n  \"heartbeat_interval_seconds\": 300\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Destino criado (sem segredos)",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/session-webhooks",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "session-webhooks"
                  ],
                  "query": []
                },
                "description": "Requer UNOAPI_AUTH_TOKEN global. Não altera os webhooks de mensagens.\nSessões atuais devem ser selecionadas explicitamente; a inclusão automática\nvale somente para sessões Zapo criadas posteriormente no servidor informado.\nLimite de 100 destinos e 1000 sessões por destino. Não há escopo de conta ViperChat implícito.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"string\",\n  \"url\": \"https://example.com/resource\",\n  \"server\": \"server_1\",\n  \"enabled\": false,\n  \"session_ids\": [\n    \"string\"\n  ],\n  \"auto_include_new_sessions\": false,\n  \"events\": [\n    \"session.connected\"\n  ],\n  \"heartbeat_interval_seconds\": 300\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Destino criado (sem segredos)",
              "code": 201,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"string\",\n  \"name\": \"string\",\n  \"url\": \"https://example.com/resource\",\n  \"server\": \"string\",\n  \"enabled\": false,\n  \"session_ids\": [\n    \"string\"\n  ],\n  \"auto_include_new_sessions\": false,\n  \"events\": [\n    \"session.connected\"\n  ],\n  \"heartbeat_interval_seconds\": 0,\n  \"revision\": \"string\",\n  \"has_bearer_token\": false,\n  \"has_signing_secret\": false\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/session-webhooks",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "session-webhooks"
                  ],
                  "query": []
                },
                "description": "Requer UNOAPI_AUTH_TOKEN global. Não altera os webhooks de mensagens.\nSessões atuais devem ser selecionadas explicitamente; a inclusão automática\nvale somente para sessões Zapo criadas posteriormente no servidor informado.\nLimite de 100 destinos e 1000 sessões por destino. Não há escopo de conta ViperChat implícito.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"string\",\n  \"url\": \"https://example.com/resource\",\n  \"server\": \"server_1\",\n  \"enabled\": false,\n  \"session_ids\": [\n    \"string\"\n  ],\n  \"auto_include_new_sessions\": false,\n  \"events\": [\n    \"session.connected\"\n  ],\n  \"heartbeat_interval_seconds\": 300\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            }
          ]
        },
        {
          "name": "Substituir configuração do destino",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/admin/session-webhooks/{{id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "session-webhooks",
                "{{id}}"
              ],
              "query": []
            },
            "description": "Requer token global. Campos não secretos são substituídos. Segredos omitidos são\npreservados; bearer_token vazio remove o Bearer. signing_secret é opcional; vazio remove HMAC,\nnão vazio deve ter pelo menos 32 caracteres.\nA alteração invalida entregas pendentes da revisão anterior para não redirecionar eventos antigos.\nDesligar inclusão futura não remove membros atuais se session_ids for preservado.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"string\",\n  \"url\": \"https://example.com/resource\",\n  \"server\": \"server_1\",\n  \"enabled\": false,\n  \"session_ids\": [\n    \"string\"\n  ],\n  \"auto_include_new_sessions\": false,\n  \"events\": [\n    \"session.connected\"\n  ],\n  \"heartbeat_interval_seconds\": 300\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "Destino atualizado",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/session-webhooks/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "session-webhooks",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Requer token global. Campos não secretos são substituídos. Segredos omitidos são\npreservados; bearer_token vazio remove o Bearer. signing_secret é opcional; vazio remove HMAC,\nnão vazio deve ter pelo menos 32 caracteres.\nA alteração invalida entregas pendentes da revisão anterior para não redirecionar eventos antigos.\nDesligar inclusão futura não remove membros atuais se session_ids for preservado.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"string\",\n  \"url\": \"https://example.com/resource\",\n  \"server\": \"server_1\",\n  \"enabled\": false,\n  \"session_ids\": [\n    \"string\"\n  ],\n  \"auto_include_new_sessions\": false,\n  \"events\": [\n    \"session.connected\"\n  ],\n  \"heartbeat_interval_seconds\": 300\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Destino atualizado",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"id\": \"string\",\n  \"name\": \"string\",\n  \"url\": \"https://example.com/resource\",\n  \"server\": \"string\",\n  \"enabled\": false,\n  \"session_ids\": [\n    \"string\"\n  ],\n  \"auto_include_new_sessions\": false,\n  \"events\": [\n    \"session.connected\"\n  ],\n  \"heartbeat_interval_seconds\": 0,\n  \"revision\": \"string\",\n  \"has_bearer_token\": false,\n  \"has_signing_secret\": false\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/admin/session-webhooks/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "session-webhooks",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Requer token global. Campos não secretos são substituídos. Segredos omitidos são\npreservados; bearer_token vazio remove o Bearer. signing_secret é opcional; vazio remove HMAC,\nnão vazio deve ter pelo menos 32 caracteres.\nA alteração invalida entregas pendentes da revisão anterior para não redirecionar eventos antigos.\nDesligar inclusão futura não remove membros atuais se session_ids for preservado.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"name\": \"string\",\n  \"url\": \"https://example.com/resource\",\n  \"server\": \"server_1\",\n  \"enabled\": false,\n  \"session_ids\": [\n    \"string\"\n  ],\n  \"auto_include_new_sessions\": false,\n  \"events\": [\n    \"session.connected\"\n  ],\n  \"heartbeat_interval_seconds\": 300\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            }
          ]
        },
        {
          "name": "Excluir destino e cancelar suas entregas pendentes",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/session-webhooks/{{id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "session-webhooks",
                "{{id}}"
              ],
              "query": []
            },
            "description": "Requer token global. Não remove sessões nem altera seus webhooks de mensagens. Requisição HTTP já em andamento pode concluir.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/session-webhooks/{{id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "session-webhooks",
                    "{{id}}"
                  ],
                  "query": []
                },
                "description": "Requer token global. Não remove sessões nem altera seus webhooks de mensagens. Requisição HTTP já em andamento pode concluir.\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo. Atenção: executar altera o estado real. Revise IDs, corpo e impacto antes de enviar; não execute coleções inteiras automaticamente.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            }
          ]
        },
        {
          "name": "Consultar últimas observações de estado",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/admin/session-webhooks/states?destination_id={{destination_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "admin",
                "session-webhooks",
                "states"
              ],
              "query": [
                {
                  "key": "destination_id",
                  "value": "{{destination_id}}",
                  "description": "",
                  "disabled": true
                }
              ]
            },
            "description": "Requer token global. Retorna somente sessões já observadas pela versão com monitoramento,\nincluindo tombstones de remoção. Ausência não significa desconectada.\ndestination_id filtra pelos vínculos atuais; remoções já desvinculadas só aparecem na consulta sem filtro.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{admin_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Últimas observações; destination_id vazio nos snapshots, preenchido apenas nas entregas",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/session-webhooks/states?destination_id={{destination_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "session-webhooks",
                    "states"
                  ],
                  "query": [
                    {
                      "key": "destination_id",
                      "value": "{{destination_id}}",
                      "description": "",
                      "disabled": true
                    }
                  ]
                },
                "description": "Requer token global. Retorna somente sessões já observadas pela versão com monitoramento,\nincluindo tombstones de remoção. Ausência não significa desconectada.\ndestination_id filtra pelos vínculos atuais; remoções já desvinculadas só aparecem na consulta sem filtro.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Últimas observações; destination_id vazio nos snapshots, preenchido apenas nas entregas",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"states\": [\n    {\n      \"schema_version\": 1,\n      \"event_id\": \"string\",\n      \"event\": \"session.connected\",\n      \"occurred_at\": \"string\",\n      \"destination_id\": \"string\",\n      \"session\": {\n        \"id\": \"string\",\n        \"label\": \"string\",\n        \"provider\": \"string\",\n        \"server\": \"string\"\n      },\n      \"state\": {\n        \"previous\": \"connected\",\n        \"current\": \"connected\",\n        \"changed_at\": \"string\",\n        \"sequence\": 1\n      },\n      \"connection\": {\n        \"reason\": \"string\",\n        \"code\": 0,\n        \"is_logout\": false,\n        \"intentional\": false,\n        \"reconnect_expected\": false,\n        \"requires_pairing\": false\n      },\n      \"last_verified_at\": \"string\",\n      \"last_observed_at\": \"string\"\n    }\n  ]\n}"
            },
            {
              "name": "Erro da operação",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{base_url}}/admin/session-webhooks/states?destination_id={{destination_id}}",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "admin",
                    "session-webhooks",
                    "states"
                  ],
                  "query": [
                    {
                      "key": "destination_id",
                      "value": "{{destination_id}}",
                      "description": "",
                      "disabled": true
                    }
                  ]
                },
                "description": "Requer token global. Retorna somente sessões já observadas pela versão com monitoramento,\nincluindo tombstones de remoção. Ausência não significa desconectada.\ndestination_id filtra pelos vínculos atuais; remoções já desvinculadas só aparecem na consulta sem filtro.\n\n\nAcesso: administrador autenticado (token global da stack ou login Manager com papel admin). Usuários comuns não recebem acesso global. Fluxos legados OAuth/QR/socket permanecem inalterados; não é garantia de isolamento multitenant completo.",
                "auth": {
                  "type": "bearer",
                  "bearer": [
                    {
                      "key": "token",
                      "value": "{{admin_token}}",
                      "type": "string"
                    }
                  ]
                }
              },
              "status": "Erro da operação",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"error\": \"invalid_credentials\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Sistema",
      "item": [
        {
          "name": "Healthcheck",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/ping",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "ping"
              ],
              "query": []
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Consultar versão instalada e última tag publicada",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/version",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "version"
              ],
              "query": []
            },
            "description": "A consulta ao GitHub é feita no servidor e armazenada em cache por 15 minutos."
          },
          "response": []
        },
        {
          "name": "Status e configuração da sessão",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}"
              ],
              "query": []
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Listar conexões/telefones gerenciados",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/phone_numbers",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "phone_numbers"
              ],
              "query": []
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Listar templates",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/message_templates",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "message_templates"
              ],
              "query": []
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "(Compat) Listar templates",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/templates",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "templates"
              ],
              "query": []
            },
            "description": "Compatível com o Cloud API; neste projeto retorna a lista local/forward."
          },
          "response": []
        },
        {
          "name": "Enviar Marketing Messages (compatível)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/marketing_messages",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "marketing_messages"
              ],
              "query": []
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"{{to}}\",\n  \"type\": \"string\",\n  \"image\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Checagem pré-envio (Status/Broadcast)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/preflight/status",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "preflight",
                "status"
              ],
              "query": []
            },
            "description": "Verifica sessão online e se destinatários existem no WhatsApp.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"statusJidList\": [\n    \"5511999999999\",\n    \"5500000000002\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Encerrar sessão comum ou suspender integração mobile primary",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/deregister",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "deregister"
              ],
              "query": []
            },
            "description": "Sessões comuns mantêm logout e remoção. Em mobile primary aceita corpo vazio, remove todos os webhooks ativos, encaminha a configuração anterior ao histórico, desativa autoConnect e desconecta sem logout nem limpeza de credenciais ou filas. Falhas de arquivamento são registradas em log sem bloquear a operação. Reconectar não restaura destinos automaticamente. HTTP 204 confirma publicação, não conclusão da desconexão. Register ou Conectar no painel retoma a sessão. Mensagens durante o período offline dependem da recuperação disponibilizada pelo WhatsApp.",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Sessões",
      "item": [
        {
          "name": "Listar sessões/configurações visíveis",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/sessions",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "sessions"
              ],
              "query": []
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "UI de sessão (QR/Config)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/sessions/{{phone}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "sessions",
                "{{phone}}"
              ],
              "query": []
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Solicitar código de pareamento",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{base_url}}/{{phone}}/request_code",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "request_code"
              ],
              "query": []
            },
            "description": "Solicita um pairing code ao motor da sessão. No motor Zapo, a resposta HTTP contém o código puro e o Socket.IO também publica uma imagem com o código legível pelo contrato compatível `broadcast`, usando `type: qrcode`. A aplicação pode continuar exibindo `content` em uma tag `img`, sem criar um evento específico para pairing code."
          },
          "response": []
        },
        {
          "name": "Registrar/atualizar configuração da sessão",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/register",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "register"
              ],
              "query": []
            },
            "description": "Em mobile primary, preserva credenciais, ativa autoConnect e solicita reconexão sem QR/SMS enquanto o registro for válido. Webhooks recebidos são adicionados ou atualizados por ID antes da reconexão; destinos omitidos permanecem. Sem webhooks no corpo, preserva os existentes. HTTP 200 não confirma conexão online.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"provider\": \"zapo\",\n  \"zapoWebClientProfile\": \"default\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Grupos",
      "item": [
        {
          "name": "Listar grupos em cache da sessão",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/groups?cursor={{cursor}}&limit={{limit}}&search={{search}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "groups"
              ],
              "query": [
                {
                  "key": "cursor",
                  "value": "{{cursor}}",
                  "description": "Deslocamento devolvido em paging.cursors.after pela página anterior",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "{{limit}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "search",
                  "value": "{{search}}",
                  "description": "Pesquisa por nome ou JID do grupo",
                  "disabled": true
                }
              ]
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Consultar detalhes e configurações atuais do grupo",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/groups/{{groupId}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "groups",
                "{{groupId}}"
              ],
              "query": []
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Alterar configurações do grupo",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/groups/{{groupId}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "groups",
                "{{groupId}}"
              ],
              "query": []
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Sair do grupo",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/groups/{{groupId}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "groups",
                "{{groupId}}"
              ],
              "query": []
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Listar participantes de um grupo em cache",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/groups/{{groupId}}/participants",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "groups",
                "{{groupId}}",
                "participants"
              ],
              "query": []
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Promover ou rebaixar administradores do grupo",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/groups/{{groupId}}/participants",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "groups",
                "{{groupId}}",
                "participants"
              ],
              "query": []
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"action\": \"promote\",\n  \"participants\": [\n    \"string\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "Mídia",
      "item": [
        {
          "name": "Obter metadados e URL temporária de mídia",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{phone}}/{{media_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{phone}}",
                "{{media_id}}"
              ],
              "query": []
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Download do arquivo de mídia",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/{{version}}/download/{{phone}}/{{file}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "download",
                "{{phone}}",
                "{{file}}"
              ],
              "query": []
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Baixar foto de perfil pelo ID estável",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "If-None-Match",
                "value": "{{If-None-Match}}",
                "description": "",
                "disabled": true
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{version}}/{{session}}/profile-pictures/{{picture_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{version}}",
                "{{session}}",
                "profile-pictures",
                "{{picture_id}}"
              ],
              "query": []
            },
            "description": "Transmite a imagem armazenada internamente sem redirecionar para MinIO, S3 ou R2."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Contatos",
      "item": [
        {
          "name": "Listar contatos armazenados da sessão Zapo",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/{{phone}}/contacts?cursor={{cursor}}&limit={{limit}}&search={{search}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "contacts"
              ],
              "query": [
                {
                  "key": "cursor",
                  "value": "{{cursor}}",
                  "description": "Cursor Redis devolvido em next_cursor pela página anterior",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "{{limit}}",
                  "description": "",
                  "disabled": true
                },
                {
                  "key": "search",
                  "value": "{{search}}",
                  "description": "Pesquisa por nome, telefone, username ou LID",
                  "disabled": true
                }
              ]
            },
            "description": ""
          },
          "response": []
        },
        {
          "name": "Verificar contatos",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{phone}}/contacts",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "contacts"
              ],
              "query": []
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"blocking\": \"no_wait\",\n  \"force_check\": true,\n  \"contacts\": [\n    \"5500000000002\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Adicionar ou atualizar contato na agenda do WhatsApp — Resolver o LID e adicionar o contato",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{phone}}/contacts/import",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "contacts",
                "import"
              ],
              "query": []
            },
            "description": "Salva o contato na agenda sincronizada da sessão por meio da mutação\noficial de app-state `Contact` da Zapo. A operação é idempotente para\no mesmo número.\n\nQuando `user_id` é informado, ele deve ser um LID e tem prioridade para\nlocalizar no store da Zapo o PN exato usado no envelope do WhatsApp.\nSem `user_id`, a própria Zapo resolve o número para LID antes de salvar.\nA normalização brasileira de apresentação não é aplicada ao PN enviado\nao provider.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"phone_number\": \"5500000000002\",\n  \"full_name\": \"Contato Exemplo\",\n  \"first_name\": \"Contato\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "Adicionar ou atualizar contato na agenda do WhatsApp — Usar a identidade LID já conhecida pela aplicação",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/{{phone}}/contacts/import",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "{{phone}}",
                "contacts",
                "import"
              ],
              "query": []
            },
            "description": "Salva o contato na agenda sincronizada da sessão por meio da mutação\noficial de app-state `Contact` da Zapo. A operação é idempotente para\no mesmo número.\n\nQuando `user_id` é informado, ele deve ser um LID e tem prioridade para\nlocalizar no store da Zapo o PN exato usado no envelope do WhatsApp.\nSem `user_id`, a própria Zapo resolve o número para LID antes de salvar.\nA normalização brasileira de apresentação não é aplicada ao PN enviado\nao provider.\n",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"phone_number\": \"5500000000002\",\n  \"user_id\": \"000000000000002@lid\",\n  \"full_name\": \"Contato Exemplo\",\n  \"first_name\": \"Contato\",\n  \"username\": \"contato_exemplo\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    }
  ]
}
