O que é

Campanhas é onde a empresa fala com muitos contatos de uma vez. As listas de contatos reúnem o público (clientes, um funil do CRM, uma planilha ou contatos avulsos); a campanha dispara mensagens por WhatsApp (template aprovado) e e-mail para essas listas, na hora ou agendado; e as notificações do app da loja chegam no celular de quem tem o app.

Pela API, tudo o que a tela faz, com as mesmas permissões de quem usa.

O que dá para fazer hoje

  • Criar, editar, desativar e reativar listas de contatos e montar o público por clientes, funil do CRM, planilha ou contato avulso.
  • Contar o público das listas sem repetir contatos.
  • Criar, desativar e reativar campanhas e disparar por WhatsApp e e-mail, na hora, agendado ou como rascunho.
  • Acompanhar o desfecho de cada destinatário do disparo.
  • Criar, enviar, agendar e cancelar notificações do app da loja, com envio de teste.

Ciclo do disparo

SituaçãoSignificado
draftSó a configuração, sem envio
pending ou scheduledNa fila, agora ou no horário
DestinatáriosPendente, enviado, entregue, lido, falhou ou descadastrado

Importante

  • Disparar e enviar notificação são ações próprias e exigem campaigns:dispatch.
  • Toda criação e ação exige Idempotency-Key.
  • Quem cancelou a inscrição de marketing é pulado no envio.
  • WhatsApp só com template aprovado do número.

Disponibilidade na API

Endpoints de Campanhas

Monte listas de contatos, dispare campanhas por WhatsApp e e-mail e envie notificações do app. Os exemplos abaixo são gerados pelo contrato OpenAPI oficial.

GET /api/v1/contact-lists

Lista as listas de contatos

Listas ativas com o total de contatos. Exige `campaigns:read` e Campanhas (ver).

Parâmetros

NomeTipoObrigatórioDescrição
searchquerystringNãoParte do nome.
per_pagequeryintegerNãoItens por página.

Exemplo de requisição

cURL
curl "$MICORE_BASE_URL/contact-lists" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "data": [
        {
            "id": 1,
            "name": "string",
            "description": null,
            "contacts_count": 1,
            "audience": {
                "whatsapp": 1,
                "email": 1
            },
            "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

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /api/v1/contact-lists

Cria uma lista de contatos

Cria a lista só com nome e descrição; o público é montado pelos contatos. Exige `campaigns:write` e Campanhas (criar).

Parâmetros

NomeTipoObrigatórioDescrição
Idempotency-KeyheaderstringSimIdentificador ú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

CampoTipoObrigatórioDescrição
namestringSimAté 255 caracteres.
descriptionstring | nullNãoAté 1000 caracteres.

Exemplo de requisição

cURL
curl -X POST "$MICORE_BASE_URL/contact-lists" \
  -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}'

Exemplo de resposta JSON

Resposta · 201
{
    "data": {
        "id": 1,
        "name": "string",
        "description": null,
        "contacts_count": 1,
        "audience": {
            "whatsapp": 1,
            "email": 1
        },
        "active": true,
        "created_at": "2026-10-20T10:00:00-03:00",
        "updated_at": "2026-10-20T10:00:00-03:00"
    }
}

Respostas possíveis

201 Lista criada (ou reapresentada pela mesma chave)401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado409 Chave em processamento ou reutilizada com outro conteúdo, ou ação não permitida no estado atual do recurso (`invalid_transition`)422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
GET /api/v1/contact-lists/audience-count

Conta o público das listas

Quantos contatos ativos de cada canal (e-mail e WhatsApp) as listas alcançam, sem repetir quem está em mais de uma. Exige `campaigns:read`.

Parâmetros

NomeTipoObrigatórioDescrição
list_ids[]queryarray<integer>SimListas do público.

Exemplo de requisição

cURL
curl "$MICORE_BASE_URL/contact-lists/audience-count" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "whatsapp": 1,
        "email": 1
    }
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
GET /api/v1/contact-lists/{list}

Consulta uma lista

Lista ativa com o total de contatos e o público por canal. Exige `campaigns:read`.

Exemplo de requisição

cURL
curl "$MICORE_BASE_URL/contact-lists/{list}" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "id": 1,
        "name": "string",
        "description": null,
        "contacts_count": 1,
        "audience": {
            "whatsapp": 1,
            "email": 1
        },
        "active": true,
        "created_at": "2026-10-20T10:00:00-03:00",
        "updated_at": "2026-10-20T10:00:00-03:00"
    }
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
PATCH /api/v1/contact-lists/{list}

Edita uma lista

Edição parcial de nome e descrição; o campo omitido fica como está. Exige `campaigns:write` e Campanhas (editar).

Corpo da requisição

CampoTipoObrigatórioDescrição
namestringNãoAté 255 caracteres.
descriptionstring | nullNãoAté 1000 caracteres.

Exemplo de requisição

