Campos personalizados
ConsulteGET /integrations/external/custom-fields com a permissão crm/custom-field.read para obter IDs, seções, opções e regras de preenchimento. A resposta contém total e records. Envie take explicitamente para limitar a página.
section_id, section, is_required, is_visible_on_create, min_checkbox_selections e max_checkbox_selections. Em seleções, use os IDs retornados em options.
O corpo de preenchimento depende da entidade: consulte os guias de leads e oportunidades e de propostas. Enviar
option_id onde o campo espera option_ids, ou o contrário, retorna 400.
Como as rotas externas de lead e oportunidade não recebem arquivos, um campo do tipo arquivo marcado como obrigatório impede a criação por essas rotas.
Arquivos
Estas rotas guardam arquivos de um lead ou de uma oportunidade. Para anexar arquivos a uma proposta, use os anexos de proposta, que têm rotas, formatos e limites próprios. UsePOST /integrations/external/files/batches com multipart/form-data e a permissão crm/file.create. Informe exatamente um destino entre crm_lead_id, crm_deal_id, lead_code e deal_code.
file ou files, com até 20 arquivos por campo multipart. As extensões aceitas são .md, .markdown, .pdf, .docx, .xls, .xlsx e .txt. Se o nome não tiver extensão, a API aceita o arquivo quando o MIME corresponde a um desses formatos. title é opcional e aceita até 150 caracteres; note permite uma observação. Cada arquivo aceita até 100 MB, e a soma dos arquivos de uma requisição, até 2.000 MB; acima disso, a API retorna 400.
A criação retorna o lote com files_count, total_size e files. Para listar os arquivos individualmente, envie take explicitamente para limitar a página e use GET /integrations/external/files com exatamente um dos mesmos filtros de destino. A consulta por ID usa GET /integrations/external/files/{id}; a exclusão lógica usa DELETE no mesmo caminho e retorna { "success": true }. Na listagem, search procura pelo nome do arquivo.
Listar e consultar exigem crm/file.read; excluir exige crm/file.delete. Na exclusão, o usuário criador da chave também precisa ser administrador, autor do arquivo ou do lote, ou supervisor da equipe do autor; caso contrário, a API retorna 403.
Os links file_url são temporários. Consulte novamente o arquivo para obter uma URL atualizada.
Links de satisfação
UsePOST /integrations/external/satisfaction/forms/{id}/share-links com crm/satisfaction.links.create para gerar um link de um formulário ativo:
crm_person_id é obrigatório. Você pode associar uma oportunidade por crm_deal_id ou uma entrega por crm_delivery_id, mas não ambos. max_uses aceita de 1 a 1.000; quando omitido, não há limite explícito de usos. Sem expires_at, o link não expira por data. A API aceita uma data no passado, mas o link já nasce expirado; substitua a data do exemplo por uma data futura.
A resposta 201 inclui id, token, expires_at, max_uses, url e form_url. Compartilhe form_url com o respondente; url é o caminho da API mantido por compatibilidade. As respostas públicas podem gerar o evento satisfaction.public_submission_created, descrito em webhooks.