Mensagens
Visão Geral
O módulo Mensagens gerencia os templates de mensagens padronizadas utilizados pelo sistema como observações em pedidos, notas fiscais, romaneios e demais documentos. Cada mensagem possui uma descrição única que pode ser selecionada no momento da emissão.
Base URL
Endpoints
Descrição: Retorna uma lista paginada de mensagens cadastradas, com filtro opcional por descrição.
Parâmetros
| Nome | Tipo | Local | Obrigatório | Descrição |
|---|---|---|---|---|
descricao | string | query | — | Filtra por conteúdo da mensagem |
property | string | query | — | Campo de ordenação |
orderBy | string | query | — | Direção: asc ou desc |
pageNumber | integer | query | — | Número da página (padrão: 1) |
pageSize | integer | query | — | Registros por página (padrão: 20, máximo aceito: 50) |
pageSizeé capado em 50 no servidor. Passar valores maiores (ex.pageSize=10000) retorna200, porém só 50 itens — o cap é silencioso.- O parâmetro de paginação é
pageNumber. Usarpage=Nretorna200, mas é silenciosamente ignorado (currentPagepermanece1).
Resposta de Sucesso 200
{
"pagination": {
"currentPage": 1,
"totalPages": 1,
"pageSize": 20,
"totalCount": 3,
"hasPrevious": false,
"hasNext": false
},
"data": [
{ "id": 1, "descricao": "Obrigado pela preferência! Volte sempre." },
{ "id": 2, "descricao": "Mercadoria sujeita a conferência no ato do recebimento." },
{ "id": 3, "descricao": "Frete por conta do destinatário." }
],
"summary": null
}
Campos da Resposta — data[]
| Campo | Tipo | Descrição |
|---|---|---|
id | integer (int64) | Identificador da mensagem |
descricao | string | Texto da mensagem (máx. 5000 caracteres, único) |
Códigos de Erro
| Código | Descrição |
|---|---|
401 | Token ausente ou inválido |
500 | Erro interno do servidor |
Exemplos de Código
cURL
curl -X GET "https://api.app.hooked.com.br/api/mensagens" \
-H "Authorization: Bearer {token}"
JavaScript
const response = await fetch('https://api.app.hooked.com.br/api/mensagens', {
headers: { 'Authorization': 'Bearer {token}' }
});
const data = await response.json();
Python
import requests
data = requests.get(
'https://api.app.hooked.com.br/api/mensagens',
headers={'Authorization': 'Bearer {token}'}
).json()
Go
import (
"io"
"net/http"
)
req, _ := http.NewRequest("GET", "https://api.app.hooked.com.br/api/mensagens", nil)
req.Header.Set("Authorization", "Bearer {token}")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
PHP
$ch = curl_init('https://api.app.hooked.com.br/api/mensagens');
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ['Authorization: Bearer {token}'],
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
n8n
{
"name": "Hooked API — GET /api/mensagens",
"nodes": [
{
"parameters": {
"method": "GET",
"url": "https://api.app.hooked.com.br/api/mensagens",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer SEU_TOKEN_AQUI"
}
]
},
"options": {}
},
"id": "node-1",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
250,
300
]
}
],
"connections": {},
"pinData": {}
}
Descrição: Cadastra um novo template de mensagem.
Corpo da Requisição
{
"descricao": "Produto sem direito a troca ou devolução após 7 dias."
}
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
descricao | string | ✓ | Texto da mensagem (máx. 5000 caracteres, único server-side) |
Resposta de Sucesso 200
{
"success": true,
"data": {
"id": 4,
"descricao": "Produto sem direito a troca ou devolução após 7 dias."
}
}
descricao (confirmadas empiricamente):
- Único server-side — tentar cadastrar uma descrição já existente retorna
400com a mensagem"Já existe um(a) mensagem com esta referência informada.". - Limite máximo de 5000 caracteres (Unicode, acentos contam como 1). Strings com
5001+caracteres retornam500sem body útil (overflow não-graceful).
Códigos de Erro
| Código | Body | Causa |
|---|---|---|
400 | {"success":false,"errors":["Já existe um(a) mensagem com esta referência informada."]} | Descrição duplicada |
401 | — | Token ausente ou inválido |
500 | — | Erro interno do servidor (também ocorre em descricao com mais de 5000 caracteres) |
Exemplos de Código
cURL
curl -X POST "https://api.app.hooked.com.br/api/mensagens" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"descricao":"Produto sem direito a troca ou devolução após 7 dias."}'
JavaScript
const response = await fetch('https://api.app.hooked.com.br/api/mensagens', {
method: 'POST',
headers: {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"descricao": "Produto sem direito a troca ou devolução após 7 dias."
})
});
const data = await response.json();
Python
import requests
data = requests.post(
'https://api.app.hooked.com.br/api/mensagens',
headers={'Authorization': 'Bearer {token}'},
json={'descricao': 'Produto sem direito a troca ou devolução após 7 dias.'}
).json()
Go
import (
"bytes"
"net/http"
)
payload := []byte(`{"descricao":"Produto sem direito a troca ou devolução após 7 dias."}`)
req, _ := http.NewRequest("POST", "https://api.app.hooked.com.br/api/mensagens", bytes.NewBuffer(payload))
req.Header.Set("Authorization", "Bearer {token}")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
PHP
$ch = curl_init('https://api.app.hooked.com.br/api/mensagens');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer {token}', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'descricao' => 'Produto sem direito a troca ou devolução após 7 dias.'
]),
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
n8n
{
"name": "Hooked API — POST /api/mensagens",
"nodes": [
{
"parameters": {
"method": "POST",
"url": "https://api.app.hooked.com.br/api/mensagens",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer SEU_TOKEN_AQUI"
}
]
},
"sendBody": true,
"contentType": "json",
"specifyBody": "json",
"jsonBody": "{\"descricao\":\"Produto sem direito a troca ou devolução após 7 dias.\"}",
"options": {}
},
"id": "node-1",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
250,
300
]
}
],
"connections": {},
"pinData": {}
}
Descrição: Retorna os dados de uma mensagem pelo ID.
Parâmetros
| Nome | Tipo | Local | Obrigatório | Descrição |
|---|---|---|---|---|
id | integer (int64) | path | ✓ | ID da mensagem |
Resposta de Sucesso 200
{
"id": 1,
"descricao": "Obrigado pela preferência! Volte sempre."
}
Códigos de Erro
| Código | Descrição |
|---|---|
401 | Token ausente ou inválido |
404 | Mensagem não encontrada |
500 | Erro interno do servidor |
Exemplos de Código
cURL
curl -X GET "https://api.app.hooked.com.br/api/mensagens/{id}" \
-H "Authorization: Bearer {token}"
JavaScript
const response = await fetch('https://api.app.hooked.com.br/api/mensagens/{id}', {
headers: { 'Authorization': 'Bearer {token}' }
});
const data = await response.json();
Python
import requests
data = requests.get(
'https://api.app.hooked.com.br/api/mensagens/{id}',
headers={'Authorization': 'Bearer {token}'}
).json()
Go
import (
"io"
"net/http"
)
req, _ := http.NewRequest("GET", "https://api.app.hooked.com.br/api/mensagens/{id}", nil)
req.Header.Set("Authorization", "Bearer {token}")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
PHP
$ch = curl_init('https://api.app.hooked.com.br/api/mensagens/{id}');
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ['Authorization: Bearer {token}'],
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
n8n
{
"name": "Hooked API — GET /api/mensagens/{id}",
"nodes": [
{
"parameters": {
"method": "GET",
"url": "https://api.app.hooked.com.br/api/mensagens/{id}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer SEU_TOKEN_AQUI"
}
]
},
"options": {}
},
"id": "node-1",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
250,
300
]
}
],
"connections": {},
"pinData": {}
}
Descrição: Atualiza o texto de uma mensagem existente.
Parâmetros
| Nome | Tipo | Local | Obrigatório | Descrição |
|---|---|---|---|---|
id | integer (int64) | path | ✓ | ID da mensagem a atualizar |
Corpo da Requisição
{
"id": 1,
"descricao": "Agradecemos sua preferência! Conte sempre conosco."
}
Resposta de Sucesso 200
Retorna a mensagem atualizada.
Códigos de Erro
| Código | Descrição |
|---|---|
400 | Dados inválidos (descrição duplicada ou maior que 5000 caracteres) |
401 | Token ausente ou inválido |
404 | Mensagem não encontrada |
500 | Erro interno do servidor |
Exemplos de Código
cURL
curl -X PUT "https://api.app.hooked.com.br/api/mensagens/{id}" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"id":1,"descricao":"Agradecemos sua preferência! Conte sempre conosco."}'
JavaScript
const response = await fetch('https://api.app.hooked.com.br/api/mensagens/{id}', {
method: 'PUT',
headers: {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"id": 1,
"descricao": "Agradecemos sua preferência! Conte sempre conosco."
})
});
const data = await response.json();
Python
import requests
data = requests.put(
'https://api.app.hooked.com.br/api/mensagens/{id}',
headers={'Authorization': 'Bearer {token}'},
json={'id': 1, 'descricao': 'Agradecemos sua preferência! Conte sempre conosco.'}
).json()
Go
import (
"bytes"
"net/http"
)
payload := []byte(`{"id":1,"descricao":"Agradecemos sua preferência! Conte sempre conosco."}`)
req, _ := http.NewRequest("PUT", "https://api.app.hooked.com.br/api/mensagens/{id}", bytes.NewBuffer(payload))
req.Header.Set("Authorization", "Bearer {token}")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
PHP
$ch = curl_init('https://api.app.hooked.com.br/api/mensagens/{id}');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_HTTPHEADER => ['Authorization: Bearer {token}', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'id' => 1,
'descricao' => 'Agradecemos sua preferência! Conte sempre conosco.'
]),
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
n8n
{
"name": "Hooked API — PUT /api/mensagens/{id}",
"nodes": [
{
"parameters": {
"method": "PUT",
"url": "https://api.app.hooked.com.br/api/mensagens/{id}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer SEU_TOKEN_AQUI"
}
]
},
"sendBody": true,
"contentType": "json",
"specifyBody": "json",
"jsonBody": "{\"id\":1,\"descricao\":\"Agradecemos sua preferência! Conte sempre conosco.\"}",
"options": {}
},
"id": "node-1",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
250,
300
]
}
],
"connections": {},
"pinData": {}
}
Descrição: Remove uma mensagem pelo ID.
Parâmetros
| Nome | Tipo | Local | Obrigatório | Descrição |
|---|---|---|---|---|
id | integer (int64) | path | ✓ | ID da mensagem a remover |
Resposta de Sucesso 200
Retorna a mensagem removida.
Códigos de Erro
| Código | Descrição |
|---|---|
401 | Token ausente ou inválido |
404 | Mensagem não encontrada |
500 | Erro interno do servidor |
Exemplos de Código
cURL
curl -X DELETE "https://api.app.hooked.com.br/api/mensagens/{id}" \
-H "Authorization: Bearer {token}"
JavaScript
const response = await fetch('https://api.app.hooked.com.br/api/mensagens/{id}', {
method: 'DELETE',
headers: { 'Authorization': 'Bearer {token}' }
});
const data = await response.json();
Python
import requests
data = requests.delete(
'https://api.app.hooked.com.br/api/mensagens/{id}',
headers={'Authorization': 'Bearer {token}'}
).json()
Go
import (
"io"
"net/http"
)
req, _ := http.NewRequest("DELETE", "https://api.app.hooked.com.br/api/mensagens/{id}", nil)
req.Header.Set("Authorization", "Bearer {token}")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
PHP
$ch = curl_init('https://api.app.hooked.com.br/api/mensagens/{id}');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => ['Authorization: Bearer {token}'],
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
n8n
{
"name": "Hooked API — DELETE /api/mensagens/{id}",
"nodes": [
{
"parameters": {
"method": "DELETE",
"url": "https://api.app.hooked.com.br/api/mensagens/{id}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer SEU_TOKEN_AQUI"
}
]
},
"options": {}
},
"id": "node-1",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
250,
300
]
}
],
"connections": {},
"pinData": {}
}
Observações sobre limites e comportamentos
A tabela abaixo resume limites e comportamentos confirmados empiricamente:
| Aspecto | Valor / Comportamento |
|---|---|
Máximo de caracteres em descricao | 5000 (Unicode — acentos contam como 1 char). 5001+ → HTTP 500 |
Unicidade de descricao | Obrigatória — duplicata → HTTP 400 com "Já existe um(a) mensagem com esta referência informada." |
Máximo de pageSize aceito | 50 (cap silencioso — valores maiores retornam apenas 50 itens) |
| Parâmetro de paginação | pageNumber (page é silenciosamente ignorado) |