cURL
curl -X PATCH "$MICORE_BASE_URL/contact-lists/{list}" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"name":"string","description":null}'

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "id": 1,
        "name": "string",
        "description": null,
        "contacts_count": 1,
        "audience": {
            "whatsapp": 1,
            "email": 1
        },
        "active": true,
        "created_at": "2026-10-20T10:00:00-03:00",
        "updated_at": "2026-10-20T10:00:00-03:00"
    }
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /api/v1/contact-lists/{list}/deactivate

Desativa uma lista

A lista sai da listagem e da escolha de público dos disparos. Exige `campaigns:write` e Campanhas (desabilitar).

Exemplo de requisição

cURL
curl -X POST "$MICORE_BASE_URL/contact-lists/{list}/deactivate" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "id": 1,
        "name": "string",
        "description": null,
        "contacts_count": 1,
        "audience": {
            "whatsapp": 1,
            "email": 1
        },
        "active": true,
        "created_at": "2026-10-20T10:00:00-03:00",
        "updated_at": "2026-10-20T10:00:00-03:00"
    }
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
GET /api/v1/contact-lists/{list}/contacts

Lista os contatos da lista

Contatos com vínculo ativo, com filtro por canal e busca pelo nome ou identificador. Exige `campaigns:read`.

Parâmetros

NomeTipoObrigatórioDescrição
typequerystringNãoCanal.
searchquerystringNãoNome, e-mail ou telefone.
per_pagequeryintegerNãoItens por página.

Exemplo de requisição

cURL
curl "$MICORE_BASE_URL/contact-lists/{list}/contacts" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "data": [
        {
            "id": 1,
            "type": "whatsapp",
            "send_id": "string",
            "name": null,
            "active": true
        }
    ],
    "links": [],
    "meta": []
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /api/v1/contact-lists/{list}/contacts

Adiciona um contato à lista

Cadastra (ou reativa) o contato pelo canal e valor e soma à lista. E-mail precisa ser válido; WhatsApp, ter dígitos. Exige `campaigns:write` e Campanhas (editar).

Parâmetros

NomeTipoObrigatórioDescrição
Idempotency-KeyheaderstringSimIdentificador ú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

CampoTipoObrigatórioDescrição
typestringSimValores: whatsapp, email.
valuestringSimE-mail ou telefone (com ou sem máscara).
namestringSim—

Exemplo de requisição

cURL
curl -X POST "$MICORE_BASE_URL/contact-lists/{list}/contacts" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json" \
  -H "Idempotency-Key: board-request-0001" \
  -H "Content-Type: application/json" \
  -d '{"type":"whatsapp","value":"string","name":"string"}'

Exemplo de resposta JSON

Resposta · 201
{
    "data": {
        "id": 1,
        "type": "whatsapp",
        "send_id": "string",
        "name": null,
        "active": true
    }
}

Respostas possíveis

201 Contato adicionado401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado409 Chave em processamento ou reutilizada com outro conteúdo, ou ação não permitida no estado atual do recurso (`invalid_transition`)422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /api/v1/contact-lists/{list}/contacts/clients

Adiciona os contatos de clientes

Soma à lista os e-mails e WhatsApps ativos dos clientes. Cliente inativo ou sem e-mail e WhatsApp ativo recusa o lote (422). O resumo do vínculo vem em `meta`. Exige `campaigns:write` e Campanhas (editar).

Parâmetros

NomeTipoObrigatórioDescrição
Idempotency-KeyheaderstringSimIdentificador ú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

CampoTipoObrigatórioDescrição
client_idsarray<integer>Sim—

Exemplo de requisição

cURL
curl -X POST "$MICORE_BASE_URL/contact-lists/{list}/contacts/clients" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json" \
  -H "Idempotency-Key: board-request-0001" \
  -H "Content-Type: application/json" \
  -d '{"client_ids":[1]}'

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "id": 1,
        "name": "string",
        "description": null,
        "contacts_count": 1,
        "audience": {
            "whatsapp": 1,
            "email": 1
        },
        "active": true,
        "created_at": "2026-10-20T10:00:00-03:00",
        "updated_at": "2026-10-20T10:00:00-03:00"
    },
    "meta": {
        "added": 1,
        "reactivated": 1,
        "existing": 1,
        "clients": 1
    }
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado409 Chave em processamento ou reutilizada com outro conteúdo, ou ação não permitida no estado atual do recurso (`invalid_transition`)422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /api/v1/contact-lists/{list}/contacts/crm

Adiciona os contatos de um funil do CRM

Soma à lista os contatos ativos dos clientes com negócio no funil (e na etapa, quando informada). Segmento vazio: 422. Quantos entraram vem em `meta.added`. Exige `campaigns:write` e Campanhas (editar).

Parâmetros

NomeTipoObrigatórioDescrição
Idempotency-KeyheaderstringSimIdentificador ú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

