Recursos
Changelog
Histórico de mudanças, adições, deprecações e correções na API e na documentação.
2026-11-14
Adicionado
- MCP: operadores podem conectar agentes quando a organização liga Permitir que operadores conectem agentes (Configurações → API → Conexão com IA; desligada por padrão). O agente vê e faz só o que a pessoa que autorizou vê e faz na tela: permissões oferecidas conforme as dela, conversas e grupos na mesma visibilidade da caixa de entrada e indicadores no recorte do dashboard dela. Veja Conectar um agente por MCP.
- Indicadores e relatórios (
GET /analytics/snapshoteGET /analytics/reports/*) trazemscope(org,departmentouown) quando lidos por uma conexão de agente. Chaves de API comuns não mudam. - Erro 403
missing_permission: a pessoa que autorizou a conexão de agente não tem mais a permissão no CRM. Veja Erros.
Mudado
- MCP: as permissões da conexão são conferidas a cada chamada contra as permissões atuais de quem autorizou, e não só contra o papel de proprietário ou administrador.
2026-11-13
Adicionado
- Endpoints de leitura em Beta:
GET /pipelines(funis com etapas em ordem),GET /members(equipe;user_idé oassigned_tode negócios e conversas),GET /conversations(lista com contato, canal, situação, responsável e última atividade; filtrosstatus/channel/assigned_to/contact_id/is_group/active_since/active_until) eGET /conversations/{id}/messages(texto e transcrição das mensagens, sem o arquivo de mídia). As listas de conversas e mensagens paginam comhas_more, sem total. - O escopo
conversations:readdeixa de ser reservado: liberaGET /conversationse, junto commessages:read, a leitura das mensagens. GET /dealsaceita o filtroassigned_to, e os negócios passam a trazerproduct_id,assigned_to,won_at,lost_atelost_reason.- MCP: novas ferramentas de leitura linha a linha (
listar_funis,listar_equipe,listar_negocios,listar_contatos,consultar_contato,listar_conversas,ler_mensagensebuscar_mensagens), cada uma com permissão própria na tela de consentimento. Veja Conectar um agente por MCP. - Endpoints de leitura em Beta:
GET /campaigns(campanhas de disparo com contadores, sem destinatários),GET /automations(gatilho, situação e uso, sem o fluxo),GET /tasks,GET /appointments(sem anotações internas, link da reunião e token de cancelamento),GET /forms(contadores e perguntas) eGET /forms/{id}/responses(sem respostas de teste). Todas paginam comhas_moreenext_offset, sem total. - MCP: seis ferramentas de leitura (
listar_campanhas,listar_automacoes,listar_tarefas,listar_agendamentos,listar_formularioselistar_respostas_formulario), totalizando 26 ferramentas. - Endpoints de relatórios agregados em Beta, com o escopo
analytics:reade sem dados de contato:GET /analytics/reports/funnel,GET /analytics/reports/service,GET /analytics/reports/dispatcheGET /analytics/reports/operations. Todos aceitamdaysde 1 a 90 (padrão 30) no fuso da organização; o do funil aceita tambémpipeline_id. Veja a referência. - MCP: quatro ferramentas de relatório (
relatorio_funil,relatorio_atendimento,relatorio_disparoserelatorio_operacoes), totalizando 30 ferramentas. - Endpoint
GET /groups/broadcasts: lista as mensagens agendadas em grupos (as 500 mais recentes da organização, de qualquer origem), com situação agregada, contadores por grupo e filtrostatus. No MCP, a ferramentalistar_agendamentos_em_grupos, totalizando 31 ferramentas. - Escritas internas em Beta:
POST /tasks(cria tarefa para a equipe, vinculada a negócio, contato ou conversa),POST /tasks/{id}/complete(conclui em nome de quem criou a chave; tarefa já concluída volta comchanged: falsee cancelada responde 409) ePOST /notes(nota interna em contato ou negócio, só para a equipe). Exigem os novos escopostasks:writeenotes:writee o cabeçalhoIdempotency-Key; a repetição devolve o recibo comreplayed: true. Nada é enviado ao contato e nenhuma automação dispara. Veja a referência. - MCP: três ferramentas de ação,
criar_tarefa,concluir_tarefaeregistrar_nota_interna, totalizando 34 ferramentas. As permissõestasks:writeenotes:writevêm desmarcadas na tela de consentimento e o aplicativo pede confirmação a cada chamada.
Mudado
- MCP: toda lista responde no mesmo formato,
data,total(nullquando o CRM não conta o filtro),has_moreenext_offset. Deixam de existirpaginatione as chavesgroups,broadcasts,deliveries,contracts,templatesecontext; atualize instruções salvas que as citem. A API REST não muda. - MCP:
listar_funiserelatorio_funiltrocampositionda etapa porstage_order, a partir de 1, como emconsultar_indicadores.listar_funistroca tambémpositiondo funil porpipeline_order, a partir de 1.relatorio_funilomite por padrão as etapas e os funis sem negócio aberto e sem movimento na janela, informando quantos emhidden_empty_stagesehidden_empty_pipelines;hide_empty_stages: falsetraz todos. - MCP:
buscar_mensagenselistar_agendamentos_da_agendasó devolvem telefone e e-mail cominclude_contact_details: true; a foto do contato deixa de sair.listar_contratosaceitafrometoemAAAA-MM-DD. - MCP: filtros de data em
AAAA-MM-DDpassam a ser lidos como 00:00 no fuso horário da organização, em todas as listas; antes valiam em UTC. Instante com offset continua valendo como informado. A API REST não muda. - MCP:
buscar_contexto_contratopassa a encontrar o negócio também pelo nome do produto emq, para quem pode ver produtos. GET /tasks: a tarefa aberta com vencimento passado sai comstatusoverdue, e o filtrostatus=overduepassa a devolvê-las;pendingein_progressfiltram só as em dia.GET /conversations/{id}/messages:sender_kindvemcontactnas mensagens recebidas, em vez denull.- Leituras que o banco recusa sempre respondem 500 com
codequery_rejected; no MCP, a consulta deixa de vir marcada comoretryable. - MCP:
consultar_agendamentopassa a se chamarconsultar_agendamento_em_gruposelistar_agendamentospassa a se chamarlistar_agendamentos_da_agenda, para um agente não confundir a agenda de reuniões com mensagens agendadas em grupos. Aplicativos conectados recebem os nomes novos na próxima listagem de ferramentas; atualize instruções salvas que citem os nomes antigos. - Agendamento em grupos por conexão de agente (MCP): no máximo 200 destinos a cada 24 horas por pessoa e organização, somando as conexões dela. Acima disso
POST /groups/broadcastsresponde 429daily_limite nada é agendado. Chaves de integração comuns não mudam. - Escritas por conexões de agente (
POST /tasks,POST /tasks/{id}/completeePOST /notes): no máximo 200 por pessoa e organização a cada 24 horas, somando tarefas e notas e as conexões dela. Acima disso a resposta é 429daily_limite nada é gravado. Chaves de integração criadas em Configurações → API não têm esse teto. - MCP:
agendar_mensagens_em_grupos,preparar_contratoeenviar_contrato_para_assinaturapassam a ser anunciadas como ações que pedem confirmação a cada chamada (destructiveHint). A lista de ferramentas informa validade de 5 minutos e cache privado à conexão (ttlMs,cacheScope) aos aplicativos que usam a revisão 2026-07-28 do protocolo, atendida no mesmo endereço dos aplicativos anteriores. - MCP: todos os campos das ferramentas têm descrição;
scheduled_atdeagendar_mensagens_em_gruposé validado antes do envio (AAAA-MM-DDTHH:mm:ss, com offset opcional) e um lote recusado informa o que conferir. Nomes de grupos saem sem caracteres invisíveis, como já acontecia nas demais leituras. - Chaves com
analytics:read,deals:readecontacts:readpassam a alcançar os endpoints novos:analytics:readlista campanhas e automações,deals:readlista tarefas econtacts:readlista agendamentos e respostas de formulários.GET /formsaceitacontacts:readouanalytics:read. - Chaves já existentes passam a alcançar os endpoints novos conforme os escopos que têm:
conversations:readlista conversas,conversations:read+messages:readlê o texto das mensagens, edeals:readouconversations:readlista a equipe (nome e papel). Revise os escopos das suas chaves em Configurações → API e revogue o que não usa.
Corrigido
GET /pipelines(e a ferramentalistar_funisdo MCP) respondia 500 em toda chamada: o vínculo entre funis e etapas ficou ambíguo para o banco. A consulta agora nomeia o vínculo.
2026-08-20
Adicionado
- Endpoint
POST /messages/sendem Beta. Envia mensagem WhatsApp (texto ou mídia) por uma conexão WhatsApp da organização, com destino em exatamente um entreconversation_id,contact_idouphone(contato/conversa criados quando necessário). Suporta mídia viamedia_urlpública (image/video/audio/document, comcontentcomo caption) e operador opcional viasender_user_id— a mensagem sai assinada e, comassign_conversation(defaulttrue), a conversa sem dono é atribuída a ele. O envio é assíncrono via fila do CRM (resposta201comqueued: true) e respeita opt-out LGPD (403 contact_opted_out). Requer o novo escopomessages:write(agora disponível em Configurações → API).
2026-07-03
Adicionado
- Endpoints de leitura em Beta:
GET /contacts(lista com busca livreq, filtrosemail/phone/sourcee sync incremental porcreated_since/updated_since),GET /contacts/{id},GET /deals(filtrospipeline_id/stage_id/contact_id/status/external_id+ sync incremental) eGET /deals/{id}. Leitura de negócios usa o novo escopodeals:read. - Base URL versionada
https://crm.oficinamartech.com/api/v1— agora a forma canônica. O caminho sem versão (/api) segue funcionando como alias legado, sem data de sunset.
Mudado
- A especificação OpenAPI publicada em
/openapi.jsonpassa a ser a única fonte da verdade do contrato (versão0.2.0), gerada dos mesmos schemas Zod que validam as requisições.
2026-06-15
Corrigido
POST /contactsePOST /dealsagora tratam strings vazias ("") em campos opcionais como ausentes. Integrações no-code (n8n, Make, Zapier) costumam enviaremail: ""quando não há valor; antes isso retornava400 Invalid emailmesmo com telefone informado. A regra continua a mesma — basta email ou telefone para identificar o contato.
2026-06-14
Adicionado
- Endpoint
POST /dealsem Beta. Cria um negócio em uma etapa do pipeline (pipeline_id+stage_idobrigatórios), comvalue,currency,status,expected_close_date,assigned_toesource. Pode vincular um contato porcontact.idou criá-lo porcontact.email/contact.phone(mesma lógica doPOST /contacts).custom_fieldsé gravado emmetadata(chaves de negócio cadastradas são validadas). Idempotência porexternal_id. Requer o escopodeals:write(agora disponível).
2026-06-13
Adicionado
- Endpoint
POST /contactsem Beta. Cria ou atualiza um contato (upsert por email → telefone), comname,email,phone, UTMs,fbclid/gclid/src/sck,landing_page_url/referrere campos personalizados. A organização é resolvida pela API key. Requer o escopocontacts:write(agora disponível).
2026-05-20
Adicionado
- CORS habilitado em
GET /contacts/message-searchpara suportar playground emdocs.crm.oficinamartech.com. Origens permitidas via envDOCS_PLAYGROUND_ORIGINS. HandlerOPTIONSretorna 204 com preflight headers.
Mudado
- Documentação completamente reescrita. Estrutura Diátaxis (Começar / Guias / Referência / Recursos), aparência Mintlify/Resend, busca cmd+K funcional, dark/light toggle, mobile-friendly. Worker JS legado em
apps/docssubstituído por Next.js + Fumadocs.
2026-05-19
Adicionado
- Endpoint
GET /contacts/message-searchem Beta. Busca contatos por termos em mensagens com filtros de canal, direção e tempo. - Documentação pública em docs.crm.oficinamartech.com.
Convenções de versionamento
- Adicionado — novo recurso ou endpoint
- Mudado — alteração em comportamento ou contrato existente
- Corrigido — fix de bug em comportamento documentado
- Depreciado — recurso marcado para remoção futura (com data de Sunset)
- Removido — recurso retirado (só ocorre após período de deprecação)
- Segurança — fix com implicação de segurança