CRM
Funis de venda e negócios, com entrada e importação de leads.
O que é
O CRM organiza as negociações da empresa em funis e etapas (kanban). Cada negócio é de um cliente, tem responsável, valor previsto, tags, marcos, compromissos, propostas, arquivos e um histórico com tudo o que aconteceu.
Pela API, uma integração ou uma IA abre e conduz negócios, recebe e importa leads e mantém funis, etapas, tags e metas, com as mesmas regras e a mesma permissão do usuário responsável pela credencial.
O que dá para fazer hoje
- Listar e consultar negócios com os filtros do kanban; criar e editar.
- Mover de etapa e de funil, trocar o responsável, avaliar, definir o valor previsto e marcar tags.
- Finalizar como ganho ou perdido, arquivar e reabrir.
- Comentar, marcar marcos, preencher campos personalizados, agendar compromissos, registrar propostas e enviar arquivos.
- Receber leads de fora e importar leads por planilha.
- Manter funis, etapas, marcos, campanhas, origens, campos personalizados, tags e metas.
- Ler os relatórios do funil e das metas.
Ciclo de um negócio
| Situação | Como chega |
|---|---|
| Aberto | Criar o negócio ou receber um lead; mover entre as etapas de andamento |
| Ganho ou perdido | Mover para a etapa de ganho ou de perda do funil |
| Finalizado | Finalizar a negociação (ganho com o valor) |
| Arquivado | Arquivar; desarquivar ou reabrir trazem de volta |
Importante
- Etapa e situação mudam só pelas ações; o
PATCHedita os dados. - Ação fora do estado responde
409invalid_transition. - Toda criação e ação exige
Idempotency-Key. - Leitura
crm:read; negócioscrm:write; leads e importação por planilhacrm:import; configuraçãocrm:settings. - Alcance: a credencial vê os funis em que o usuário é gestor ou membro do time (o administrador geral e quem tem Funis de Venda (editar) veem todos) e, quando o negócio tem loja, só as lojas dele; fora disso,
404. - Negócio finalizado só muda de etapa ou de funil depois de reaberto (
409).
Disponibilidade na API
Endpoints de CRM
Conduza negócios pelos funis, receba e importe leads e mantenha a configuração do CRM. Os exemplos abaixo são gerados pelo contrato OpenAPI oficial.
/api/v1/crm/deals
Lista negócios
Mesmos filtros e busca do kanban e da lista do painel; arquivados só com `archived=true`. Do mais movimentado para o menos. Exige `crm:read` e Negócios (ver). Só os negócios do alcance do usuário: funis em que ele é gestor ou membro do time (o administrador geral e quem tem Funis de Venda (editar) veem todos) e, quando o negócio tem loja, lojas que ele acessa.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
funnel_idquery | integer | Não | — |
stage_ids[]query | array<integer> | Não | — |
responsible_idquery | integer | Não | — |
responsible_ids[]query | array<integer> | Não | — |
origin_ids[]query | array<integer> | Não | — |
campaign_ids[]query | array<integer> | Não | — |
milestone_ids[]query | array<integer> | Não | — |
tag_ids[]query | array<integer> | Não | — |
statusquery | string | Não | — |
archivedquery | boolean | Não | — |
searchquery | string | Não | — |
search_typequery | string | Não | Onde buscar: nome do negócio, id, cliente ou vendedor. |
per_pagequery | integer | Não | — |
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/deals" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"name": "string",
"status": "aberto",
"closed": true,
"archived": true,
"predicted_value": 1,
"won_value": 1,
"rating": 1,
"url_origin": null,
"client": {
"id": 1,
"name": "string",
"email": null
},
"funnel": {
"id": 1,
"name": "string"
},
"stage": {
"id": 1,
"name": "string",
"color": null,
"is_won": true,
"is_lost": true
},
"responsible": {
"id": 1,
"name": "string"
},
"origin": {
"id": 1,
"name": "string"
},
"campaign": {
"id": 1,
"name": "string"
},
"store": {
"id": 1,
"name": null
},
"tags": [
{
"id": 1,
"name": "string",
"color": null
}
],
"milestones": [
{
"id": 1,
"name": "string",
"color": null
}
],
"next_appointment_at": "2026-10-20T10:00:00-03:00",
"won_at": "2026-10-20T10:00:00-03:00",
"lost_at": "2026-10-20T10:00:00-03:00",
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"links": [],
"meta": []
}Respostas possíveis
/api/v1/crm/deals
Cria um negócio
Cria o negócio aberto na primeira etapa ativa do funil, com o histórico da etapa e a observação como comentário. Sem responsável, fica com o usuário da credencial. Exige `crm:write` e Negócios (criar). Funil fora do alcance do usuário responde 403 (`permission_denied`).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
funnel_id | integer | Sim | — |
client_id | integer | Sim | — |
name | string | null | Não | Sem nome, vira "Negociação com o cliente #id". |
responsible_id | integer | null | Não | — |
predicted_value | number | null | Não | — |
origin_id | integer | null | Não | — |
campaign_id | integer | null | Não | — |
store_id | integer | null | Não | — |
url_origin | string | null | Não | — |
rating | integer | null | Não | — |
observation | string | null | Não | Vira o primeiro comentário. |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/deals" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"funnel_id":1,"client_id":1,"name":null,"responsible_id":1,"predicted_value":1,"origin_id":1,"campaign_id":1,"store_id":1,"url_origin":null,"rating":1,"observation":null}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"status": "aberto",
"closed": true,
"archived": true,
"predicted_value": 1,
"won_value": 1,
"rating": 1,
"url_origin": null,
"client": {
"id": 1,
"name": "string",
"email": null
},
"funnel": {
"id": 1,
"name": "string"
},
"stage": {
"id": 1,
"name": "string",
"color": null,
"is_won": true,
"is_lost": true
},
"responsible": {
"id": 1,
"name": "string"
},
"origin": {
"id": 1,
"name": "string"
},
"campaign": {
"id": 1,
"name": "string"
},
"store": {
"id": 1,
"name": null
},
"tags": [
{
"id": 1,
"name": "string",
"color": null
}
],
"milestones": [
{
"id": 1,
"name": "string",
"color": null
}
],
"next_appointment_at": "2026-10-20T10:00:00-03:00",
"won_at": "2026-10-20T10:00:00-03:00",
"lost_at": "2026-10-20T10:00:00-03:00",
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/deals/{deal}
Consulta um negócio
Exige `crm:read` e Negócios (ver). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/deals/{deal}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"status": "aberto",
"closed": true,
"archived": true,
"predicted_value": 1,
"won_value": 1,
"rating": 1,
"url_origin": null,
"client": {
"id": 1,
"name": "string",
"email": null
},
"funnel": {
"id": 1,
"name": "string"
},
"stage": {
"id": 1,
"name": "string",
"color": null,
"is_won": true,
"is_lost": true
},
"responsible": {
"id": 1,
"name": "string"
},
"origin": {
"id": 1,
"name": "string"
},
"campaign": {
"id": 1,
"name": "string"
},
"store": {
"id": 1,
"name": null
},
"tags": [
{
"id": 1,
"name": "string",
"color": null
}
],
"milestones": [
{
"id": 1,
"name": "string",
"color": null
}
],
"next_appointment_at": "2026-10-20T10:00:00-03:00",
"won_at": "2026-10-20T10:00:00-03:00",
"lost_at": "2026-10-20T10:00:00-03:00",
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/deals/{deal}
Edita os dados do negócio
Edição parcial: o campo omitido fica como está. Origem, campanha e unidade entram no histórico com o que mudou. Etapa, funil, responsável, avaliação e valor previsto têm ação própria. Exige `crm:write` e Negócios (editar). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Não | — |
client_id | integer | Não | — |
url_origin | string | null | Não | — |
origin_id | integer | null | Não | — |
campaign_id | integer | null | Não | — |
store_id | integer | null | Não | — |
Exemplo de requisição
curl -X PATCH "$MICORE_BASE_URL/crm/deals/{deal}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name":"string","client_id":1,"url_origin":null,"origin_id":1,"campaign_id":1,"store_id":1}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"status": "aberto",
"closed": true,
"archived": true,
"predicted_value": 1,
"won_value": 1,
"rating": 1,
"url_origin": null,
"client": {
"id": 1,
"name": "string",
"email": null
},
"funnel": {
"id": 1,
"name": "string"
},
"stage": {
"id": 1,
"name": "string",
"color": null,
"is_won": true,
"is_lost": true
},
"responsible": {
"id": 1,
"name": "string"
},
"origin": {
"id": 1,
"name": "string"
},
"campaign": {
"id": 1,
"name": "string"
},
"store": {
"id": 1,
"name": null
},
"tags": [
{
"id": 1,
"name": "string",
"color": null
}
],
"milestones": [
{
"id": 1,
"name": "string",
"color": null
}
],
"next_appointment_at": "2026-10-20T10:00:00-03:00",
"won_at": "2026-10-20T10:00:00-03:00",
"lost_at": "2026-10-20T10:00:00-03:00",
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/deals/{deal}/stage
Move o negócio de etapa
Etapa do mesmo funil: ganho e perda mudam a situação, as demais deixam aberto; etapa que pede retorno grava o próximo contato na agenda. Mesma etapa: 409. Dispara as automações da etapa. Exige `crm:write` e Negócios (editar). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
stage_id | integer | Sim | — |
contact_date | string | null (date) | Não | Próximo contato, nas etapas que pedem retorno. |
contact_time | string | null | Não | Hora do próximo contato (HH:MM). |
observation | string | null | Não | Relatório da movimentação, como o texto pedido ao ganhar a venda; fica no histórico da etapa. |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/deals/{deal}/stage" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"stage_id":1,"contact_date":"2026-10-20","contact_time":null,"observation":null}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"status": "aberto",
"closed": true,
"archived": true,
"predicted_value": 1,
"won_value": 1,
"rating": 1,
"url_origin": null,
"client": {
"id": 1,
"name": "string",
"email": null
},
"funnel": {
"id": 1,
"name": "string"
},
"stage": {
"id": 1,
"name": "string",
"color": null,
"is_won": true,
"is_lost": true
},
"responsible": {
"id": 1,
"name": "string"
},
"origin": {
"id": 1,
"name": "string"
},
"campaign": {
"id": 1,
"name": "string"
},
"store": {
"id": 1,
"name": null
},
"tags": [
{
"id": 1,
"name": "string",
"color": null
}
],
"milestones": [
{
"id": 1,
"name": "string",
"color": null
}
],
"next_appointment_at": "2026-10-20T10:00:00-03:00",
"won_at": "2026-10-20T10:00:00-03:00",
"lost_at": "2026-10-20T10:00:00-03:00",
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/deals/{deal}/funnel
Leva o negócio para outro funil
Funil e etapa de destino (a etapa precisa ser do funil). Mesmo funil: 409. Exige `crm:write` e Negócios (editar). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
funnel_id | integer | Sim | — |
stage_id | integer | Sim | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/deals/{deal}/funnel" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"funnel_id":1,"stage_id":1}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"status": "aberto",
"closed": true,
"archived": true,
"predicted_value": 1,
"won_value": 1,
"rating": 1,
"url_origin": null,
"client": {
"id": 1,
"name": "string",
"email": null
},
"funnel": {
"id": 1,
"name": "string"
},
"stage": {
"id": 1,
"name": "string",
"color": null,
"is_won": true,
"is_lost": true
},
"responsible": {
"id": 1,
"name": "string"
},
"origin": {
"id": 1,
"name": "string"
},
"campaign": {
"id": 1,
"name": "string"
},
"store": {
"id": 1,
"name": null
},
"tags": [
{
"id": 1,
"name": "string",
"color": null
}
],
"milestones": [
{
"id": 1,
"name": "string",
"color": null
}
],
"next_appointment_at": "2026-10-20T10:00:00-03:00",
"won_at": "2026-10-20T10:00:00-03:00",
"lost_at": "2026-10-20T10:00:00-03:00",
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/deals/{deal}/responsible
Troca o responsável
`null` remove o responsável. Exige `crm:write` e Negócios (editar). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
responsible_id | integer | null | Sim | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/deals/{deal}/responsible" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"responsible_id":1}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"status": "aberto",
"closed": true,
"archived": true,
"predicted_value": 1,
"won_value": 1,
"rating": 1,
"url_origin": null,
"client": {
"id": 1,
"name": "string",
"email": null
},
"funnel": {
"id": 1,
"name": "string"
},
"stage": {
"id": 1,
"name": "string",
"color": null,
"is_won": true,
"is_lost": true
},
"responsible": {
"id": 1,
"name": "string"
},
"origin": {
"id": 1,
"name": "string"
},
"campaign": {
"id": 1,
"name": "string"
},
"store": {
"id": 1,
"name": null
},
"tags": [
{
"id": 1,
"name": "string",
"color": null
}
],
"milestones": [
{
"id": 1,
"name": "string",
"color": null
}
],
"next_appointment_at": "2026-10-20T10:00:00-03:00",
"won_at": "2026-10-20T10:00:00-03:00",
"lost_at": "2026-10-20T10:00:00-03:00",
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/deals/{deal}/rating
Avalia o negócio
Nota de 1 a 5. Exige `crm:write` e Negócios (editar). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
rating | integer | Sim | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/deals/{deal}/rating" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"rating":1}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"status": "aberto",
"closed": true,
"archived": true,
"predicted_value": 1,
"won_value": 1,
"rating": 1,
"url_origin": null,
"client": {
"id": 1,
"name": "string",
"email": null
},
"funnel": {
"id": 1,
"name": "string"
},
"stage": {
"id": 1,
"name": "string",
"color": null,
"is_won": true,
"is_lost": true
},
"responsible": {
"id": 1,
"name": "string"
},
"origin": {
"id": 1,
"name": "string"
},
"campaign": {
"id": 1,
"name": "string"
},
"store": {
"id": 1,
"name": null
},
"tags": [
{
"id": 1,
"name": "string",
"color": null
}
],
"milestones": [
{
"id": 1,
"name": "string",
"color": null
}
],
"next_appointment_at": "2026-10-20T10:00:00-03:00",
"won_at": "2026-10-20T10:00:00-03:00",
"lost_at": "2026-10-20T10:00:00-03:00",
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/deals/{deal}/predicted-value
Define o valor previsto
Exige `crm:write` e Negócios (editar). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
value | number | Sim | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/deals/{deal}/predicted-value" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"value":1}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"status": "aberto",
"closed": true,
"archived": true,
"predicted_value": 1,
"won_value": 1,
"rating": 1,
"url_origin": null,
"client": {
"id": 1,
"name": "string",
"email": null
},
"funnel": {
"id": 1,
"name": "string"
},
"stage": {
"id": 1,
"name": "string",
"color": null,
"is_won": true,
"is_lost": true
},
"responsible": {
"id": 1,
"name": "string"
},
"origin": {
"id": 1,
"name": "string"
},
"campaign": {
"id": 1,
"name": "string"
},
"store": {
"id": 1,
"name": null
},
"tags": [
{
"id": 1,
"name": "string",
"color": null
}
],
"milestones": [
{
"id": 1,
"name": "string",
"color": null
}
],
"next_appointment_at": "2026-10-20T10:00:00-03:00",
"won_at": "2026-10-20T10:00:00-03:00",
"lost_at": "2026-10-20T10:00:00-03:00",
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/deals/{deal}/tags
Coloca uma tag
Só tag ativa; o negócio que já tem a tag responde 409. Exige `crm:write` e Negócios (editar). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
tag_id | integer | Sim | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/deals/{deal}/tags" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"tag_id":1}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"status": "aberto",
"closed": true,
"archived": true,
"predicted_value": 1,
"won_value": 1,
"rating": 1,
"url_origin": null,
"client": {
"id": 1,
"name": "string",
"email": null
},
"funnel": {
"id": 1,
"name": "string"
},
"stage": {
"id": 1,
"name": "string",
"color": null,
"is_won": true,
"is_lost": true
},
"responsible": {
"id": 1,
"name": "string"
},
"origin": {
"id": 1,
"name": "string"
},
"campaign": {
"id": 1,
"name": "string"
},
"store": {
"id": 1,
"name": null
},
"tags": [
{
"id": 1,
"name": "string",
"color": null
}
],
"milestones": [
{
"id": 1,
"name": "string",
"color": null
}
],
"next_appointment_at": "2026-10-20T10:00:00-03:00",
"won_at": "2026-10-20T10:00:00-03:00",
"lost_at": "2026-10-20T10:00:00-03:00",
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/deals/{deal}/finish
Finaliza a negociação
Depois de chegar a uma etapa de ganho (grava o valor ganho e a observação) ou de perda (só a observação). Negócio aberto: 409. Exige `crm:write` e Negócios (editar). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
won_value | number | null | Não | Só no ganho. |
observations | string | null | Não | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/deals/{deal}/finish" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"won_value":1,"observations":null}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"status": "aberto",
"closed": true,
"archived": true,
"predicted_value": 1,
"won_value": 1,
"rating": 1,
"url_origin": null,
"client": {
"id": 1,
"name": "string",
"email": null
},
"funnel": {
"id": 1,
"name": "string"
},
"stage": {
"id": 1,
"name": "string",
"color": null,
"is_won": true,
"is_lost": true
},
"responsible": {
"id": 1,
"name": "string"
},
"origin": {
"id": 1,
"name": "string"
},
"campaign": {
"id": 1,
"name": "string"
},
"store": {
"id": 1,
"name": null
},
"tags": [
{
"id": 1,
"name": "string",
"color": null
}
],
"milestones": [
{
"id": 1,
"name": "string",
"color": null
}
],
"next_appointment_at": "2026-10-20T10:00:00-03:00",
"won_at": "2026-10-20T10:00:00-03:00",
"lost_at": "2026-10-20T10:00:00-03:00",
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/deals/{deal}/archive
Arquiva o negócio
O negócio sai do kanban e da lista. Já arquivado: 409. Exige `crm:write` e Negócios (editar). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/deals/{deal}/archive" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"status": "aberto",
"closed": true,
"archived": true,
"predicted_value": 1,
"won_value": 1,
"rating": 1,
"url_origin": null,
"client": {
"id": 1,
"name": "string",
"email": null
},
"funnel": {
"id": 1,
"name": "string"
},
"stage": {
"id": 1,
"name": "string",
"color": null,
"is_won": true,
"is_lost": true
},
"responsible": {
"id": 1,
"name": "string"
},
"origin": {
"id": 1,
"name": "string"
},
"campaign": {
"id": 1,
"name": "string"
},
"store": {
"id": 1,
"name": null
},
"tags": [
{
"id": 1,
"name": "string",
"color": null
}
],
"milestones": [
{
"id": 1,
"name": "string",
"color": null
}
],
"next_appointment_at": "2026-10-20T10:00:00-03:00",
"won_at": "2026-10-20T10:00:00-03:00",
"lost_at": "2026-10-20T10:00:00-03:00",
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/deals/{deal}/unarchive
Desarquiva o negócio
Não arquivado: 409. Exige `crm:write` e Negócios (editar). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/deals/{deal}/unarchive" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"status": "aberto",
"closed": true,
"archived": true,
"predicted_value": 1,
"won_value": 1,
"rating": 1,
"url_origin": null,
"client": {
"id": 1,
"name": "string",
"email": null
},
"funnel": {
"id": 1,
"name": "string"
},
"stage": {
"id": 1,
"name": "string",
"color": null,
"is_won": true,
"is_lost": true
},
"responsible": {
"id": 1,
"name": "string"
},
"origin": {
"id": 1,
"name": "string"
},
"campaign": {
"id": 1,
"name": "string"
},
"store": {
"id": 1,
"name": null
},
"tags": [
{
"id": 1,
"name": "string",
"color": null
}
],
"milestones": [
{
"id": 1,
"name": "string",
"color": null
}
],
"next_appointment_at": "2026-10-20T10:00:00-03:00",
"won_at": "2026-10-20T10:00:00-03:00",
"lost_at": "2026-10-20T10:00:00-03:00",
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/deals/{deal}/reopen
Reabre o negócio
Negócio finalizado ou arquivado volta a ser negociação em andamento. Já aberto: 409. Exige `crm:write` e Negócios (editar). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/deals/{deal}/reopen" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"status": "aberto",
"closed": true,
"archived": true,
"predicted_value": 1,
"won_value": 1,
"rating": 1,
"url_origin": null,
"client": {
"id": 1,
"name": "string",
"email": null
},
"funnel": {
"id": 1,
"name": "string"
},
"stage": {
"id": 1,
"name": "string",
"color": null,
"is_won": true,
"is_lost": true
},
"responsible": {
"id": 1,
"name": "string"
},
"origin": {
"id": 1,
"name": "string"
},
"campaign": {
"id": 1,
"name": "string"
},
"store": {
"id": 1,
"name": null
},
"tags": [
{
"id": 1,
"name": "string",
"color": null
}
],
"milestones": [
{
"id": 1,
"name": "string",
"color": null
}
],
"next_appointment_at": "2026-10-20T10:00:00-03:00",
"won_at": "2026-10-20T10:00:00-03:00",
"lost_at": "2026-10-20T10:00:00-03:00",
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/deals/{deal}/tags/{tag}
Tira uma tag
Negócio sem a tag: 404. Exige `crm:write` e Negócios (editar). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Exemplo de requisição
curl -X DELETE "$MICORE_BASE_URL/crm/deals/{deal}/tags/{tag}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"status": "aberto",
"closed": true,
"archived": true,
"predicted_value": 1,
"won_value": 1,
"rating": 1,
"url_origin": null,
"client": {
"id": 1,
"name": "string",
"email": null
},
"funnel": {
"id": 1,
"name": "string"
},
"stage": {
"id": 1,
"name": "string",
"color": null,
"is_won": true,
"is_lost": true
},
"responsible": {
"id": 1,
"name": "string"
},
"origin": {
"id": 1,
"name": "string"
},
"campaign": {
"id": 1,
"name": "string"
},
"store": {
"id": 1,
"name": null
},
"tags": [
{
"id": 1,
"name": "string",
"color": null
}
],
"milestones": [
{
"id": 1,
"name": "string",
"color": null
}
],
"next_appointment_at": "2026-10-20T10:00:00-03:00",
"won_at": "2026-10-20T10:00:00-03:00",
"lost_at": "2026-10-20T10:00:00-03:00",
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/deals/{deal}/history
Lista o histórico do negócio
Etapas, funil, comentários, marcos, campos, compromissos, propostas, tags, arquivamento e desfecho, do mais recente para o mais antigo, com o texto sem HTML. Exige `crm:read` e Negócios (ver). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/deals/{deal}/history" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"type": "string",
"observation": null,
"key_id": 1,
"previous_key_id": 1,
"author": {
"id": 1,
"name": "string"
},
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
]
}Respostas possíveis
/api/v1/crm/deals/{deal}/comments
Adiciona um comentário
Exige `crm:write` e Negócios (editar). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
text | string | Sim | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/deals/{deal}/comments" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"text":"string"}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"type": "string",
"observation": null,
"key_id": 1,
"previous_key_id": 1,
"author": {
"id": 1,
"name": "string"
},
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/deals/{deal}/comments/{comment}
Edita um comentário
Só linhas de comentário do próprio negócio. Exige `crm:write` e Negócios (editar). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
text | string | Sim | — |
Exemplo de requisição
curl -X PATCH "$MICORE_BASE_URL/crm/deals/{deal}/comments/{comment}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"text":"string"}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"type": "string",
"observation": null,
"key_id": 1,
"previous_key_id": 1,
"author": {
"id": 1,
"name": "string"
},
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/deals/{deal}/milestones
Marca um marco de progresso
Exige `crm:write` e Negócios (editar). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
milestone_id | integer | Sim | — |
observation | string | null | Não | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/deals/{deal}/milestones" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"milestone_id":1,"observation":null}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"status": "aberto",
"closed": true,
"archived": true,
"predicted_value": 1,
"won_value": 1,
"rating": 1,
"url_origin": null,
"client": {
"id": 1,
"name": "string",
"email": null
},
"funnel": {
"id": 1,
"name": "string"
},
"stage": {
"id": 1,
"name": "string",
"color": null,
"is_won": true,
"is_lost": true
},
"responsible": {
"id": 1,
"name": "string"
},
"origin": {
"id": 1,
"name": "string"
},
"campaign": {
"id": 1,
"name": "string"
},
"store": {
"id": 1,
"name": null
},
"tags": [
{
"id": 1,
"name": "string",
"color": null
}
],
"milestones": [
{
"id": 1,
"name": "string",
"color": null
}
],
"next_appointment_at": "2026-10-20T10:00:00-03:00",
"won_at": "2026-10-20T10:00:00-03:00",
"lost_at": "2026-10-20T10:00:00-03:00",
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/deals/{deal}/custom-fields
Lista os campos personalizados do negócio
Exige `crm:read` e Negócios (ver). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/deals/{deal}/custom-fields" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"custom_field": {
"id": 1,
"name": "string"
},
"value": null,
"locked": true
}
]
}Respostas possíveis
/api/v1/crm/deals/{deal}/custom-fields
Liga um campo personalizado
O campo nasce sem valor. Campo já ligado: 409. Exige `crm:write` e Negócios (editar). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
custom_field_id | integer | Sim | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/deals/{deal}/custom-fields" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"custom_field_id":1}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"custom_field": {
"id": 1,
"name": "string"
},
"value": null,
"locked": true
}
}Respostas possíveis
/api/v1/crm/deals/{deal}/custom-fields/{field}
Grava o valor de um campo
Substitui o valor. Campo que veio de uma campanha (`locked`) não é editável: 422. Exige `crm:write` e Negócios (editar). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
value | string | null | Sim | — |
Exemplo de requisição
curl -X PUT "$MICORE_BASE_URL/crm/deals/{deal}/custom-fields/{field}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"value":null}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"custom_field": {
"id": 1,
"name": "string"
},
"value": null,
"locked": true
}
}Respostas possíveis
/api/v1/crm/deals/{deal}/commitments
Lista os compromissos
Do mais próximo para o mais distante. Exige `crm:read` e Negócios (ver). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/deals/{deal}/commitments" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"type": "string",
"title": "string",
"description": null,
"start_at": "2026-10-20T10:00:00-03:00",
"end_at": "2026-10-20T10:00:00-03:00",
"location_type": null,
"meeting_url": null,
"status": "agendada",
"users": [
{
"id": 1,
"name": "string"
}
]
}
]
}Respostas possíveis
/api/v1/crm/deals/{deal}/commitments
Agenda um compromisso
Horário de Brasília; o fim é o início mais a duração em minutos. Exige `crm:write` e Negócios (editar). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
type | string | Sim | — |
title | string | Sim | — |
description | string | null | Não | — |
start_date | string (date) | Sim | — |
start_time | string | Sim | HH:MM, horário de Brasília. |
duration | integer | Sim | Minutos. |
location_type | string | Sim | — |
meeting_url | string | null | Não | — |
users | array<integer> | Sim | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/deals/{deal}/commitments" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"type":"string","title":"string","description":null,"start_date":"2026-10-20","start_time":"string","duration":1,"location_type":"string","meeting_url":null,"users":[1]}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"type": "string",
"title": "string",
"description": null,
"start_at": "2026-10-20T10:00:00-03:00",
"end_at": "2026-10-20T10:00:00-03:00",
"location_type": null,
"meeting_url": null,
"status": "agendada",
"users": [
{
"id": 1,
"name": "string"
}
]
}
}Respostas possíveis
/api/v1/crm/deals/{deal}/commitments/{commitment}/status
Muda a situação do compromisso
Exige `crm:write` e Negócios (editar). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
status | string | Sim | Valores: agendada, reagendada, concluida, ausente, cancelada. |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/deals/{deal}/commitments/{commitment}/status" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"status":"agendada"}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"type": "string",
"title": "string",
"description": null,
"start_at": "2026-10-20T10:00:00-03:00",
"end_at": "2026-10-20T10:00:00-03:00",
"location_type": null,
"meeting_url": null,
"status": "agendada",
"users": [
{
"id": 1,
"name": "string"
}
]
}
}Respostas possíveis
/api/v1/crm/deals/{deal}/proposals
Lista as propostas
Da mais recente para a mais antiga. Exige `crm:read` e Negócios (ver). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/deals/{deal}/proposals" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"proposal_type": "string",
"title": "string",
"amount": 1,
"proposal_link": null,
"send_date": null,
"validity_days": 1,
"status": "pendente",
"notes": null,
"created_at": "2026-10-20T10:00:00-03:00"
}
]
}Respostas possíveis
/api/v1/crm/deals/{deal}/proposals
Registra uma proposta
Exige `crm:write` e Negócios (editar). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
proposal_type | string | Sim | — |
title | string | Sim | — |
amount | number | Sim | — |
proposal_link | string | null | Não | — |
send_date | string | null (date) | Não | — |
validity_days | integer | null | Não | — |
notes | string | null | Não | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/deals/{deal}/proposals" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"proposal_type":"string","title":"string","amount":1,"proposal_link":null,"send_date":"2026-10-20","validity_days":1,"notes":null}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"proposal_type": "string",
"title": "string",
"amount": 1,
"proposal_link": null,
"send_date": null,
"validity_days": 1,
"status": "pendente",
"notes": null,
"created_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/deals/{deal}/proposals/{proposal}/status
Muda a situação da proposta
Exige `crm:write` e Negócios (editar). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
status | string | Sim | Valores: pendente, enviada, aprovada, recusada. |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/deals/{deal}/proposals/{proposal}/status" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"status":"pendente"}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"proposal_type": "string",
"title": "string",
"amount": 1,
"proposal_link": null,
"send_date": null,
"validity_days": 1,
"status": "pendente",
"notes": null,
"created_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/deals/{deal}/files
Lista os arquivos do negócio
Arquivos ativos com link temporário de 60 minutos. Exige `crm:read` e Negócios (ver). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/deals/{deal}/files" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"name": "string",
"file_name": "string",
"extension": null,
"url": "string",
"created_at": "2026-10-20T10:00:00-03:00"
}
]
}Respostas possíveis
/api/v1/crm/deals/{deal}/files
Envia um arquivo
Exige `crm:write` e Negócios (editar). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/deals/{deal}/files" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"file_name": "string",
"extension": null,
"url": "string",
"created_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/deals/{deal}/files/{file}
Remove um arquivo
Desativa o arquivo; já removido: 404. Exige `crm:write` e Negócios (editar). Negócio fora do alcance do usuário responde 404, sem revelar que existe.
Exemplo de requisição
curl -X DELETE "$MICORE_BASE_URL/crm/deals/{deal}/files/{file}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Respostas possíveis
/api/v1/crm/leads
Recebe um lead de fora
Mesma regra da entrada legada `POST /api/crm/leads`: localiza o cliente por e-mail, telefone, CPF ou CNPJ (ou cria), liga os contatos e cria o negócio na primeira etapa do funil ou soma a captação ao negócio aberto do cliente nesse funil. Dados de clientes diferentes ou funil sem etapa ativa: 422. Exige `crm:import` e Negócios (criar).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | null | Não | — |
email | string | null (email) | Não | — |
phone | string | null | Não | Só dígitos, 10 a 15. |
cpf | string | null | Não | — |
cnpj | string | null | Não | — |
funnel_id | integer | Sim | — |
origin_id | integer | Sim | — |
store_id | integer | null | Não | — |
campaign_id | integer | null | Não | — |
observation | string | null | Não | — |
url_origin | string | null | Não | — |
rating | integer | null | Não | — |
metadata | object | null | Não | Até 50 pares de valor simples. |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/leads" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"name":null,"email":null,"phone":null,"cpf":null,"cnpj":null,"funnel_id":1,"origin_id":1,"store_id":1,"campaign_id":1,"observation":null,"url_origin":null,"rating":1,"metadata":[]}'Exemplo de resposta JSON
{
"data": {
"business_id": 1,
"client_id": 1,
"action": "created"
}
}Respostas possíveis
/api/v1/crm/lead-imports
Valida uma planilha de leads
Envia o CSV (nome, e-mail, telefone, formulário, id externo, data e URL de origem) e devolve a prévia validada, sem gravar os leads. A confirmação usa o `import_id` da prévia. Exige `crm:import` e Importação de Leads (ver).
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/lead-imports" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": []
}Respostas possíveis
/api/v1/crm/lead-imports/{import}
Consulta o progresso da importação
Exige `crm:import` e Importação de Leads (ver).
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/lead-imports/{import}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": []
}Respostas possíveis
/api/v1/crm/lead-imports/{import}/start
Confirma a importação
Põe as linhas válidas da prévia na fila (uma vez só). Sem prévia válida ou já iniciada: 409. Exige `crm:import` e Importação de Leads (criar).
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/lead-imports/{import}/start" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": []
}Respostas possíveis
/api/v1/crm/funnels
Lista os funis de venda
Funis pelo nome, com gestor e time. Exige `crm:read` e Funis de Venda (ver). Só os funis do alcance do usuário (gestor ou membro do time; o administrador geral e quem tem Funis de Venda (editar) veem todos).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
activequery | boolean | Não | Filtra pela situação. |
searchquery | string | Não | Busca pelo nome. |
per_pagequery | integer | Não | — |
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/funnels" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"name": "string",
"description": null,
"manager": {
"id": 1,
"name": "string"
},
"sellers": [
{
"id": 1,
"name": "string"
}
],
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"links": [],
"meta": []
}Respostas possíveis
/api/v1/crm/funnels
Cria um funil de venda
Cria o funil com o time (`sellers_id`) e as oito etapas padrão, como a tela. Exige `crm:settings` e Funis de Venda (criar).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Até 255 caracteres. |
manager_id | integer | Sim | Gestor do funil. |
description | string | null | Não | — |
position | integer | null | Não | — |
sellers_id | array<integer> | Não | Time do funil. |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/funnels" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"name":"string","manager_id":1,"description":null,"position":1,"sellers_id":[1]}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"description": null,
"manager": {
"id": 1,
"name": "string"
},
"sellers": [
{
"id": 1,
"name": "string"
}
],
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/funnels/{funnel}
Consulta um funil
Exige `crm:read` e Funis de Venda (ver). Funil fora do alcance do usuário responde 404.
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/funnels/{funnel}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"description": null,
"manager": {
"id": 1,
"name": "string"
},
"sellers": [
{
"id": 1,
"name": "string"
}
],
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/funnels/{funnel}
Edita um funil
Edição parcial: o campo omitido fica como está. O time só muda quando `sellers_id` vem (lista vazia remove o time). Exige `crm:settings` e Funis de Venda (editar). Funil fora do alcance do usuário responde 404.
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Não | Até 255 caracteres. |
manager_id | integer | Não | — |
description | string | null | Não | — |
position | integer | null | Não | — |
sellers_id | array<integer> | Não | Substitui o time; lista vazia remove o time. |
Exemplo de requisição
curl -X PATCH "$MICORE_BASE_URL/crm/funnels/{funnel}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name":"string","manager_id":1,"description":null,"position":1,"sellers_id":[1]}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"description": null,
"manager": {
"id": 1,
"name": "string"
},
"sellers": [
{
"id": 1,
"name": "string"
}
],
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/funnels/{funnel}/activate
Ativa um funil
Ativa o funil (desativar registra quem arquivou). Exige `crm:settings` e Funis de Venda (desabilitar). Funil fora do alcance do usuário responde 404.
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/funnels/{funnel}/activate" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"description": null,
"manager": {
"id": 1,
"name": "string"
},
"sellers": [
{
"id": 1,
"name": "string"
}
],
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/funnels/{funnel}/deactivate
Desativa um funil
Desativa o funil (desativar registra quem arquivou). Exige `crm:settings` e Funis de Venda (desabilitar). Funil fora do alcance do usuário responde 404.
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/funnels/{funnel}/deactivate" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"description": null,
"manager": {
"id": 1,
"name": "string"
},
"sellers": [
{
"id": 1,
"name": "string"
}
],
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/funnels/{funnel}/stages
Lista as etapas do funil
Etapas na ordem do funil. Exige `crm:read` e Etapas de Funis (ver). Funil fora do alcance do usuário responde 404.
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/funnels/{funnel}/stages" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"funnel_id": 1,
"name": "string",
"description": null,
"position": 1,
"color": null,
"info_date": true,
"is_won": true,
"is_lost": true,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
]
}Respostas possíveis
/api/v1/crm/funnels/{funnel}/stages
Cria uma etapa no funil
A etapa entra no fim do próprio funil. Uma etapa não pode ser ganha e perdida ao mesmo tempo (422). Exige `crm:settings` e Etapas de Funis (criar). Funil fora do alcance do usuário responde 404.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Até 255 caracteres. |
color | string | Sim | Até 20 caracteres. |
description | string | null | Não | — |
info_date | boolean | Não | — |
is_won | boolean | Não | — |
is_lost | boolean | Não | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/funnels/{funnel}/stages" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"name":"string","color":"string","description":null,"info_date":true,"is_won":true,"is_lost":true}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"funnel_id": 1,
"name": "string",
"description": null,
"position": 1,
"color": null,
"info_date": true,
"is_won": true,
"is_lost": true,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/funnels/{funnel}/stages/order
Reordena as etapas do funil
Grava a posição de cada etapa enviada; etapas de outro funil são ignoradas. Exige `crm:settings` e Etapas de Funis (editar). Funil fora do alcance do usuário responde 404.
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
stages | array<object> | Sim | — |
Exemplo de requisição
curl -X PUT "$MICORE_BASE_URL/crm/funnels/{funnel}/stages/order" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"stages":[{"id":1,"order":1}]}'Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"funnel_id": 1,
"name": "string",
"description": null,
"position": 1,
"color": null,
"info_date": true,
"is_won": true,
"is_lost": true,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
]
}Respostas possíveis
/api/v1/crm/stages/{stage}
Consulta uma etapa
Exige `crm:read` e Etapas de Funis (ver). Funil fora do alcance do usuário responde 404.
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/stages/{stage}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"funnel_id": 1,
"name": "string",
"description": null,
"position": 1,
"color": null,
"info_date": true,
"is_won": true,
"is_lost": true,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/stages/{stage}
Edita uma etapa
Edição parcial: o campo omitido fica como está. Ganha e perdida ao mesmo tempo é recusado (422). Exige `crm:settings` e Etapas de Funis (editar). Funil fora do alcance do usuário responde 404.
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Não | Até 255 caracteres. |
color | string | Não | Até 20 caracteres. |
description | string | null | Não | — |
info_date | boolean | Não | — |
is_won | boolean | Não | — |
is_lost | boolean | Não | — |
Exemplo de requisição
curl -X PATCH "$MICORE_BASE_URL/crm/stages/{stage}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name":"string","color":"string","description":null,"info_date":true,"is_won":true,"is_lost":true}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"funnel_id": 1,
"name": "string",
"description": null,
"position": 1,
"color": null,
"info_date": true,
"is_won": true,
"is_lost": true,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/stages/{stage}/activate
Ativa uma etapa
Ativa a etapa. Exige `crm:settings` e Etapas de Funis (desabilitar). Funil fora do alcance do usuário responde 404.
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/stages/{stage}/activate" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"funnel_id": 1,
"name": "string",
"description": null,
"position": 1,
"color": null,
"info_date": true,
"is_won": true,
"is_lost": true,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/stages/{stage}/deactivate
Desativa uma etapa
Desativa a etapa. Exige `crm:settings` e Etapas de Funis (desabilitar). Funil fora do alcance do usuário responde 404.
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/stages/{stage}/deactivate" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"funnel_id": 1,
"name": "string",
"description": null,
"position": 1,
"color": null,
"info_date": true,
"is_won": true,
"is_lost": true,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/milestones
Lista marcos de progresso
Exige `crm:read` e Marcos de Progresso (ver).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
activequery | boolean | Não | Filtra pela situação. |
searchquery | string | Não | Busca pelo nome. |
per_pagequery | integer | Não | — |
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/milestones" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"name": "string",
"color": null,
"icon": null,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"links": [],
"meta": []
}Respostas possíveis
/api/v1/crm/milestones
Cria um marco de progresso
Exige `crm:settings` e Marcos de Progresso (criar).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Até 255 caracteres. |
color | string | null | Não | — |
icon | string | null | Não | Ícone Font Awesome. |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/milestones" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"name":"string","color":null,"icon":null}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"color": null,
"icon": null,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/milestones/{id}
Consulta marco de progresso
Exige `crm:read` e Marcos de Progresso (ver).
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/milestones/{id}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"color": null,
"icon": null,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/milestones/{id}
Edita marco de progresso
Edição parcial: o campo omitido fica como está. Exige `crm:settings` e Marcos de Progresso (editar).
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Não | Até 255 caracteres. |
color | string | null | Não | — |
icon | string | null | Não | — |
Exemplo de requisição
curl -X PATCH "$MICORE_BASE_URL/crm/milestones/{id}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name":"string","color":null,"icon":null}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"color": null,
"icon": null,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/milestones/{id}/activate
Ativa marco de progresso
Ativa o registro (desativar registra quem arquivou). Exige `crm:settings` e Marcos de Progresso (desabilitar).
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/milestones/{id}/activate" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"color": null,
"icon": null,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/milestones/{id}/deactivate
Desativa marco de progresso
Desativa o registro (desativar registra quem arquivou). Exige `crm:settings` e Marcos de Progresso (desabilitar).
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/milestones/{id}/deactivate" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"color": null,
"icon": null,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/campaigns
Lista campanhas do CRM
Exige `crm:read` e Campanhas do CRM (ver).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
activequery | boolean | Não | Filtra pela situação. |
searchquery | string | Não | Busca pelo nome. |
per_pagequery | integer | Não | — |
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/campaigns" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"name": "string",
"description": null,
"start": "2026-10-20",
"end": "2026-10-20",
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"links": [],
"meta": []
}Respostas possíveis
/api/v1/crm/campaigns
Cria uma campanha
Exige `crm:settings` e Campanhas do CRM (criar).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Até 255 caracteres. |
description | string | null | Não | — |
start | string | null (date) | Não | — |
end | string | null (date) | Não | Igual ou depois do início. |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/campaigns" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"name":"string","description":null,"start":"2026-10-20","end":"2026-10-20"}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"description": null,
"start": "2026-10-20",
"end": "2026-10-20",
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/campaigns/{id}
Consulta campanha
Exige `crm:read` e Campanhas do CRM (ver).
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/campaigns/{id}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"description": null,
"start": "2026-10-20",
"end": "2026-10-20",
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/campaigns/{id}
Edita campanha
Edição parcial: o campo omitido fica como está. Exige `crm:settings` e Campanhas do CRM (editar).
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Não | Até 255 caracteres. |
description | string | null | Não | — |
start | string | null (date) | Não | — |
end | string | null (date) | Não | — |
Exemplo de requisição
curl -X PATCH "$MICORE_BASE_URL/crm/campaigns/{id}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name":"string","description":null,"start":"2026-10-20","end":"2026-10-20"}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"description": null,
"start": "2026-10-20",
"end": "2026-10-20",
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/campaigns/{id}/activate
Ativa campanha
Ativa o registro (desativar registra quem arquivou). Exige `crm:settings` e Campanhas do CRM (desabilitar).
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/campaigns/{id}/activate" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"description": null,
"start": "2026-10-20",
"end": "2026-10-20",
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/campaigns/{id}/deactivate
Desativa campanha
Desativa o registro (desativar registra quem arquivou). Exige `crm:settings` e Campanhas do CRM (desabilitar).
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/campaigns/{id}/deactivate" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"description": null,
"start": "2026-10-20",
"end": "2026-10-20",
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/origins
Lista origens dos leads
Exige `crm:read` e Origens (ver).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
activequery | boolean | Não | Filtra pela situação. |
searchquery | string | Não | Busca pelo nome. |
per_pagequery | integer | Não | — |
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/origins" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"name": "string",
"manual": true,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"links": [],
"meta": []
}Respostas possíveis
/api/v1/crm/origins
Cria uma origem
Exige `crm:settings` e Origens (criar).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Até 255 caracteres. |
manual | boolean | Sim | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/origins" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"name":"string","manual":true}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"manual": true,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/origins/{id}
Consulta origem
Exige `crm:read` e Origens (ver).
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/origins/{id}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"manual": true,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/origins/{id}
Edita origem
Edição parcial: o campo omitido fica como está. Exige `crm:settings` e Origens (editar).
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Não | Até 255 caracteres. |
manual | boolean | Não | — |
Exemplo de requisição
curl -X PATCH "$MICORE_BASE_URL/crm/origins/{id}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name":"string","manual":true}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"manual": true,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/origins/{id}/activate
Ativa origem
Ativa o registro (desativar registra quem arquivou). Exige `crm:settings` e Origens (desabilitar).
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/origins/{id}/activate" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"manual": true,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/origins/{id}/deactivate
Desativa origem
Desativa o registro (desativar registra quem arquivou). Exige `crm:settings` e Origens (desabilitar).
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/origins/{id}/deactivate" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"manual": true,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/custom-fields
Lista campos personalizados
Exige `crm:read` e Campos Personalizados (ver).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
activequery | boolean | Não | Filtra pela situação. |
searchquery | string | Não | Busca pelo nome. |
per_pagequery | integer | Não | — |
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/custom-fields" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"name": "string",
"type": "string",
"placeholder": null,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"links": [],
"meta": []
}Respostas possíveis
/api/v1/crm/custom-fields
Cria um campo personalizado
Exige `crm:settings` e Campos Personalizados (criar). Tipos aceitos: `text`, `number` e `textarea` (área de texto).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Até 100 caracteres. |
type | string | Sim | Valores: text, number, textarea. |
placeholder | string | null | Não | Até 80 caracteres. |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/custom-fields" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"name":"string","type":"text","placeholder":null}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"type": "string",
"placeholder": null,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/custom-fields/{id}
Consulta campo personalizado
Exige `crm:read` e Campos Personalizados (ver).
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/custom-fields/{id}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"type": "string",
"placeholder": null,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/custom-fields/{id}
Edita campo personalizado
Edição parcial: o campo omitido fica como está. Exige `crm:settings` e Campos Personalizados (editar).
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Não | Até 100 caracteres. |
type | string | Não | Valores: text, number, textarea. |
placeholder | string | null | Não | Até 80 caracteres. |
Exemplo de requisição
curl -X PATCH "$MICORE_BASE_URL/crm/custom-fields/{id}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name":"string","type":"text","placeholder":null}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"type": "string",
"placeholder": null,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/custom-fields/{id}/activate
Ativa campo personalizado
Ativa o registro (desativar registra quem arquivou). Exige `crm:settings` e Campos Personalizados (desabilitar).
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/custom-fields/{id}/activate" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"type": "string",
"placeholder": null,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/custom-fields/{id}/deactivate
Desativa campo personalizado
Desativa o registro (desativar registra quem arquivou). Exige `crm:settings` e Campos Personalizados (desabilitar).
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/custom-fields/{id}/deactivate" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"type": "string",
"placeholder": null,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/tags
Lista tags dos negócios
Exige `crm:read` e Tags (ver). Só as tags dos funis do alcance do usuário; tag de funil de fora responde 404.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
activequery | boolean | Não | Filtra pela situação. |
searchquery | string | Não | Busca pelo nome. |
per_pagequery | integer | Não | — |
funnel_idquery | integer | Não | Tags do funil informado. |
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/tags" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"funnel_id": 1,
"name": "string",
"slug": "string",
"color": null,
"description": null,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"links": [],
"meta": []
}Respostas possíveis
/api/v1/crm/tags
Cria uma tag
Exige `crm:settings` e Tags (criar). A tag ganha um identificador (`slug`) único pelo nome.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
funnel_id | integer | Sim | — |
name | string | Sim | Até 255 caracteres. |
color | string | null | Não | — |
description | string | null | Não | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/tags" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"funnel_id":1,"name":"string","color":null,"description":null}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"funnel_id": 1,
"name": "string",
"slug": "string",
"color": null,
"description": null,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/tags/{id}
Consulta tag
Exige `crm:read` e Tags (ver). Só as tags dos funis do alcance do usuário; tag de funil de fora responde 404.
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/tags/{id}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"funnel_id": 1,
"name": "string",
"slug": "string",
"color": null,
"description": null,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/tags/{id}
Edita tag
Edição parcial: o campo omitido fica como está. O funil da tag não muda. Exige `crm:settings` e Tags (editar).
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Não | Até 255 caracteres. |
color | string | null | Não | — |
description | string | null | Não | — |
Exemplo de requisição
curl -X PATCH "$MICORE_BASE_URL/crm/tags/{id}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name":"string","color":null,"description":null}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"funnel_id": 1,
"name": "string",
"slug": "string",
"color": null,
"description": null,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/tags/{id}/activate
Ativa tag
Ativa o registro (desativar registra quem arquivou). Exige `crm:settings` e Tags (desabilitar).
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/tags/{id}/activate" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"funnel_id": 1,
"name": "string",
"slug": "string",
"color": null,
"description": null,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/tags/{id}/deactivate
Desativa tag
Desativa o registro (desativar registra quem arquivou). Exige `crm:settings` e Tags (desabilitar).
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/crm/tags/{id}/deactivate" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"funnel_id": 1,
"name": "string",
"slug": "string",
"color": null,
"description": null,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/crm/funnels/{funnel}/goals
Consulta as metas do ano
Meta de vendas de cada mês do ano no funil (mês sem meta vem nulo). Exige `crm:read` e Metas de CRM (ver). Funil fora do alcance do usuário responde 404.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
yearquery | integer | Não | Ano; sem ele o atual. |
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/funnels/{funnel}/goals" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"funnel_id": 1,
"year": 1,
"months": [
{
"month": 1,
"value": 1
}
]
}
}Respostas possíveis
/api/v1/crm/funnels/{funnel}/goals/{year}/{month}
Grava a meta de um mês
Substitui a meta de vendas do mês. Exige `crm:settings` e Metas de CRM (editar). Funil fora do alcance do usuário responde 404.
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
value | number | Sim | Meta de vendas do mês em reais. |
Exemplo de requisição
curl -X PUT "$MICORE_BASE_URL/crm/funnels/{funnel}/goals/{year}/{month}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"value":1}'Exemplo de resposta JSON
{
"data": {
"funnel_id": 1,
"year": 1,
"months": [
{
"month": 1,
"value": 1
}
]
}
}Respostas possíveis
/api/v1/crm/reports/funnel
Relatório do funil
Os mesmos números da aba Funil da tela de relatórios: leads, vendas e perdas por dia, conversão e valor ganho, leads por origem, por atendente e por etapa. Sem funil, usa o primeiro ativo pelo nome. Exige `crm:read` e Relatórios de CRM (ver funil). Só funis do alcance do usuário; sem `funnel_id`, o primeiro funil ativo do alcance; funil de fora responde 404.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
periodquery | string | Não | Hoje e últimos 7, 30 ou 90 dias. |
funnel_idquery | integer | Não | — |
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/reports/funnel" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"period": "string",
"date_start": "2026-10-20",
"date_end": "2026-10-20",
"funnel_id": 1,
"leads": {
"categories": [
"string"
],
"series": [
{
"name": "string",
"data": [
1
]
}
]
},
"sales_and_conversion": {
"categories": [
"string"
],
"series": [
{
"name": "string",
"data": [
1
]
}
],
"leads": 1,
"vendas": 1,
"valor_total_vendas": 1,
"taxa_conversao": 1
},
"leads_by_origin": {
"labels": [
"string"
],
"data": [
1
]
},
"leads_by_attendant": {
"categories": [
"string"
],
"leads": [
1
],
"vendas": [
1
]
},
"customer_journey": {
"labels": [
"string"
],
"data": [
1
],
"colors": [
"string"
]
}
}
}Respostas possíveis
/api/v1/crm/reports/goals
Relatório de metas
Metas e vendas ganhas por mês do ano, total e taxa de execução, como a aba Metas da tela. Exige `crm:read` e Relatórios de CRM (ver metas). Só funis do alcance do usuário; sem `funnel_id`, o primeiro funil ativo do alcance; funil de fora responde 404.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
funnel_idquery | integer | Não | — |
yearquery | integer | Não | Ano; sem ele o atual. |
Exemplo de requisição
curl "$MICORE_BASE_URL/crm/reports/goals" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"funnel_id": 1,
"year": 1,
"categories": [
"string"
],
"series": [
{
"name": "string",
"data": [
1
]
}
],
"total_meta": 1,
"total_vendas": 1,
"taxa_execucao": 1
}
}