POST /ticket que tenta encontrar o cliente CRM pelo contatocrm.contact_search) e, se não achar, cria um customer + contact novo no CRMcrm.contact + crm.customer.crmcrm é opcional (sem ele, ticket fica sem cliente — funciona).crm.contact_search é opcional — quando preenchido, busca registro existente.crm.contact + crm.customer: se um for preenchido, AMBOS são obrigatórios.DDI + DDD + número (ex.: 5511988884444). E-mails: padrão.crm.contact| Campo | Valores aceitos |
|---|---|
tipo_contato | email ou phone |
canal_contato (int) | 2=WhatsApp, 3=SMS, 4=E-mail, 6=Telefone, 9=Telegram, 12=RCS |
contato (string) | Valor do contato (telefone formatado ou email) |
crm.customer| Campo | Falha se ausente |
|---|---|
ativo (boolean) | o campo 'Ativo' é obrigatório e deve ser preenchido |
cpf_cnpj (string, só dígitos) | 400 informando que CPF/CNPJ é obrigatório |
id e id_seq, e eles não são intercambiáveis:| Identificador | Formato | Onde se usa |
|---|---|---|
id | UUID | /ticket/message, /ticket/finish, /ticket/link_customer, /ticket/info/{id} |
id_seq | inteiro | Coluna id_ticket das tabelas do CRM (negociacao e afins) |
id_seq não devolve erro, mas o registro fica invisível para a plataforma.curl --location '/api/v2/ticket/custom' \
--header 'api-key: {{api-key}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Nome do ticket",
"description": "Descrição",
"id_phase": "bbcdb84f-1647-44f5-9499-18c2168a3136",
"crm": {
"contact_search": "joao@suaempresa.com.br",
"contact": {
"contato": "joao@suaempresa.com.br",
"tipo_contato": "email",
"canal_contato": 4,
"cpc": false,
"nome": "Contato de email"
},
"customer": {
"nome": "João",
"sobrenome": "Da silva",
"cpf_cnpj": "12829070771",
"ativo": true
}
}
}'{
"id": "84cefe00-761e-467c-9f77-fbb05ecb7af9",
"id_seq": 484898,
"name": "Ligação receptiva 5511988884444",
"customer": {
"id_crm": "42",
"table": "cliente"
},
"negotiation": {
"id": 104
}
}