CampoTipoObrigatórioDescrição
funnel_idintegerSim—
stage_idinteger | nullNão—

Exemplo de requisição

cURL
curl -X POST "$MICORE_BASE_URL/contact-lists/{list}/contacts/crm" \
  -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

Resposta · 200
{
    "data": {
        "id": 1,
        "name": "string",
        "description": null,
        "contacts_count": 1,
        "audience": {
            "whatsapp": 1,
            "email": 1
        },
        "active": true,
        "created_at": "2026-10-20T10:00:00-03:00",
        "updated_at": "2026-10-20T10:00:00-03:00"
    },
    "meta": {
        "added": 1
    }
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado409 Chave em processamento ou reutilizada com outro conteúdo, ou ação não permitida no estado atual do recurso (`invalid_transition`)422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /api/v1/contact-lists/{list}/contacts/import

Importa contatos de um CSV

Arquivo .csv de até 2 MB, com `nome;contato` ou só `contato` por linha (cabeçalho opcional; ponto e vírgula ou vírgula). E-mail é reconhecido pela arroba; telefone precisa de 10 dígitos ou mais. Linhas inválidas são ignoradas; nenhum contato válido: 422. Quantos entraram vem em `meta.imported`. Exige `campaigns:write` e Campanhas (editar).

Parâmetros

NomeTipoObrigatórioDescrição
Idempotency-KeyheaderstringSimIdentificador ú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

CampoTipoObrigatórioDescrição
filestring (binary)SimCSV de até 2 MB.

Exemplo de requisição

cURL
curl -X POST "$MICORE_BASE_URL/contact-lists/{list}/contacts/import" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json" \
  -H "Idempotency-Key: board-request-0001" \
  -H "Content-Type: application/json" \
  -d '{"file":"string"}'

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "id": 1,
        "name": "string",
        "description": null,
        "contacts_count": 1,
        "audience": {
            "whatsapp": 1,
            "email": 1
        },
        "active": true,
        "created_at": "2026-10-20T10:00:00-03:00",
        "updated_at": "2026-10-20T10:00:00-03:00"
    },
    "meta": {
        "imported": 1
    }
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado409 Chave em processamento ou reutilizada com outro conteúdo, ou ação não permitida no estado atual do recurso (`invalid_transition`)422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
DELETE /api/v1/contact-lists/{list}/contacts/{contact}

Tira um contato da lista

O contato continua no cadastro. Exige `campaigns:write` e Campanhas (editar).

Exemplo de requisição

cURL
curl -X DELETE "$MICORE_BASE_URL/contact-lists/{list}/contacts/{contact}" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Respostas possíveis

204 Contato removido da lista401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
GET /api/v1/marketing-campaigns

Lista as campanhas

Campanhas ativas com os totais de contatos e disparos. Exige `campaigns:read` e Campanhas (ver).

Parâmetros

NomeTipoObrigatórioDescrição
searchquerystringNãoParte do nome.
per_pagequeryintegerNãoItens por página.

Exemplo de requisição

cURL
curl "$MICORE_BASE_URL/marketing-campaigns" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "data": [
        {
            "id": 1,
            "name": "string",
            "description": null,
            "contacts_count": 1,
            "shots_count": 1,
            "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

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /api/v1/marketing-campaigns

Cria uma campanha

Cria a campanha só com nome e descrição; canais e público pertencem a cada disparo. Exige `campaigns:write` e Campanhas (criar).

Parâmetros

NomeTipoObrigatórioDescrição
Idempotency-KeyheaderstringSimIdentificador ú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

CampoTipoObrigatórioDescrição
namestringSimAté 255 caracteres.
descriptionstring | nullNãoAté 1000 caracteres.

Exemplo de requisição

cURL
curl -X POST "$MICORE_BASE_URL/marketing-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}'

Exemplo de resposta JSON

Resposta · 201
{
    "data": {
        "id": 1,
        "name": "string",
        "description": null,
        "contacts_count": 1,
        "shots_count": 1,
        "active": true,
        "created_at": "2026-10-20T10:00:00-03:00",
        "updated_at": "2026-10-20T10:00:00-03:00"
    }
}

Respostas possíveis

201 Campanha criada (ou reapresentada pela mesma chave)401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado409 Chave em processamento ou reutilizada com outro conteúdo, ou ação não permitida no estado atual do recurso (`invalid_transition`)422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
GET /api/v1/marketing-campaigns/channels

Lista os canais de disparo

Números de WhatsApp e caixas de e-mail ativas que podem disparar. Exige `campaigns:read`.

Exemplo de requisição

cURL
curl "$MICORE_BASE_URL/marketing-campaigns/channels" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "whatsapp": [
            {
                "id": 1,
                "name": "string"
            }
        ],
        "email": [
            {
                "id": 1,
                "name": "string"
            }
        ]
    }
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
GET /api/v1/marketing-campaigns/whatsapp-templates

Lista os templates de WhatsApp do número

Templates aprovados e ativos do número escolhido. Exige `campaigns:read`.

Parâmetros

NomeTipoObrigatórioDescrição
sac_idqueryintegerSimNúmero de WhatsApp (canal).

Exemplo de requisição

cURL
curl "$MICORE_BASE_URL/marketing-campaigns/whatsapp-templates" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "data": [
        {
            "id": 1,
            "name": "string",
            "language": null
        }
    ]
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
GET /api/v1/marketing-campaigns/whatsapp-templates/{template}/variables

Consulta as variáveis do template

Cabeçalho e corpo com as variáveis ({{1}}, {{2}}...), os exemplos e os campos do cadastro do cliente que podem preenchê-las. Exige `campaigns:read`.

Exemplo de requisição

cURL
curl "$MICORE_BASE_URL/marketing-campaigns/whatsapp-templates/{template}/variables" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "template_id": 1,
        "header_text": null,
        "header_variable_map": [],
        "body_text": null,
        "body_examples": [],
        "body_variable_map": [],
        "field_options": [
            []
        ]
    }
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
GET /api/v1/marketing-campaigns/{campaign}

