{"info":{"name":"Prosalab API v1","description":"Coleção da API pública v1 do Prosalab — contatos, mensagens, campanhas, listas, campos personalizados, importação em massa, conexões e etapas de pipeline. Configure as variáveis \"base_url\" e \"api_key\" da coleção antes de usar.","schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json"},"variable":[{"key":"base_url","value":"https://www.prosalab.com","description":"URL base da API."},{"key":"api_key","value":"","description":"Sua chave de API — crie uma em Configurações > API no painel do Prosalab."}],"item":[{"name":"Contatos","item":[{"name":"GET /api/v1/contacts","request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer {{api_key}}"}],"url":{"raw":"{{base_url}}/api/v1/contacts","host":["{{base_url}}"],"path":["api","v1","contacts"]},"description":"Lista contatos com dados de CRM. Filtros: ?search=&source_platform=&inbox_status=open&pipeline_stage_id=&crm_status=&is_ai_enabled=true&page=1&limit=50"}},{"name":"GET /api/v1/contacts/{id}","request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer {{api_key}}"}],"url":{"raw":"{{base_url}}/api/v1/contacts/:id","host":["{{base_url}}"],"path":["api","v1","contacts",":id"],"variable":[{"key":"id","value":""}]},"description":"Detalhe do contato com etiquetas, etapa de pipeline, responsável, campos personalizados, conexões e — para chaves com o escopo lead_memory:read — a memória do lead inferida pela IA.\n\ncustom_fields tem a MESMA forma na leitura e na escrita: chave = ID do campo (UUID), valor = STRING. O bloco desta resposta pode ser reenviado como está em POST e PATCH. Só aparecem campos com definição ATIVA e valor preenchido; contato sem nenhum devolve {} (nunca null).\n\nO rótulo e o tipo de cada campo NÃO viajam aqui — eles pertencem à definição e vivem em GET /api/v1/custom-fields, que é a fonte única. Para montar uma tela, cruze pelo id.\n\nlead_memory é INFERIDO pela IA a partir da conversa, não declarado pelo contato. Trate como hipótese de trabalho: summary, sentiment, intent, consciousness_level e bant são julgamento do modelo e podem estar errados. key_facts, products_interested e objections são listas cumulativas, com teto de 20, 10 e 10 itens.\n\nO campo só aparece quando a chave tem o escopo lead_memory:read. Sem o escopo a resposta é idêntica à anterior e a chave lead_memory NÃO vem no JSON — não é 403. Contato que ainda não tem memória devolve lead_memory: null. Ausência da chave significa \"falta escopo\"; null significa \"sem memória\".\n\nbant.authority tem DOIS formatos por herança: em registros novos é um código estável (ex.: decisor-com-consulta) e o texto original vem em bant.authority_raw; em registros antigos authority é o próprio texto livre e authority_raw não existe. Para exibir ao usuário leia authority_raw ?? authority; para agrupar/contar use authority apenas quando authority_raw estiver presente."}},{"name":"POST /api/v1/contacts","request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api_key}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/contacts","host":["{{base_url}}"],"path":["api","v1","contacts"]},"description":"Cria um contato. Telefone duplicado retorna 409 com o contact_id do existente.\n\ncustom_fields é keyed pelo ID do campo (UUID retornado por GET /api/v1/custom-fields), com valores sempre STRING (máx. 500 caracteres) e sem limite de quantidade de chaves. ID inexistente/inativo/de outra empresa é rejeitado com 422, com a lista dos inválidos em details.custom_fields e o caminho de conserto em details.hint.\n\nRound-trip suportado: o custom_fields devolvido por GET /api/v1/contacts/{id} tem exatamente esta forma e pode ser reenviado aqui sem conversão.\n\nCampos nativos de identidade e endereço vão no top-level (cpf, rg, genero, estado_civil, profissao, city, state, postal_code) — não em custom_fields. cpf e postal_code são normalizados para dígitos pelo servidor.\n\ncnpj (opcional, normalizado para dígitos) cria ou associa uma empresa-cliente (organization) e busca a razão social automaticamente em segundo plano.\n\nlist_ids é validado ANTES da criação: uma list_id de outra empresa ou inativa retorna 404 e o contato NÃO é criado. Só a falha de infraestrutura na associação PÓS-criação vira o campo warnings na resposta (o contato existe).","body":{"mode":"raw","raw":"{\n  \"phone\": \"5548999990000\",\n  \"name\": \"João Silva\",\n  \"email\": \"joao@exemplo.com.br\",\n  \"birthday\": \"1990-05-12\",\n  \"observation\": \"Veio da feira de negócios\",\n  \"cpf\": \"99001122334\",\n  \"rg\": \"1234567\",\n  \"genero\": \"Masculino\",\n  \"estado_civil\": \"Casado\",\n  \"profissao\": \"Engenheiro\",\n  \"city\": \"Florianópolis\",\n  \"state\": \"SC\",\n  \"postal_code\": \"88010000\",\n  \"cnpj\": \"12345678000190\",\n  \"custom_fields\": {\n    \"<id-do-campo-uuid>\": \"campanha\"\n  },\n  \"list_ids\": [\n    \"<uuid>\"\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"PATCH /api/v1/contacts/{id}","request":{"method":"PATCH","header":[{"key":"Authorization","value":"Bearer {{api_key}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/contacts/:id","host":["{{base_url}}"],"path":["api","v1","contacts",":id"],"variable":[{"key":"id","value":""}]},"description":"Atualiza um contato (merge parcial — só os campos enviados; telefone é imutável).\n\ncustom_fields (keyed pelo ID do campo, valores string) faz merge campo a campo sobre o valor atual — não substitui o objeto inteiro.\n\nCampos nativos (cpf, rg, genero, estado_civil, profissao, city, state, postal_code) são atualizados individualmente; enviar \"\" limpa o campo.\n\ncnpj só associa uma organization se o contato ainda NÃO tiver uma — não sobrescreve o vínculo existente.\n\nO corpo GRAVÁVEL é: name, email, birthday, observation, city, state, postal_code, cpf, rg, genero, estado_civil, profissao, cnpj, custom_fields, list_ids.\n\nRound-trip suportado: pegue o corpo de GET /api/v1/contacts/{id}, altere o que quiser e reenvie inteiro. Os campos só-leitura da resposta (id, display_name, crm_status, inbox_status, tags, connections, assigned_to, lead_memory, created_at, updated_at) são IGNORADOS em silêncio — são eco da leitura, não intenção de escrita.\n\nphone e identifier continuam imutáveis, mas com a comparação certa: reenviar o valor atual (inclusive reformatado, como \"+55 (11) 99999-9999\") é aceito; enviar um número DIFERENTE retorna 422 com details.fields. Para trocar o número, crie um novo contato.\n\nChave desconhecida (um \"nome\" no lugar de \"name\") continua retornando 422 — o descarte vale só para a lista de só-leitura acima, para que erro de digitação não passe despercebido.","body":{"mode":"raw","raw":"{\n  \"name\": \"João da Silva\",\n  \"email\": \"joao.silva@exemplo.com.br\",\n  \"profissao\": \"Arquiteto\",\n  \"custom_fields\": {\n    \"<id-do-campo-uuid>\": \"indicação\"\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"DELETE /api/v1/contacts/{id}","request":{"method":"DELETE","header":[{"key":"Authorization","value":"Bearer {{api_key}}"}],"url":{"raw":"{{base_url}}/api/v1/contacts/:id","host":["{{base_url}}"],"path":["api","v1","contacts",":id"],"variable":[{"key":"id","value":""}]},"description":"Remove o contato e purga seus documentos anexados (LGPD)."}}]},{"name":"Envio de mensagens","item":[{"name":"POST /api/v1/send/message","request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api_key}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/send/message","host":["{{base_url}}"],"path":["api","v1","send","message"]},"description":"Envia uma mensagem de texto via WhatsApp (UAZAPI ou Meta Cloud).","body":{"mode":"raw","raw":"{\n  \"to\": \"5548999990000\",\n  \"message\": \"Olá! Seu pedido foi confirmado.\",\n  \"connection_id\": \"<opcional — UUID da conexão>\"\n}","options":{"raw":{"language":"json"}}}}},{"name":"POST /api/v1/send/template","request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api_key}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/send/template","host":["{{base_url}}"],"path":["api","v1","send","template"]},"description":"Envia uma mensagem de template/HSM aprovado na Meta Cloud. Template com variável (corpo, cabeçalho ou botão de URL) exige o array components — sem ele a Meta recebe o template sem preenchimento.\n\ncomponents é repassado à Meta EXATAMENTE como enviado — esta rota não monta, valida nem completa nenhum componente. Template com variável enviado sem components chega à Meta sem preenchimento; a falha é da Meta, não desta rota.\n\nBotão de URL dinâmica: a Meta aceita UMA variável por botão, e apenas no FIM de uma URL já aprovada — o valor enviado em parameters[0].text é concatenado à base aprovada. index é a posição do botão no template (\"0\" para o primeiro), enviado como STRING. URL fora da base aprovada faz a Meta rejeitar o envio inteiro.\n\nNão há endpoint para listar templates aprovados, e template_name/language_code NÃO são validados contra o catálogo antes do envio. Nome inexistente, idioma errado ou template não aprovado só falham na Meta e voltam como 502 PROVIDER_ERROR genérico — confira o nome e o idioma no Gerenciador da Meta antes de disparar.\n\nExige conexão WhatsApp Meta Cloud. Informando connection_id, ele PRECISA ser Meta Cloud; sem ele, a conexão Meta Cloud conectada da empresa é resolvida automaticamente. Conexão de outro tipo também volta como 502, não 400.","body":{"mode":"raw","raw":"{\n  \"to\": \"5548999990000\",\n  \"template_name\": \"renovacao_proposta\",\n  \"language_code\": \"pt_BR\",\n  \"connection_id\": \"<opcional — UUID da conexão>\",\n  \"components\": [\n    {\n      \"type\": \"body\",\n      \"parameters\": [\n        {\n          \"type\": \"text\",\n          \"text\": \"Maria\"\n        }\n      ]\n    },\n    {\n      \"type\": \"button\",\n      \"sub_type\": \"url\",\n      \"index\": \"0\",\n      \"parameters\": [\n        {\n          \"type\": \"text\",\n          \"text\": \"aB3xK9\"\n        }\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}}]},{"name":"Mensagens","item":[{"name":"GET /api/v1/messages","request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer {{api_key}}"}],"url":{"raw":"{{base_url}}/api/v1/messages","host":["{{base_url}}"],"path":["api","v1","messages"]},"description":"Lista mensagens da empresa. Filtros: ?contact_id=&connection_id=&direction=inbound&type=text&status=delivered&from=&to=&page=1&limit=50"}},{"name":"GET /api/v1/contacts/{id}/messages","request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer {{api_key}}"}],"url":{"raw":"{{base_url}}/api/v1/contacts/:id/messages","host":["{{base_url}}"],"path":["api","v1","contacts",":id","messages"],"variable":[{"key":"id","value":""}]},"description":"Histórico de mensagens de um contato. Filtros: ?from=&to=&direction=&page=1&limit=50"}}]},{"name":"Listas","item":[{"name":"GET /api/v1/lists","request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer {{api_key}}"}],"url":{"raw":"{{base_url}}/api/v1/lists","host":["{{base_url}}"],"path":["api","v1","lists"]},"description":"Lista as listas ativas da empresa."}},{"name":"POST /api/v1/lists","request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api_key}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/lists","host":["{{base_url}}"],"path":["api","v1","lists"]},"description":"Cria uma lista. Nome duplicado (entre listas ativas) retorna 409; um nome antes removido é reativado.","body":{"mode":"raw","raw":"{\n  \"name\": \"VIP\",\n  \"color\": \"#6366f1\",\n  \"description\": \"Clientes VIP\"\n}","options":{"raw":{"language":"json"}}}}},{"name":"PATCH /api/v1/lists/{id}","request":{"method":"PATCH","header":[{"key":"Authorization","value":"Bearer {{api_key}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/lists/:id","host":["{{base_url}}"],"path":["api","v1","lists",":id"],"variable":[{"key":"id","value":""}]},"description":"Renomeia ou recolore uma lista.","body":{"mode":"raw","raw":"{\n  \"name\": \"VIP 2026\"\n}","options":{"raw":{"language":"json"}}}}},{"name":"DELETE /api/v1/lists/{id}","request":{"method":"DELETE","header":[{"key":"Authorization","value":"Bearer {{api_key}}"}],"url":{"raw":"{{base_url}}/api/v1/lists/:id","host":["{{base_url}}"],"path":["api","v1","lists",":id"],"variable":[{"key":"id","value":""}]},"description":"Desativa a lista (soft delete — idempotente)."}},{"name":"POST /api/v1/lists/{id}/contacts","request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api_key}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/lists/:id/contacts","host":["{{base_url}}"],"path":["api","v1","lists",":id","contacts"],"variable":[{"key":"id","value":""}]},"description":"Associa contatos à lista em lote (até 500 por chamada).\n\ncontact_ids que não pertencem à empresa contam como not_found (não é erro fatal).","body":{"mode":"raw","raw":"{\n  \"contact_ids\": [\n    \"<uuid>\",\n    \"<uuid>\"\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"DELETE /api/v1/lists/{id}/contacts","request":{"method":"DELETE","header":[{"key":"Authorization","value":"Bearer {{api_key}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/lists/:id/contacts","host":["{{base_url}}"],"path":["api","v1","lists",":id","contacts"],"variable":[{"key":"id","value":""}]},"description":"Remove contatos da lista em lote (até 500 por chamada).","body":{"mode":"raw","raw":"{\n  \"contact_ids\": [\n    \"<uuid>\"\n  ]\n}","options":{"raw":{"language":"json"}}}}}]},{"name":"Campos personalizados","item":[{"name":"GET /api/v1/custom-fields","request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer {{api_key}}"}],"url":{"raw":"{{base_url}}/api/v1/custom-fields","host":["{{base_url}}"],"path":["api","v1","custom-fields"]},"description":"Lista as definições de campos personalizados ativas."}},{"name":"POST /api/v1/custom-fields","request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api_key}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/custom-fields","host":["{{base_url}}"],"path":["api","v1","custom-fields"]},"description":"Cria uma definição de campo personalizado. O slug é derivado do label pelo servidor.\n\nfield_type aceita: text, number, date, boolean, select, email, phone, url, currency, cpf.\n\nselect_options só é usado quando field_type = select.\n\nNão há limite de quantidade de campos personalizados por empresa.","body":{"mode":"raw","raw":"{\n  \"label\": \"Placa do carro\",\n  \"field_type\": \"text\"\n}","options":{"raw":{"language":"json"}}}}},{"name":"PATCH /api/v1/custom-fields/{id}","request":{"method":"PATCH","header":[{"key":"Authorization","value":"Bearer {{api_key}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/custom-fields/:id","host":["{{base_url}}"],"path":["api","v1","custom-fields",":id"],"variable":[{"key":"id","value":""}]},"description":"Edita o rótulo, opções ou obrigatoriedade do campo (o slug é imutável).","body":{"mode":"raw","raw":"{\n  \"label\": \"Placa\"\n}","options":{"raw":{"language":"json"}}}}},{"name":"DELETE /api/v1/custom-fields/{id}","request":{"method":"DELETE","header":[{"key":"Authorization","value":"Bearer {{api_key}}"}],"url":{"raw":"{{base_url}}/api/v1/custom-fields/:id","host":["{{base_url}}"],"path":["api","v1","custom-fields",":id"],"variable":[{"key":"id","value":""}]},"description":"Desativa o campo personalizado (soft delete — idempotente)."}}]},{"name":"Campanhas","item":[{"name":"GET /api/v1/campaigns","request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer {{api_key}}"}],"url":{"raw":"{{base_url}}/api/v1/campaigns","host":["{{base_url}}"],"path":["api","v1","campaigns"]},"description":"Lista as campanhas da empresa. Filtro: ?status=draft,sending"}},{"name":"GET /api/v1/campaigns/{id}","request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer {{api_key}}"}],"url":{"raw":"{{base_url}}/api/v1/campaigns/:id","host":["{{base_url}}"],"path":["api","v1","campaigns",":id"],"variable":[{"key":"id","value":""}]},"description":"Status e métricas de entrega de uma campanha."}},{"name":"POST /api/v1/campaigns/{id}/start","request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api_key}}"}],"url":{"raw":"{{base_url}}/api/v1/campaigns/:id/start","host":["{{base_url}}"],"path":["api","v1","campaigns",":id","start"],"variable":[{"key":"id","value":""}]},"description":"Inicia uma campanha em rascunho."}},{"name":"POST /api/v1/campaigns/{id}/pause","request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api_key}}"}],"url":{"raw":"{{base_url}}/api/v1/campaigns/:id/pause","host":["{{base_url}}"],"path":["api","v1","campaigns",":id","pause"],"variable":[{"key":"id","value":""}]},"description":"Pausa uma campanha em envio."}},{"name":"POST /api/v1/campaigns/{id}/resume","request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api_key}}"}],"url":{"raw":"{{base_url}}/api/v1/campaigns/:id/resume","host":["{{base_url}}"],"path":["api","v1","campaigns",":id","resume"],"variable":[{"key":"id","value":""}]},"description":"Retoma uma campanha pausada."}},{"name":"GET /api/v1/campaigns/{id}/recipients","request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer {{api_key}}"}],"url":{"raw":"{{base_url}}/api/v1/campaigns/:id/recipients","host":["{{base_url}}"],"path":["api","v1","campaigns",":id","recipients"],"variable":[{"key":"id","value":""}]},"description":"Lista paginada de destinatários. Parâmetros: ?page=1&limit=50&status=sent"}},{"name":"POST /api/v1/campaigns/{id}/recipients","request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api_key}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/campaigns/:id/recipients","host":["{{base_url}}"],"path":["api","v1","campaigns",":id","recipients"],"variable":[{"key":"id","value":""}]},"description":"Adiciona destinatários a uma campanha em rascunho/agendada (por contact_ids e/ou por telefone; máx. 100 por chamada).\n\nInforme ao menos um contact_id ou um contato por telefone; o total combinado deve ser ≤ 100.","body":{"mode":"raw","raw":"{\n  \"contact_ids\": [\n    \"<uuid>\"\n  ],\n  \"contacts\": [\n    {\n      \"phone\": \"5548999990000\",\n      \"name\": \"João Silva\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}},{"name":"GET /api/v1/campaigns/{id}/report","request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer {{api_key}}"}],"url":{"raw":"{{base_url}}/api/v1/campaigns/:id/report","host":["{{base_url}}"],"path":["api","v1","campaigns",":id","report"],"variable":[{"key":"id","value":""}]},"description":"Relatório consolidado: métricas, taxas e breakdown por status de destinatário."}},{"name":"POST /api/v1/campaigns/{id}/send","request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api_key}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/campaigns/:id/send","host":["{{base_url}}"],"path":["api","v1","campaigns",":id","send"],"variable":[{"key":"id","value":""}]},"description":"Adiciona contatos (por nome e telefone) e inicia a campanha em um único request.","body":{"mode":"raw","raw":"{\n  \"contacts\": [\n    {\n      \"name\": \"João Silva\",\n      \"phone\": \"5548999990000\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}}}]},{"name":"Importação em massa","item":[{"name":"POST /api/v1/contacts/bulk","request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{api_key}}"},{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{base_url}}/api/v1/contacts/bulk","host":["{{base_url}}"],"path":["api","v1","contacts","bulk"]},"description":"Enfileira um lote de importação de contatos. Responde 202 com o job_id para acompanhamento.\n\nTodo lote ganha automaticamente uma etiqueta import_DDMMAAAA_HHhMMmin_api com a data/hora de início da importação.\n\nLimites: até 10.000 contatos por job, corpo máximo de 4MB, no máximo 2 importações ativas por empresa.\n\ncustom_fields é keyed pelo ID do campo (UUID de GET /api/v1/custom-fields), valores sempre string; um ID fora das definições ativas da empresa retorna 422 no enfileiramento (crie os campos antes via POST /api/v1/custom-fields).\n\nCampos nativos (cpf, rg, genero, estado_civil, profissao, city, state, postal_code) vão no top-level de cada contato; cnpj cria/associa a empresa-cliente (organization) com deduplicação por CNPJ dentro do lote.","body":{"mode":"raw","raw":"{\n  \"contacts\": [\n    {\n      \"phone\": \"5548999990000\",\n      \"name\": \"João Silva\",\n      \"email\": \"joao@exemplo.com.br\",\n      \"birthday\": \"1990-05-12\",\n      \"observation\": \"Veio da feira de negócios\",\n      \"cpf\": \"99001122334\",\n      \"genero\": \"Masculino\",\n      \"estado_civil\": \"Casado\",\n      \"city\": \"Florianópolis\",\n      \"state\": \"SC\",\n      \"postal_code\": \"88010000\",\n      \"cnpj\": \"12345678000190\",\n      \"custom_fields\": {\n        \"<id-do-campo-uuid>\": \"campanha\",\n        \"<id-de-outro-campo-uuid>\": \"9\"\n      }\n    }\n  ],\n  \"options\": {\n    \"update_existing_names\": true,\n    \"list_ids\": [\n      \"<uuid>\"\n    ]\n  }\n}","options":{"raw":{"language":"json"}}}}},{"name":"GET /api/v1/contacts/bulk/{jobId}","request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer {{api_key}}"}],"url":{"raw":"{{base_url}}/api/v1/contacts/bulk/:jobId","host":["{{base_url}}"],"path":["api","v1","contacts","bulk",":jobId"],"variable":[{"key":"jobId","value":""}]},"description":"Progresso do job de importação: contadores, percentual e erros por item."}}]},{"name":"Conexões","item":[{"name":"GET /api/v1/connections","request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer {{api_key}}"}],"url":{"raw":"{{base_url}}/api/v1/connections","host":["{{base_url}}"],"path":["api","v1","connections"]},"description":"Lista as conexões da empresa (WhatsApp, Instagram)."}}]},{"name":"Etapas de pipeline","item":[{"name":"GET /api/v1/pipeline-stages","request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer {{api_key}}"}],"url":{"raw":"{{base_url}}/api/v1/pipeline-stages","host":["{{base_url}}"],"path":["api","v1","pipeline-stages"]},"description":"Lista as etapas do pipeline de CRM."}}]}]}