Configuração de Envio
Endpoints da WebApiAlcance para gerenciar configurações de envio - os canais de comunicação (por exemplo e-mail e WhatsApp) usados para disparar mensagens a clientes. Cada configuração associa um canal (tipo) a um cliente e/ou usuário, com um nome identificador e uma flag de ativação. Cobrem listagem geral, detalhamento por ID, criação, atualização e exclusão.
Todos os endpoints exigem autenticação. Veja Autenticação para o fluxo de API Key. O Swagger oficial está em api.contabilidadealcance.com.br/docs.
Base path
/api/v1/config-envioEscopos necessários
config_envio:read- listagem e detalhamentoconfig_envio:write- criação, atualização e exclusão
O escopo é derivado da rota: o prefixo /config-envio vira o recurso config_envio (hífen → underscore), e o método HTTP define a ação (read para GET, write para POST/PUT/DELETE).
Endpoints
GET /config-envio/
Lista todas as configurações de envio cadastradas. Lista vazia é um estado válido - sempre retorna 200 OK, inclusive com data: [] e a mensagem "Nenhuma configuração encontrada.".
Parâmetros
Este endpoint não recebe parâmetros de rota ou query. A resposta traz data como um array de ConfigEnvioRead.
Request
Sem corpo de requisição.
Response 200 OK
{
"success": true,
"message": "Configurações recuperadas com sucesso",
"data": [
{
"id": 1,
"cliente_id": 42,
"usuario_id": 7,
"nome": "E-mail cobrança",
"tipo": "email",
"ativo": true
}
]
}Escopo: config_envio:read
GET /config-envio/{id}
Detalha uma configuração de envio pelo ID inteiro. Quando não encontrada, retorna o envelope de erro com success: false.
Parâmetros
| Parâmetro | Tipo | Local | Obrigatório | Descrição |
|---|---|---|---|---|
id | int | path | sim | ID interno da configuração |
Request
Sem corpo de requisição.
Response 200 OK
{
"success": true,
"message": "Configuração recuperada com sucesso",
"data": {
"id": 1,
"cliente_id": 42,
"usuario_id": 7,
"nome": "E-mail cobrança",
"tipo": "email",
"ativo": true
}
}Quando o ID não existe, retorna { success: false, message: "Configuração não encontrada.", details: { id } }. Escopo: config_envio:read
POST /config-envio/
Cria uma nova configuração de envio.
Parâmetros
Este endpoint não recebe parâmetros de rota ou query - os dados vão no corpo da requisição (ConfigEnvioCreate): cliente_id, usuario_id, nome, tipo e ativo, todos opcionais (ativo tem default true).
Request
{
"cliente_id": 42,
"usuario_id": 7,
"nome": "WhatsApp avisos",
"tipo": "whatsapp",
"ativo": true
}Response 200 OK
{
"success": true,
"message": "Configuração criada com sucesso",
"data": {
"id": 8,
"cliente_id": 42,
"usuario_id": 7,
"nome": "WhatsApp avisos",
"tipo": "whatsapp",
"ativo": true
}
}Erros de validação de negócio retornam o envelope de erro { success: false, message: "<motivo>" }. Escopo: config_envio:write
PUT /config-envio/{id}
Atualiza uma configuração existente. O body é um ConfigEnvioUpdate com campos parciais - somente o que vier preenchido é considerado.
Parâmetros
| Parâmetro | Tipo | Local | Obrigatório | Descrição |
|---|---|---|---|---|
id | int | path | sim | ID da configuração |
Request (ConfigEnvioUpdate - todos os campos opcionais)
{
"nome": "WhatsApp avisos",
"ativo": false
}Response 200 OK
{
"success": true,
"message": "Configuração atualizada com sucesso",
"data": {
"id": 8,
"cliente_id": 42,
"usuario_id": 7,
"nome": "WhatsApp avisos",
"tipo": "whatsapp",
"ativo": false
}
}Quando o ID não existe, retorna { success: false, message: "Configuração não encontrada.", details: { id } }. Escopo: config_envio:write
DELETE /config-envio/{config_id}
Remove uma configuração de envio pelo ID.
Parâmetros
| Parâmetro | Tipo | Local | Obrigatório | Descrição |
|---|---|---|---|---|
config_id | int | path | sim | ID da configuração |
Request
Sem corpo de requisição.
Response 200 OK
{
"success": true,
"message": "Configuração deletada com sucesso",
"data": null
}Escopo: config_envio:write
Schemas
ConfigEnvioCreate
Herdado de ConfigEnvioBase - todos os campos são opcionais.
| Campo | Tipo | Obrigatório | Observações |
|---|---|---|---|
cliente_id | int | não | ID do cliente ao qual a configuração pertence. |
usuario_id | int | não | ID do usuário associado à configuração. |
nome | str | não | Nome identificador da configuração. |
tipo | str | não | Canal de envio (ex.: email, whatsapp). |
ativo | bool | não | Situação da configuração. Default true. |
ConfigEnvioUpdate
Mesma estrutura de ConfigEnvioBase; todos os campos são opcionais e apenas os enviados são considerados na atualização.
| Campo | Tipo | Observações |
|---|---|---|
cliente_id | int | Reassocia a configuração a outro cliente. |
usuario_id | int | Reassocia a configuração a outro usuário. |
nome | str | Novo nome identificador. |
tipo | str | Novo canal de envio. |
ativo | bool | Nova situação de ativação. |
ConfigEnvioRead
| Campo | Tipo | Notas |
|---|---|---|
id | int | Identificador da configuração. |
cliente_id | int | Cliente associado. |
usuario_id | int | Usuário associado. |
nome | str | Nome identificador. |
tipo | str | Canal de envio (email, whatsapp, …). |
ativo | bool | Situação (true = ativo). |
Notas
- Toda resposta segue o envelope
{ success, message, data }(ou{ success: false, message, details }em erro). - O schema de configuração não possui campos de credenciais (senha SMTP, token de canal etc.). Os schemas expõem apenas
cliente_id,usuario_id,nome,tipoeativo- nenhum segredo é aceito na escrita nem retornado na leitura. GET /config-envio/{id}usa o parâmetroid, enquantoDELETE /config-envio/{config_id}usaconfig_id; ambos são o mesmo identificador inteiro da configuração.- Relaciona-se com o cadastro de Customers, referenciado por
cliente_id.