Consulta uma campanha

Exige `campaigns:read`.

Exemplo de requisição

cURL
curl "$MICORE_BASE_URL/marketing-campaigns/{campaign}" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "id": 1,
        "name": "string",
        "description": null,
        "contacts_count": 1,
        "shots_count": 1,
        "active": true,
        "created_at": "2026-10-20T10:00:00-03:00",
        "updated_at": "2026-10-20T10:00:00-03:00"
    }
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
PATCH /api/v1/marketing-campaigns/{campaign}

Edita uma campanha

Edição parcial de nome e descrição. Exige `campaigns:write` e Campanhas (editar).

Corpo da requisição

CampoTipoObrigatórioDescrição
namestringNãoAté 255 caracteres.
descriptionstring | nullNãoAté 1000 caracteres.

Exemplo de requisição

cURL
curl -X PATCH "$MICORE_BASE_URL/marketing-campaigns/{campaign}" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"name":"string","description":null}'

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "id": 1,
        "name": "string",
        "description": null,
        "contacts_count": 1,
        "shots_count": 1,
        "active": true,
        "created_at": "2026-10-20T10:00:00-03:00",
        "updated_at": "2026-10-20T10:00:00-03:00"
    }
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /api/v1/marketing-campaigns/{campaign}/deactivate

Desativa uma campanha

Exige `campaigns:write` e Campanhas (desabilitar).

Exemplo de requisição

cURL
curl -X POST "$MICORE_BASE_URL/marketing-campaigns/{campaign}/deactivate" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "id": 1,
        "name": "string",
        "description": null,
        "contacts_count": 1,
        "shots_count": 1,
        "active": true,
        "created_at": "2026-10-20T10:00:00-03:00",
        "updated_at": "2026-10-20T10:00:00-03:00"
    }
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
GET /api/v1/marketing-campaigns/{campaign}/contacts

Lista os contatos da campanha

Quem recebeu algum disparo da campanha. Exige `campaigns:read`.

Parâmetros

NomeTipoObrigatórioDescrição
per_pagequeryintegerNãoItens por página.

Exemplo de requisição

cURL
curl "$MICORE_BASE_URL/marketing-campaigns/{campaign}/contacts" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "data": [
        {
            "id": 1,
            "type": "whatsapp",
            "send_id": "string",
            "name": null,
            "active": true
        }
    ],
    "links": [],
    "meta": []
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
DELETE /api/v1/marketing-campaigns/{campaign}/contacts/{contact}

Tira um contato da campanha

Exige `campaigns:write` e Campanhas (editar).

Exemplo de requisição

cURL
curl -X DELETE "$MICORE_BASE_URL/marketing-campaigns/{campaign}/contacts/{contact}" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Respostas possíveis

204 Contato removido401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
GET /api/v1/marketing-campaigns/{campaign}/shots

Lista os disparos da campanha

Do mais recente para o mais antigo, com as listas de origem e o total de destinatários. Exige `campaigns:read`.

Parâmetros

NomeTipoObrigatórioDescrição
per_pagequeryintegerNãoItens por página.

Exemplo de requisição

cURL
curl "$MICORE_BASE_URL/marketing-campaigns/{campaign}/shots" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "data": [
        {
            "id": 1,
            "campaign_id": 1,
            "campaign_identifier": null,
            "channel_type": "whatsapp",
            "status": "string",
            "dispatch_mode": "draft",
            "scheduled_at": "2026-10-20T10:00:00-03:00",
            "whatsapp_template_id": 1,
            "email_template_id": 1,
            "email_integration_account_id": 1,
            "variables": [],
            "lists": [
                {
                    "id": 1,
                    "name": "string"
                }
            ],
            "contacts_count": 1,
            "created_at": "2026-10-20T10:00:00-03:00"
        }
    ],
    "links": [],
    "meta": []
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /api/v1/marketing-campaigns/{campaign}/shots

