{"info":{"name":"API do Rumo CRM","description":"Leia e grave contatos, negócios e conversas do Rumo CRM a partir do seu sistema.\n\nPreencha a variável `token` da coleção com o seu token pessoal (Configurações → API e integrações). Referência completa: https://rumocrm.com/developers/reference","version":"1.0.0","schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json"},"auth":{"type":"bearer","bearer":[{"key":"token","value":"{{token}}","type":"string"}]},"variable":[{"key":"baseUrl","value":"https://rumocrm.com/api/v1","type":"string"},{"key":"token","value":"","type":"string"}],"item":[{"name":"Contatos","description":"Pessoas com quem a sua empresa fala.","item":[{"name":"Listar contatos","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/contacts","host":["{{baseUrl}}"],"path":["contacts"],"query":[{"key":"limit","value":"50","description":"Quantos itens por página.","disabled":true},{"key":"cursor","value":"","description":"Valor de `nextCursor` da página anterior. Envie sem alterar.","disabled":true},{"key":"updatedSince","value":"","description":"Só registros com `updatedAt` igual ou posterior a esta data (ISO 8601).","disabled":true},{"key":"search","value":"","description":"Busca por parte do nome, do e-mail ou do telefone (com ou sem máscara).","disabled":true}]},"description":"Lista os contatos da empresa do token, do mais novo para o mais antigo.\n\nO gerente vê todos os contatos da empresa. O vendedor vê os contatos dos quais é o\ndono e os que são o contato principal de um negócio dele.\n\nEscopo do token: `crm:read`."},"response":[]},{"name":"Criar ou atualizar contato","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"{{$guid}}","description":"Valor único por operação (um UUID, por exemplo) para repetir o pedido com segurança.\nVálido por 24 horas e só para o token que o enviou. Veja \"Idempotência\".","disabled":true}],"url":{"raw":"{{baseUrl}}/contacts","host":["{{baseUrl}}"],"path":["contacts"]},"body":{"mode":"raw","raw":"{\n  \"name\": \"Maria Souza\",\n  \"phone\": \"(15) 99807-3400\",\n  \"email\": \"maria@empresa.com.br\",\n  \"tags\": [\n    \"VIP\",\n    \"Site\"\n  ],\n  \"customFields\": {\n    \"origem_lead\": \"indicacao\",\n    \"ticket_medio\": 150000\n  }\n}","options":{"raw":{"language":"json"}}},"description":"Cria o contato ou, se ele já existe na empresa, atualiza o existente e devolve o mesmo\n`id`. Use para registrar leads sem se preocupar com duplicidade.\n\nComo o contato existente é encontrado, nesta ordem:\n1. pelo `phone` (com ou sem máscara, com ou sem DDI);\n2. pelo `email` (sem diferenciar maiúsculas), quando não veio `phone` ou quando o\n   contato com esse e-mail ainda não tem telefone. Um contato com OUTRO telefone\n   nunca é sobrescrito: nesse caso nasce um contato novo.\n\nResponde `201` quando cria e `200` quando atualiza. Envie ao menos `name`, `phone`\nou `email`. Campo nulo ou vazio é ignorado (para apagar um valor, use o PATCH). Na\natualização, os campos enviados substituem os atuais, as `tags` enviadas são\nacrescentadas às que o contato já tem e os `customFields` enviados são gravados sem\nmexer nos demais.\n\nExige o papel de gerente (o vendedor recebe `403 permission_denied`).\n\nEscopo do token: `crm:write`."},"response":[]},{"name":"Ver contato","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/contacts/:id","host":["{{baseUrl}}"],"path":["contacts",":id"],"variable":[{"key":"id","value":"","description":"Id do contato."}]},"description":"Devolve um contato. Contato de outra empresa ou fora do seu papel (o vendedor só vê\nos contatos dos quais é o dono e os que são o contato principal de um negócio dele)\nresponde `404`.\n\nEscopo do token: `crm:read`."},"response":[]},{"name":"Editar contato","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"{{$guid}}","description":"Valor único por operação (um UUID, por exemplo) para repetir o pedido com segurança.\nVálido por 24 horas e só para o token que o enviou. Veja \"Idempotência\".","disabled":true}],"url":{"raw":"{{baseUrl}}/contacts/:id","host":["{{baseUrl}}"],"path":["contacts",":id"],"variable":[{"key":"id","value":"","description":"Id do contato."}]},"body":{"mode":"raw","raw":"{\n  \"phone\": \"(15) 99807-3400\",\n  \"email\": \"maria@empresa.com.br\",\n  \"tags\": [\n    \"VIP\",\n    \"Site\"\n  ],\n  \"customFields\": {\n    \"origem_lead\": \"indicacao\",\n    \"ticket_medio\": 150000\n  }\n}","options":{"raw":{"language":"json"}}},"description":"Altera só os campos enviados. `null` (ou texto vazio) apaga o valor: `phone: null`\ntira o telefone, `companyId: null` desvincula a empresa e `ownerId: null` deixa o\ncontato sem dono. `tags` substitui a lista inteira de tags do contato (`[]` tira\ntodas). Em `customFields`, cada campo enviado é gravado e `null` apaga aquele campo;\nos não enviados ficam como estão.\n\nTrocar o telefone para um que já pertence a outro contato da empresa responde\n`409 phone_already_in_use`. Exige o papel de gerente (o vendedor recebe\n`403 permission_denied`).\n\nEscopo do token: `crm:write`."},"response":[]}]},{"name":"Conversas","description":"Conversas do inbox (WhatsApp, Instagram, LinkedIn e e-mail), as mensagens e os canais conectados.","item":[{"name":"Listar canais","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/channels","host":["{{baseUrl}}"],"path":["channels"],"query":[{"key":"limit","value":"50","description":"Quantos itens por página.","disabled":true},{"key":"cursor","value":"","description":"Valor de `nextCursor` da página anterior. Envie sem alterar.","disabled":true},{"key":"updatedSince","value":"","description":"Só registros com `updatedAt` igual ou posterior a esta data (ISO 8601).","disabled":true}]},"description":"Lista os canais conectados à empresa (números de WhatsApp, contas de Instagram e\nLinkedIn, caixas de e-mail), do mais novo para o mais antigo.\n\nQuem tem acesso restrito a alguns canais (Configurações → Equipe) vê só esses.\n\nEscopo do token: `inbox:read`."},"response":[]},{"name":"Listar conversas","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/conversations","host":["{{baseUrl}}"],"path":["conversations"],"query":[{"key":"limit","value":"50","description":"Quantos itens por página.","disabled":true},{"key":"cursor","value":"","description":"Valor de `nextCursor` da página anterior. Envie sem alterar.","disabled":true},{"key":"updatedSince","value":"","description":"Só registros com `updatedAt` igual ou posterior a esta data (ISO 8601).","disabled":true},{"key":"channelId","value":"","description":"Só conversas deste canal.","disabled":true},{"key":"status","value":"","description":"Só conversas nesta situação.","disabled":true},{"key":"assignedToId","value":"","description":"Só conversas atribuídas a este usuário (o `ownerId` da conversa).","disabled":true},{"key":"contactId","value":"","description":"Só conversas deste contato.","disabled":true}]},"description":"Lista as conversas do inbox, da mais nova para a mais antiga (pela data de criação).\nPara acompanhar as que tiveram mensagem nova, use `updatedSince`: toda mensagem\nrecebida ou enviada atualiza o `updatedAt` da conversa.\n\nO token vê as mesmas conversas que o dono dele vê no inbox:\n- só dos canais liberados para ele (Configurações → Equipe);\n- o vendedor vê só as conversas atribuídas a ele, a menos que o gerente tenha\n  liberado \"ver todas as conversas\" para ele;\n- conversas excluídas não aparecem.\n\nFiltrar por um canal ou responsável que o token não pode ver devolve lista vazia.\n\nEscopo do token: `inbox:read`."},"response":[]},{"name":"Ver conversa","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/conversations/:id","host":["{{baseUrl}}"],"path":["conversations",":id"],"variable":[{"key":"id","value":"","description":"Id da conversa."}]},"description":"Devolve uma conversa. Conversa de outra empresa, de canal não liberado, fora do\npapel do vendedor ou excluída responde `404 resource_not_found`.\n\nEscopo do token: `inbox:read`."},"response":[]},{"name":"Listar mensagens da conversa","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/conversations/:id/messages","host":["{{baseUrl}}"],"path":["conversations",":id","messages"],"query":[{"key":"limit","value":"50","description":"Quantos itens por página.","disabled":true},{"key":"cursor","value":"","description":"Valor de `nextCursor` da página anterior. Envie sem alterar.","disabled":true},{"key":"updatedSince","value":"","description":"Só registros com `updatedAt` igual ou posterior a esta data (ISO 8601).","disabled":true},{"key":"order","value":"desc","description":"`desc` traz as mais novas primeiro; `asc`, as mais antigas.","disabled":true}],"variable":[{"key":"id","value":"","description":"Id da conversa."}]},"description":"Lista as mensagens da conversa, das mais novas para as mais antigas (`order=desc`,\npadrão) ou o contrário (`order=asc`). A ordem segue `createdAt`, o momento em que a\nmensagem entrou no Rumo CRM, que é estável para paginar. Histórico importado depois\nentra com `createdAt` recente e `sentAt` antigo: para mostrar como no chat, ordene\npor `sentAt`.\n\nAparecem as mesmas mensagens que o dono do token vê na conversa:\n- mensagens apagadas não aparecem;\n- notas internas do time aparecem com `internal: true` (nunca foram enviadas ao\n  contato);\n- para o vendedor, a conversa começa no momento em que foi atribuída a ele (a\n  triagem anterior fica oculta, como na tela).\n\nConversa sem acesso ou excluída responde `404 resource_not_found`.\n\nEscopo do token: `inbox:read`."},"response":[]},{"name":"Enviar mensagem na conversa","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"{{$guid}}","description":"Valor único por operação (um UUID, por exemplo) para repetir o pedido com segurança.\nVálido por 24 horas e só para o token que o enviou. Veja \"Idempotência\".","disabled":true}],"url":{"raw":"{{baseUrl}}/conversations/:id/messages","host":["{{baseUrl}}"],"path":["conversations",":id","messages"],"variable":[{"key":"id","value":"","description":"Id da conversa."}]},"body":{"mode":"raw","raw":"{\n  \"type\": \"text\",\n  \"text\": \"Oi, Ana! Segue a proposta que combinamos.\"\n}","options":{"raw":{"language":"json"}}},"description":"Envia texto, arquivo ou template numa conversa que já existe no inbox, de WhatsApp ou\nde Instagram. A resposta `202` quer dizer que a mensagem foi aceita e entrou na fila,\ncom `status: pending` (ou `scheduled`, quando veio `scheduledFor`). Ela ainda não\nchegou ao contato. Para saber o resultado, consulte\n`GET /conversations/{id}/messages/{messageId}` até o `status` virar `sent`,\n`delivered`, `read` ou `failed`. No `failed`, `error.code` diz o motivo.\n\n**Antes de integrar, leia:**\n- **Número não oficial pode ser bloqueado.** Num canal `unofficial` (conectado por QR\n  code), o WhatsApp e o Instagram bloqueiam o número ou a conta quando percebem envio\n  automático em volume, mensagem para quem não conhece a empresa ou texto repetido.\n  Use a API para responder e acompanhar quem já conversa com você, não para\n  prospecção fria. Quem bloqueia é a rede, e o Rumo CRM não consegue desfazer.\n- **Janela de 24 horas.** No canal `official`, passadas 24 horas da última mensagem\n  do contato (veja `windowExpiresAt` na conversa), o WhatsApp só aceita template\n  aprovado (`template_required`). O Instagram não tem template: só volta a aceitar\n  quando o contato escrever de novo (`window_expired`).\n- **Limite por número.** Além do limite do token e da empresa, cada canal aceita até\n  **30 envios por minuto** pela API. Passou disso, a resposta é `429 rate_limited`\n  com `Retry-After`.\n- **Idempotência.** Mande sempre `Idempotency-Key`. Se a conexão cair, repita com a\n  mesma chave e a mensagem não sai duas vezes. Sem a chave, repetir o pedido envia de\n  novo. Se o controle de idempotência estiver fora do ar, a resposta é\n  `503 idempotency_unavailable` e nada é enviado. Uma recusa `4xx` fica guardada com\n  a chave: depois de corrigir a causa, use uma chave nova.\n- **Descadastro.** Contato que pediu para não receber mensagens (LGPD) é recusado com\n  `recipient_opted_out`.\n\nA mensagem sai em nome do dono do token. Ela aparece com ele como autor no inbox,\nconta como resposta do time no SLA e, se a empresa ativou a assinatura do atendente,\nleva o nome dele no início do texto.\n\nO acesso segue as regras do `GET` da conversa: canal liberado para o dono do token e,\npara o vendedor, só conversas atribuídas a ele, a menos que tenha \"ver todas as\nconversas\". Fora disso, a resposta é `404 resource_not_found`. Grupos, e-mail e\nLinkedIn ainda não são suportados.\n\n| Status | `code` | Quando |\n| --- | --- | --- |\n| 409 | `channel_disconnected` | O canal está desligado ou precisa ser reconectado em Configurações. |\n| 422 | `template_required` | WhatsApp oficial com a janela de 24 horas fechada (ou agendamento para depois dela) e o pedido não é template. |\n| 422 | `window_expired` | Instagram oficial com a janela de 24 horas fechada: espere o contato escrever. |\n| 422 | `template_not_supported` | Template num canal que não é o WhatsApp oficial, ou template com mídia ou variável no cabeçalho, ou botão de link com variável. |\n| 422 | `template_not_found` | Não existe template aprovado com esse `name` e `language` na conta do WhatsApp do canal. |\n| 422 | `template_params_mismatch` | A quantidade de `params` é diferente da quantidade de variáveis do corpo do template. |\n| 422 | `recipient_opted_out` | O contato pediu para não receber mensagens (LGPD). |\n| 422 | `contact_without_phone` | A conversa não tem um número ou perfil de destino. |\n| 422 | `group_not_supported` | A conversa é de um grupo. |\n| 422 | `channel_not_supported` | O canal não é de WhatsApp nem de Instagram. |\n| 422 | `scheduling_not_supported` | `scheduledFor` num canal `unofficial`. |\n| 422 | `invalid_media_url` | `mediaUrl` que não é `https`, aponta para endereço interno ou para arquivo de outra empresa. |\n| 429 | `rate_limited` | Limite do token, da empresa ou de 30 envios por minuto do número. |\n| 503 | `queue_unavailable` | A fila de envio está fora do ar. Nada foi enviado. |\n| 503 | `template_check_unavailable` | Não deu para consultar os templates da conta agora. Nada foi enviado. |\n| 503 | `idempotency_unavailable` | Pedido com `Idempotency-Key` e o controle de idempotência fora do ar. Nada foi enviado. |\n\nEscopo do token: `inbox:send`."},"response":[]},{"name":"Ver mensagem","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/conversations/:id/messages/:messageId","host":["{{baseUrl}}"],"path":["conversations",":id","messages",":messageId"],"variable":[{"key":"id","value":"","description":"Id da conversa."},{"key":"messageId","value":"","description":"Id da mensagem."}]},"description":"Devolve uma mensagem da conversa, com o `status` atual. Serve para acompanhar o\nenvio até `delivered`, `read` ou `failed`. As regras de acesso são as da lista de\nmensagens: mensagem apagada, de outra conversa ou oculta para o vendedor responde\n`404 resource_not_found`.\n\nEscopo do token: `inbox:read`."},"response":[]}]},{"name":"Empresas","description":"Clientes pessoa jurídica, com CNPJ, ligados a contatos e negócios.","item":[{"name":"Listar empresas","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/companies","host":["{{baseUrl}}"],"path":["companies"],"query":[{"key":"limit","value":"50","description":"Quantos itens por página.","disabled":true},{"key":"cursor","value":"","description":"Valor de `nextCursor` da página anterior. Envie sem alterar.","disabled":true},{"key":"updatedSince","value":"","description":"Só registros com `updatedAt` igual ou posterior a esta data (ISO 8601).","disabled":true},{"key":"search","value":"","description":"Busca por parte da razão social, do nome fantasia ou do CNPJ (com ou sem\nmáscara).","disabled":true},{"key":"includeInactive","value":"false","description":"Inclui as empresas desativadas (`isActive` igual a `false`).","disabled":true}]},"description":"Lista as empresas (clientes pessoa jurídica) da conta do token, da mais nova para a\nmais antiga. Empresas desativadas ficam de fora, a menos que você envie\n`includeInactive=true`.\n\nO gerente vê todas as empresas da conta. O vendedor vê as empresas das quais é o\ndono, as ligadas a um negócio dele (como empresa principal ou participante) e as\nempresas dos contatos que ele vê.\n\nEscopo do token: `crm:read`."},"response":[]},{"name":"Criar empresa","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"{{$guid}}","description":"Valor único por operação (um UUID, por exemplo) para repetir o pedido com segurança.\nVálido por 24 horas e só para o token que o enviou. Veja \"Idempotência\".","disabled":true}],"url":{"raw":"{{baseUrl}}/companies","host":["{{baseUrl}}"],"path":["companies"]},"body":{"mode":"raw","raw":"{\n  \"cnpj\": \"11.222.333/0001-81\",\n  \"address\": {\n    \"postalCode\": \"18087-000\"\n  },\n  \"customFields\": {\n    \"origem_lead\": \"indicacao\",\n    \"ticket_medio\": 150000\n  }\n}","options":{"raw":{"language":"json"}}},"description":"Cria uma empresa na conta do token.\n\nO CNPJ é opcional, mas único na conta: se outra empresa (ativa ou desativada) já\nusa o mesmo CNPJ, a resposta é `409` com `code` igual a `cnpj_already_in_use`.\nEnvie com ou sem máscara; ele é gravado só com os dígitos e precisa ter dígitos\nverificadores válidos.\n\nSem `ownerId`, o vendedor vira o dono da empresa e, para o gerente, ela fica sem\ndono. O vendedor só pode criar empresas das quais ele mesmo é o dono.\n\nEscopo do token: `crm:write`."},"response":[]},{"name":"Ver empresa","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/companies/:id","host":["{{baseUrl}}"],"path":["companies",":id"],"variable":[{"key":"id","value":"","description":"Id da empresa."}]},"description":"Devolve uma empresa, inclusive desativada. Empresa de outra conta ou fora do papel\ndo vendedor responde `404`.\n\nEscopo do token: `crm:read`."},"response":[]},{"name":"Editar empresa","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"{{$guid}}","description":"Valor único por operação (um UUID, por exemplo) para repetir o pedido com segurança.\nVálido por 24 horas e só para o token que o enviou. Veja \"Idempotência\".","disabled":true}],"url":{"raw":"{{baseUrl}}/companies/:id","host":["{{baseUrl}}"],"path":["companies",":id"],"variable":[{"key":"id","value":"","description":"Id da empresa."}]},"body":{"mode":"raw","raw":"{\n  \"address\": {\n    \"postalCode\": \"18087-000\"\n  },\n  \"customFields\": {\n    \"origem_lead\": \"indicacao\",\n    \"ticket_medio\": 150000\n  }\n}","options":{"raw":{"language":"json"}}},"description":"Altera só os campos enviados. Em `address`, cada parte enviada substitui a atual e\nas demais ficam como estão; `emails` e `phones` substituem a lista inteira. Em\n`customFields`, envie `null` para apagar o valor de um campo.\n\nO CNPJ segue as regras da criação (`409` com `cnpj_already_in_use` se outra\nempresa da conta já usa o mesmo). Só o gerente troca o dono (`ownerId`).\n\nEscopo do token: `crm:write`."},"response":[]},{"name":"Desativar empresa","request":{"method":"DELETE","header":[{"key":"Idempotency-Key","value":"{{$guid}}","description":"Valor único por operação (um UUID, por exemplo) para repetir o pedido com segurança.\nVálido por 24 horas e só para o token que o enviou. Veja \"Idempotência\".","disabled":true}],"url":{"raw":"{{baseUrl}}/companies/:id","host":["{{baseUrl}}"],"path":["companies",":id"],"variable":[{"key":"id","value":"","description":"Id da empresa."}]},"description":"Desativa a empresa (`isActive` passa a `false`): ela some das listas, mas\ncontinua ligada aos contatos e negócios e pode ser vista pelo id. Repetir o pedido\ndevolve a mesma empresa, sem erro. Só o gerente desativa empresas.\n\nEscopo do token: `crm:write`."},"response":[]}]},{"name":"Funis","description":"Funis de vendas e as etapas (colunas do quadro) de cada um.","item":[{"name":"Listar funis","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pipelines","host":["{{baseUrl}}"],"path":["pipelines"],"query":[{"key":"includeInactive","value":"false","description":"Inclui os funis desativados.","disabled":true}]},"description":"Lista os funis de vendas da empresa do token, na mesma ordem do seletor de funis do\nRumo CRM: o funil padrão primeiro, depois por `order` e por nome.\n\nO gerente e o vendedor veem os mesmos funis, como no quadro de negócios. Funis\ndesativados ficam de fora, a menos que você envie `includeInactive=true`.\n\nA lista vem inteira numa página só: `nextCursor` é sempre `null` e `hasMore` é\nsempre `false`.\n\nEscopo do token: `crm:read`."},"response":[]},{"name":"Ver um funil","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pipelines/:id","host":["{{baseUrl}}"],"path":["pipelines",":id"],"variable":[{"key":"id","value":"","description":"Id do funil."}]},"description":"Devolve um funil da empresa do token, inclusive um funil desativado (`isActive: false`),\npara você conseguir ler o funil de um negócio antigo.\n\nEscopo do token: `crm:read`."},"response":[]},{"name":"Listar as etapas de um funil","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pipelines/:id/stages","host":["{{baseUrl}}"],"path":["pipelines",":id","stages"],"variable":[{"key":"id","value":"","description":"Id do funil."}]},"description":"Lista as etapas (colunas do quadro) de um funil, na ordem do quadro: primeiro as\netapas abertas, por `order`; depois a de ganho e por último a de perdido.\n\nFunciona também para um funil desativado. A lista vem inteira numa página só:\n`nextCursor` é sempre `null` e `hasMore` é sempre `false`.\n\nEscopo do token: `crm:read`."},"response":[]}]},{"name":"Negócios","description":"Oportunidades de venda, cada uma numa etapa de um funil.","item":[{"name":"Listar negócios","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/deals","host":["{{baseUrl}}"],"path":["deals"],"query":[{"key":"limit","value":"50","description":"Quantos itens por página.","disabled":true},{"key":"cursor","value":"","description":"Valor de `nextCursor` da página anterior. Envie sem alterar.","disabled":true},{"key":"updatedSince","value":"","description":"Só registros com `updatedAt` igual ou posterior a esta data (ISO 8601).","disabled":true},{"key":"pipelineId","value":"","description":"Só os negócios deste funil.","disabled":true},{"key":"stageId","value":"","description":"Só os negócios nesta etapa.","disabled":true},{"key":"ownerId","value":"","description":"Só os negócios deste responsável.","disabled":true},{"key":"contactId","value":"","description":"Só os negócios cujo contato principal é este.","disabled":true},{"key":"companyId","value":"","description":"Só os negócios cuja empresa principal é esta.","disabled":true},{"key":"status","value":"","description":"Só os negócios em andamento (`open`), ganhos (`won`) ou perdidos (`lost`).","disabled":true}]},"description":"Lista os negócios da conta do token, do mais novo para o mais antigo. Os filtros se\nsomam (todos precisam valer).\n\nO gerente vê todos os negócios da conta. O vendedor vê só os negócios dos quais é o\nresponsável (`ownerId`), como no quadro de negócios.\n\nEscopo do token: `crm:read`."},"response":[]},{"name":"Criar negócio","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"{{$guid}}","description":"Valor único por operação (um UUID, por exemplo) para repetir o pedido com segurança.\nVálido por 24 horas e só para o token que o enviou. Veja \"Idempotência\".","disabled":true}],"url":{"raw":"{{baseUrl}}/deals","host":["{{baseUrl}}"],"path":["deals"]},"body":{"mode":"raw","raw":"{\n  \"expectedCloseDate\": \"2026-11-30\",\n  \"tags\": [\n    \"VIP\",\n    \"Site\"\n  ],\n  \"customFields\": {\n    \"origem_lead\": \"indicacao\",\n    \"ticket_medio\": 150000\n  }\n}","options":{"raw":{"language":"json"}}},"description":"Cria um negócio em andamento. Envie `stageId` (a etapa onde ele nasce) ou\n`pipelineId` (ele nasce na primeira etapa em andamento desse funil). Com os dois, a\netapa precisa ser desse funil. O negócio nunca nasce numa etapa de ganho ou de perda\nnem num funil desativado.\n\nSem `ownerId`, o vendedor vira o responsável. Para o gerente, o negócio segue a\nroleta de leads da conta, quando ela está ligada; senão, o gerente vira o\nresponsável. O vendedor só cria negócios dos quais ele mesmo é o responsável.\n\nCampo personalizado de negócio marcado como obrigatório que ficar sem valor responde\n`422 missing_required_custom_fields`, sem criar nada.\n\nCriar um negócio tem o mesmo efeito de criar pela tela: dispara o webhook\n`deal.created` e as automações de \"negócio criado\".\n\nEscopo do token: `crm:write`."},"response":[]},{"name":"Ver negócio","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/deals/:id","host":["{{baseUrl}}"],"path":["deals",":id"],"variable":[{"key":"id","value":"","description":"Id do negócio."}]},"description":"Devolve um negócio. Negócio de outra conta ou, para o vendedor, de outro responsável\nresponde `404`.\n\nEscopo do token: `crm:read`."},"response":[]},{"name":"Editar negócio","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"{{$guid}}","description":"Valor único por operação (um UUID, por exemplo) para repetir o pedido com segurança.\nVálido por 24 horas e só para o token que o enviou. Veja \"Idempotência\".","disabled":true}],"url":{"raw":"{{baseUrl}}/deals/:id","host":["{{baseUrl}}"],"path":["deals",":id"],"variable":[{"key":"id","value":"","description":"Id do negócio."}]},"body":{"mode":"raw","raw":"{\n  \"tags\": [\n    \"VIP\",\n    \"Site\"\n  ],\n  \"customFields\": {\n    \"origem_lead\": \"indicacao\",\n    \"ticket_medio\": 150000\n  }\n}","options":{"raw":{"language":"json"}}},"description":"Altera só os campos enviados. `tags` substitui a lista inteira de tags do negócio\n(`[]` tira todas). Em `customFields`, cada campo enviado é gravado e `null` apaga\naquele campo; os não enviados ficam como estão.\n\nA etapa e o resultado (ganho ou perdido) não mudam por esta operação: enviar\n`stageId`, `pipelineId`, `status` ou os campos de fechamento responde\n`400 stage_change_not_allowed`. Use `POST /deals/{id}/move`, `/win` ou `/lose`.\n\nSó o gerente troca o responsável (`ownerId`); o novo responsável é avisado, como na\ntela.\n\nEscopo do token: `crm:write`."},"response":[]},{"name":"Apagar negócio","request":{"method":"DELETE","header":[{"key":"Idempotency-Key","value":"{{$guid}}","description":"Valor único por operação (um UUID, por exemplo) para repetir o pedido com segurança.\nVálido por 24 horas e só para o token que o enviou. Veja \"Idempotência\".","disabled":true}],"url":{"raw":"{{baseUrl}}/deals/:id","host":["{{baseUrl}}"],"path":["deals",":id"],"variable":[{"key":"id","value":"","description":"Id do negócio."}]},"description":"Apaga o negócio de vez, com o histórico, as tarefas, os produtos e as tags dele. O\ncontato e a empresa continuam; as conversas ligadas a ele ficam sem negócio. Não dá\npara desfazer. Só o gerente apaga negócios.\n\nRepetir o pedido depois de apagado responde `404` (ou a mesma resposta, se você\nenviar a mesma `Idempotency-Key`).\n\nEscopo do token: `crm:write`."},"response":[]},{"name":"Mover negócio de etapa","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"{{$guid}}","description":"Valor único por operação (um UUID, por exemplo) para repetir o pedido com segurança.\nVálido por 24 horas e só para o token que o enviou. Veja \"Idempotência\".","disabled":true}],"url":{"raw":"{{baseUrl}}/deals/:id/move","host":["{{baseUrl}}"],"path":["deals",":id","move"],"variable":[{"key":"id","value":"","description":"Id do negócio."}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Leva o negócio para uma etapa em andamento, do mesmo funil ou de outro (o negócio muda\nde funil junto, como no quadro). O funil de destino precisa estar ativo. Negócio ganho ou\nperdido levado para uma etapa em andamento é reaberto: datas e motivos de fechamento são\napagados.\n\nPara ganhar ou perder use `/win` e `/lose`: etapa de ganho ou perda aqui responde\n`400 stage_is_final`. Assim todo fechamento passa pelas mesmas informações que a tela pede.\n\nCampo personalizado obrigatório na etapa de destino sem valor responde\n`422 missing_required_custom_fields`. Mover para a etapa em que o negócio já está devolve o\nnegócio sem mudar nada.\n\nTem o mesmo efeito de mover na tela: grava no histórico, reinicia o tempo na etapa,\ndispara o webhook `deal.stage_changed`, as automações de mudança de fase e as cadências\nda etapa de destino.\n\nEscopo do token: `crm:write`."},"response":[]},{"name":"Ganhar negócio","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"{{$guid}}","description":"Valor único por operação (um UUID, por exemplo) para repetir o pedido com segurança.\nVálido por 24 horas e só para o token que o enviou. Veja \"Idempotência\".","disabled":true}],"url":{"raw":"{{baseUrl}}/deals/:id/win","host":["{{baseUrl}}"],"path":["deals",":id","win"],"variable":[{"key":"id","value":"","description":"Id do negócio."}]},"body":{"mode":"raw","raw":"{\n  \"wonAt\": \"2026-10-08T15:00:00Z\"\n}","options":{"raw":{"language":"json"}}},"description":"Marca o negócio como ganho: ele vai para a etapa de ganho do funil em que está (a\nprimeira, na ordem do quadro) ou para a etapa de ganho enviada em `stageId`, que precisa\nser desse funil. Funil sem etapa de ganho responde `422 pipeline_without_won_stage`.\n\n`wonAt` registra a data real do fechamento (padrão: agora; data futura responde `400`).\n`valueCents` grava o valor final fechado, como o campo de valor do modal de ganho.\n\nTem o mesmo efeito de ganhar na tela: dispara os webhooks `deal.stage_changed` e\n`deal.won` e as automações de mudança de fase e de fechamento. Repetir com o negócio já\nnessa etapa devolve o negócio sem mudar nada.\n\nEscopo do token: `crm:write`."},"response":[]},{"name":"Perder negócio","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"{{$guid}}","description":"Valor único por operação (um UUID, por exemplo) para repetir o pedido com segurança.\nVálido por 24 horas e só para o token que o enviou. Veja \"Idempotência\".","disabled":true}],"url":{"raw":"{{baseUrl}}/deals/:id/lose","host":["{{baseUrl}}"],"path":["deals",":id","lose"],"variable":[{"key":"id","value":"","description":"Id do negócio."}]},"body":{"mode":"raw","raw":"{\n  \"lostReason\": \"Escolheu um concorrente mais barato\"\n}","options":{"raw":{"language":"json"}}},"description":"Marca o negócio como perdido, com o motivo: envie `lostReasonId` (um motivo cadastrado\nem Configurações, que valha para o funil do negócio), `lostReason` (texto livre) ou os\ndois. Como na tela, perder sem motivo não é aceito.\n\nO negócio vai para a etapa de perda do funil em que está (a primeira, na ordem do quadro)\nou para a etapa de perda enviada em `stageId`, que precisa ser desse funil. Funil sem\netapa de perda responde `422 pipeline_without_lost_stage`.\n\nTem o mesmo efeito de perder na tela: dispara os webhooks `deal.stage_changed` e\n`deal.lost` e as automações de mudança de fase e de fechamento. Repetir com o negócio já\nnessa etapa devolve o negócio sem mudar nada.\n\nEscopo do token: `crm:write`."},"response":[]},{"name":"Listar produtos do negócio","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/deals/:id/products","host":["{{baseUrl}}"],"path":["deals",":id","products"],"variable":[{"key":"id","value":"","description":"Id do negócio."}]},"description":"Lista os produtos do negócio, na ordem em que foram adicionados. A lista vem inteira\nnuma página só. Os produtos são informativos: não mudam o valor do negócio.\n\nEscopo do token: `crm:read`."},"response":[]},{"name":"Trocar os produtos do negócio","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/deals/:id/products","host":["{{baseUrl}}"],"path":["deals",":id","products"],"variable":[{"key":"id","value":"","description":"Id do negócio."}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Substitui a lista inteira de produtos do negócio pela enviada (`items: []` tira todos).\nCada produto aparece uma vez. Sem `unitPriceCents`, vale o preço do catálogo no momento\n(como ao adicionar pela tela); `null` deixa sem preço. Os produtos não mudam o valor do\nnegócio (`valueCents`). Repetir o mesmo pedido dá o mesmo resultado.\n\nEscopo do token: `crm:write`."},"response":[]}]}]}