Dispara a campanha

Cria um disparo por canal ativo (WhatsApp e/ou e-mail) com o público das listas: `now` envia já (um envio por contato, na fila), `scheduled` agenda e `draft` só guarda a configuração. WhatsApp exige template aprovado do número escolhido; canal sem template válido ou sem contatos fica de fora, e nenhum canal válido responde 422. Descadastrados de marketing são pulados no envio. Exige `campaigns:dispatch` e Campanhas (editar).

Parâmetros

NomeTipoObrigatórioDescrição
Idempotency-KeyheaderstringSimIdentificador ú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

CampoTipoObrigatórioDescrição
channelsobjectSim—
list_idsarray<integer>Sim—
dispatch_modestringSimValores: draft, now, scheduled.
scheduled_atstring | null (date-time)Não—
campaign_identifierstring | nullNãoIdentificador opcional para relatórios (ex.: utm). Até 100 caracteres.

Exemplo de requisição

cURL
curl -X POST "$MICORE_BASE_URL/marketing-campaigns/{campaign}/shots" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json" \
  -H "Idempotency-Key: board-request-0001" \
  -H "Content-Type: application/json" \
  -d '{"channels":{"whatsapp":{"enabled":true,"sac_id":1,"template_id":1,"variables":[]},"email":{"enabled":true,"email_template_id":1,"integration_account_id":1,"variables":[]}},"list_ids":[1],"dispatch_mode":"draft","scheduled_at":"2026-10-20T10:00:00-03:00","campaign_identifier":null}'

Exemplo de resposta JSON

Resposta · 201
{
    "data": [
        {
            "id": 1,
            "campaign_id": 1,
            "campaign_identifier": null,
            "channel_type": "whatsapp",
            "status": "string",
            "dispatch_mode": "draft",
            "scheduled_at": "2026-10-20T10:00:00-03:00",
            "whatsapp_template_id": 1,
            "email_template_id": 1,
            "email_integration_account_id": 1,
            "variables": [],
            "lists": [
                {
                    "id": 1,
                    "name": "string"
                }
            ],
            "contacts_count": 1,
            "created_at": "2026-10-20T10:00:00-03:00"
        }
    ]
}

Respostas possíveis

201 Disparos criados (ou reapresentados pela mesma chave)401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado409 Chave em processamento ou reutilizada com outro conteúdo, ou ação não permitida no estado atual do recurso (`invalid_transition`)422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
PUT /api/v1/marketing-campaigns/{campaign}/shots/{shot}

Edita o rascunho do disparo

Substitui a configuração do rascunho (template, variáveis e listas). Com `now` ou `scheduled`, confirma e envia ou agenda; sem contatos do canal nas listas, a configuração fica salva e o disparo continua rascunho (422). Disparo já confirmado: 409. Exige `campaigns:dispatch` e Campanhas (editar).

Parâmetros

NomeTipoObrigatórioDescrição
Idempotency-KeyheaderstringSimIdentificador ú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

CampoTipoObrigatórioDescrição
channelsobjectSim—
list_idsarray<integer>Sim—
dispatch_modestringSimValores: draft, now, scheduled.
scheduled_atstring | null (date-time)Não—
campaign_identifierstring | nullNãoIdentificador opcional para relatórios (ex.: utm). Até 100 caracteres.

Exemplo de requisição

cURL
curl -X PUT "$MICORE_BASE_URL/marketing-campaigns/{campaign}/shots/{shot}" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json" \
  -H "Idempotency-Key: board-request-0001" \
  -H "Content-Type: application/json" \
  -d '{"channels":{"whatsapp":{"enabled":true,"sac_id":1,"template_id":1,"variables":[]},"email":{"enabled":true,"email_template_id":1,"integration_account_id":1,"variables":[]}},"list_ids":[1],"dispatch_mode":"draft","scheduled_at":"2026-10-20T10:00:00-03:00","campaign_identifier":null}'

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "id": 1,
        "campaign_id": 1,
        "campaign_identifier": null,
        "channel_type": "whatsapp",
        "status": "string",
        "dispatch_mode": "draft",
        "scheduled_at": "2026-10-20T10:00:00-03:00",
        "whatsapp_template_id": 1,
        "email_template_id": 1,
        "email_integration_account_id": 1,
        "variables": [],
        "lists": [
            {
                "id": 1,
                "name": "string"
            }
        ],
        "contacts_count": 1,
        "created_at": "2026-10-20T10:00:00-03:00"
    }
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado409 Chave em processamento ou reutilizada com outro conteúdo, ou ação não permitida no estado atual do recurso (`invalid_transition`)422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
GET /api/v1/marketing-campaigns/{campaign}/shots/{shot}/contacts

Lista os destinatários do disparo

Desfecho de cada contato: pendente, agendado, enviando, enviado, entregue, lido, falhou ou descadastrado, com o motivo da falha traduzido quando vem da plataforma. Exige `campaigns:read`.

Exemplo de requisição

cURL
curl "$MICORE_BASE_URL/marketing-campaigns/{campaign}/shots/{shot}/contacts" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "data": [
        {
            "contact_id": 1,
            "name": "string",
            "send_id": null,
            "type": "string",
            "status": "pending",
            "status_label": "string",
            "error_code": null,
            "error_message": null,
            "failed_at": "2026-10-20T10:00:00-03:00"
        }
    ]
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
GET /api/v1/app-notifications

Lista as notificações do app

Notificações do app da loja, da mais recente para a mais antiga. Exige `campaigns:read` e Campanhas (ver).

Parâmetros

NomeTipoObrigatórioDescrição
statusquerystringNãoSituação.
per_pagequeryintegerNãoItens por página.

Exemplo de requisição

cURL
curl "$MICORE_BASE_URL/app-notifications" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "data": [
        {
            "id": 1,
            "title": "string",
            "body": "string",
            "target": {
                "type": "string",
                "id": 1,
                "url": null
            },
            "audience": {
                "type": "string",
                "ids": [
                    1
                ],
                "days": 1
            },
            "has_image": true,
            "ttl_hours": 1,
            "group_mode": "string",
            "status": "draft",
            "status_label": "string",
            "editable": true,
            "scheduled_at": "2026-10-20T10:00:00-03:00",
            "started_at": "2026-10-20T10:00:00-03:00",
            "finished_at": "2026-10-20T10:00:00-03:00",
            "recipients_count": 1,
            "delivered_count": 1,
            "devices_count": 1,
            "opened_count": 1,
            "created_at": "2026-10-20T10:00:00-03:00"
        }
    ],
    "links": [],
    "meta": []
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /api/v1/app-notifications

Cria uma notificação do app

Sempre nasce como rascunho; envie ou agende pela ação `send`. Imagem opcional (JPG, PNG ou WEBP, até 3 MB) por multipart. Exige `campaigns:write` e Campanhas (criar).

Parâmetros

NomeTipoObrigatórioDescrição
Idempotency-KeyheaderstringSimIdentificador ú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

CampoTipoObrigatórioDescrição
titlestringSimAté 65 caracteres.
bodystringSimAté 240 caracteres.
target_typestringSimDestino ao tocar (home, produto, categoria, link...).
target_idinteger | nullNãoProduto ou categoria.
target_urlstring | nullNãoLink https.
audience_typestringSimall, inactive_days ou um grupo por ids.
audience_idsarray<integer>Não—
audience_daysinteger | nullNão—
imagestring (binary)Não—
ttl_hoursinteger | nullNão—
group_modestringSim—

Exemplo de requisição

cURL
curl -X POST "$MICORE_BASE_URL/app-notifications" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json" \
  -H "Idempotency-Key: board-request-0001" \
  -H "Content-Type: application/json" \
  -d '{"title":"string","body":"string","target_type":"string","target_id":1,"target_url":null,"audience_type":"string","audience_ids":[1],"audience_days":1,"image":"string","ttl_hours":1,"group_mode":"string"}'

Exemplo de resposta JSON

Resposta · 201
{
    "data": {
        "id": 1,
        "title": "string",
        "body": "string",
        "target": {
            "type": "string",
            "id": 1,
            "url": null
        },
        "audience": {
            "type": "string",
            "ids": [
                1
            ],
            "days": 1
        },
        "has_image": true,
        "ttl_hours": 1,
        "group_mode": "string",
        "status": "draft",
        "status_label": "string",
        "editable": true,
        "scheduled_at": "2026-10-20T10:00:00-03:00",
        "started_at": "2026-10-20T10:00:00-03:00",
        "finished_at": "2026-10-20T10:00:00-03:00",
        "recipients_count": 1,
        "delivered_count": 1,
        "devices_count": 1,
        "opened_count": 1,
        "created_at": "2026-10-20T10:00:00-03:00"
    }
}

Respostas possíveis

201 Rascunho criado (ou reapresentado pela mesma chave)401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado409 Chave em processamento ou reutilizada com outro conteúdo, ou ação não permitida no estado atual do recurso (`invalid_transition`)422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
GET /api/v1/app-notifications/audience-count

Conta o público da notificação

Quantos clientes com o app o público escolhido alcança agora; escolha incompleta conta zero. Exige `campaigns:read`.

Parâmetros

NomeTipoObrigatórioDescrição
audience_typequerystringNãoTipo de público.
audience_ids[]queryarray<integer>NãoIds do grupo (produtos, categorias, clientes...).
audience_daysqueryintegerNãoDias sem comprar.

Exemplo de requisição

cURL
curl "$MICORE_BASE_URL/app-notifications/audience-count" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "count": 1
    }
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /api/v1/app-notifications/test

Envia um teste

Envia a notificação montada a um cliente só, sem gravar nem contar no envio. Cliente sem o app aberto em nenhum aparelho: 422. Limite de 20 por minuto. Exige `campaigns:dispatch` e Campanhas (criar).

Corpo da requisição

CampoTipoObrigatórioDescrição
client_idintegerSim—
titlestringSim—
bodystringSim—
target_typestringSim—
target_idinteger | nullNão—
target_urlstring | nullNão—
imagestring (binary)Não—
campaign_idinteger | nullNãoUsa a imagem já gravada nesta notificação.
remove_imagebooleanNão—
ttl_hoursinteger | nullNão—
group_modestring | nullNão—

Exemplo de requisição

cURL
curl -X POST "$MICORE_BASE_URL/app-notifications/test" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"client_id":1,"title":"string","body":"string","target_type":"string","target_id":1,"target_url":null,"image":"string","campaign_id":1,"remove_image":true,"ttl_hours":1,"group_mode":null}'

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "devices": 1
    }
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
GET /api/v1/app-notifications/{notification}

Consulta uma notificação do app

Com os números de entrega e abertura. Exige `campaigns:read`.

Exemplo de requisição

cURL
curl "$MICORE_BASE_URL/app-notifications/{notification}" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "id": 1,
        "title": "string",
        "body": "string",
        "target": {
            "type": "string",
            "id": 1,
            "url": null
        },
        "audience": {
            "type": "string",
            "ids": [
                1
            ],
            "days": 1
        },
        "has_image": true,
        "ttl_hours": 1,
        "group_mode": "string",
        "status": "draft",
        "status_label": "string",
        "editable": true,
        "scheduled_at": "2026-10-20T10:00:00-03:00",
        "started_at": "2026-10-20T10:00:00-03:00",
        "finished_at": "2026-10-20T10:00:00-03:00",
        "recipients_count": 1,
        "delivered_count": 1,
        "devices_count": 1,
        "opened_count": 1,
        "created_at": "2026-10-20T10:00:00-03:00"
    }
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
PATCH /api/v1/app-notifications/{notification}

Edita uma notificação do app

Edição parcial enquanto não começou a enviar; o modo não muda (rascunho segue rascunho e agendada mantém o horário). Enviada ou cancelada: 409. Exige `campaigns:write` e Campanhas (editar).

Corpo da requisição

CampoTipoObrigatórioDescrição
titlestringNão—
bodystringNão—
target_typestringNão—
target_idinteger | nullNão—
target_urlstring | nullNão—
audience_typestringNão—
audience_idsarray<integer>Não—
audience_daysinteger | nullNão—
imagestring (binary)Não—
remove_imagebooleanNão—
ttl_hoursinteger | nullNão—
group_modestringNão—

Exemplo de requisição

cURL
curl -X PATCH "$MICORE_BASE_URL/app-notifications/{notification}" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"title":"string","body":"string","target_type":"string","target_id":1,"target_url":null,"audience_type":"string","audience_ids":[1],"audience_days":1,"image":"string","remove_image":true,"ttl_hours":1,"group_mode":"string"}'

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "id": 1,
        "title": "string",
        "body": "string",
        "target": {
            "type": "string",
            "id": 1,
            "url": null
        },
        "audience": {
            "type": "string",
            "ids": [
                1
            ],
            "days": 1
        },
        "has_image": true,
        "ttl_hours": 1,
        "group_mode": "string",
        "status": "draft",
        "status_label": "string",
        "editable": true,
        "scheduled_at": "2026-10-20T10:00:00-03:00",
        "started_at": "2026-10-20T10:00:00-03:00",
        "finished_at": "2026-10-20T10:00:00-03:00",
        "recipients_count": 1,
        "delivered_count": 1,
        "devices_count": 1,
        "opened_count": 1,
        "created_at": "2026-10-20T10:00:00-03:00"
    }
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado409 Chave em processamento ou reutilizada com outro conteúdo, ou ação não permitida no estado atual do recurso (`invalid_transition`)422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
GET /api/v1/app-notifications/{notification}/recipients

Lista os destinatários

Clientes que entraram no envio com o resultado e a abertura; quem abriu vem primeiro. Exige `campaigns:read`.

Parâmetros

NomeTipoObrigatórioDescrição
resultquerystringNãoSó quem abriu ou só quem não recebeu.
per_pagequeryintegerNãoItens por página.

Exemplo de requisição

cURL
curl "$MICORE_BASE_URL/app-notifications/{notification}/recipients" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "data": [
        {
            "id": 1,
            "client": {
                "id": 1,
                "name": "string",
                "email": null
            },
            "status": "string",
            "devices_count": 1,
            "sent_at": "2026-10-20T10:00:00-03:00",
            "opened_at": "2026-10-20T10:00:00-03:00"
        }
    ],
    "meta": []
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /api/v1/app-notifications/{notification}/send

Envia ou agenda a notificação

`now` entra na fila na hora; `scheduled` acorda no horário. Enviada ou cancelada: 409. Exige `campaigns:dispatch` e Campanhas (editar).

Parâmetros

NomeTipoObrigatórioDescrição
Idempotency-KeyheaderstringSimIdentificador ú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

CampoTipoObrigatórioDescrição
modestringSimValores: now, scheduled.
scheduled_atstring | null (date-time)Não—

Exemplo de requisição

cURL
curl -X POST "$MICORE_BASE_URL/app-notifications/{notification}/send" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json" \
  -H "Idempotency-Key: board-request-0001" \
  -H "Content-Type: application/json" \
  -d '{"mode":"now","scheduled_at":"2026-10-20T10:00:00-03:00"}'

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "id": 1,
        "title": "string",
        "body": "string",
        "target": {
            "type": "string",
            "id": 1,
            "url": null
        },
        "audience": {
            "type": "string",
            "ids": [
                1
            ],
            "days": 1
        },
        "has_image": true,
        "ttl_hours": 1,
        "group_mode": "string",
        "status": "draft",
        "status_label": "string",
        "editable": true,
        "scheduled_at": "2026-10-20T10:00:00-03:00",
        "started_at": "2026-10-20T10:00:00-03:00",
        "finished_at": "2026-10-20T10:00:00-03:00",
        "recipients_count": 1,
        "delivered_count": 1,
        "devices_count": 1,
        "opened_count": 1,
        "created_at": "2026-10-20T10:00:00-03:00"
    }
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado409 Chave em processamento ou reutilizada com outro conteúdo, ou ação não permitida no estado atual do recurso (`invalid_transition`)422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /api/v1/app-notifications/{notification}/cancel

Cancela a notificação

Só rascunho ou agendada; o envio já iniciado não para (409). Exige `campaigns:write` e Campanhas (editar).

Parâmetros

NomeTipoObrigatórioDescrição
Idempotency-KeyheaderstringSimIdentificador ú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
curl -X POST "$MICORE_BASE_URL/app-notifications/{notification}/cancel" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json" \
  -H "Idempotency-Key: board-request-0001"

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "id": 1,
        "title": "string",
        "body": "string",
        "target": {
            "type": "string",
            "id": 1,
            "url": null
        },
        "audience": {
            "type": "string",
            "ids": [
                1
            ],
            "days": 1
        },
        "has_image": true,
        "ttl_hours": 1,
        "group_mode": "string",
        "status": "draft",
        "status_label": "string",
        "editable": true,
        "scheduled_at": "2026-10-20T10:00:00-03:00",
        "started_at": "2026-10-20T10:00:00-03:00",
        "finished_at": "2026-10-20T10:00:00-03:00",
        "recipients_count": 1,
        "delivered_count": 1,
        "devices_count": 1,
        "opened_count": 1,
        "created_at": "2026-10-20T10:00:00-03:00"
    }
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado409 Chave em processamento ou reutilizada com outro conteúdo, ou ação não permitida no estado atual do recurso (`invalid_transition`)422 Dados inválidos429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /api/v1/contact-lists/{list}/activate

Reativa uma lista

A lista desativada volta à listagem e à escolha de público dos disparos. Só encontra listas desativadas (ativa devolve 404). Exige `campaigns:write` e Campanhas (desabilitar).

Exemplo de requisição

cURL
curl -X POST "$MICORE_BASE_URL/contact-lists/{list}/activate" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "id": 1,
        "name": "string",
        "description": null,
        "contacts_count": 1,
        "audience": {
            "whatsapp": 1,
            "email": 1
        },
        "active": true,
        "created_at": "2026-10-20T10:00:00-03:00",
        "updated_at": "2026-10-20T10:00:00-03:00"
    }
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant
POST /api/v1/marketing-campaigns/{campaign}/activate

Reativa uma campanha

A campanha desativada volta à listagem. Só encontra campanhas desativadas (ativa devolve 404). Exige `campaigns:write` e Campanhas (desabilitar).

Exemplo de requisição

cURL
curl -X POST "$MICORE_BASE_URL/marketing-campaigns/{campaign}/activate" \
  -H "Authorization: Bearer $MICORE_TOKEN" \
  -H "Accept: application/json"

Exemplo de resposta JSON

Resposta · 200
{
    "data": {
        "id": 1,
        "name": "string",
        "description": null,
        "contacts_count": 1,
        "shots_count": 1,
        "active": true,
        "created_at": "2026-10-20T10:00:00-03:00",
        "updated_at": "2026-10-20T10:00:00-03:00"
    }
}

Respostas possíveis

200 OK401 Token ausente, inválido, expirado ou revogado403 Escopo, assinatura, módulo ou permissão insuficiente404 Recurso não encontrado429 Cota por minuto da credencial excedida503 O domínio não pôde ser associado com segurança a um tenant