Produtos e Serviços
Visão Geral
O módulo Produtos e Serviços é responsável pelo cadastro completo de itens comercializados pela empresa, sejam produtos físicos ou serviços prestados. Suporta configurações fiscais, controle de estoque, variações (grades), imagens e muito mais.
Endpoints
Descrição: Lista todos os produtos e serviços cadastrados com suporte a paginação e filtros. Autenticação: Obrigatória
Parâmetros de Query
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| pagina | integer | Não | Número da página (padrão: 1) |
| quantidade | integer | Não | Itens por página (padrão: 20) |
| nome | string | Não | Filtrar por nome do produto/serviço |
| codigo | string | Não | Filtrar por código interno |
| tipo | string | Não | Tipo: produto ou servico |
| grupoId | string | Não | Filtrar por grupo |
| ativo | boolean | Não | Filtrar por status ativo/inativo |
Resposta de Sucesso
{
"dados": [
{
"id": "uuid",
"codigo": "PROD001",
"nome": "Camiseta Básica",
"tipo": "produto",
"preco": 49.90,
"unidade": "UN",
"grupo": "Vestuário",
"ativo": true
}
],
"total": 300,
"pagina": 1,
"quantidade": 20
}
Códigos de Erro Comuns
| Código | Descrição |
|---|---|
| 401 | Não autorizado |
| 500 | Erro interno do servidor |
Exemplos de Código
cURL
curl -X GET "https://api.app.hooked.com.br/api/produtos-servicos" \
-H "Authorization: Bearer {token}"
JavaScript
const response = await fetch('https://api.app.hooked.com.br/api/produtos-servicos', {
headers: { 'Authorization': 'Bearer {token}' }
});
const data = await response.json();
Python
import requests
data = requests.get(
'https://api.app.hooked.com.br/api/produtos-servicos',
headers={'Authorization': 'Bearer {token}'}
).json()
Go
import (
"io"
"net/http"
)
req, _ := http.NewRequest("GET", "https://api.app.hooked.com.br/api/produtos-servicos", 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/produtos-servicos');
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/produtos-servicos",
"nodes": [
{
"parameters": {
"method": "GET",
"url": "https://api.app.hooked.com.br/api/produtos-servicos",
"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: Cria um novo produto ou serviço no sistema. Autenticação: Obrigatória
Corpo da Requisição (Request Body)
{
"nome": "Camiseta Básica",
"descricao": "Camiseta 100% algodão",
"estoque": 100.0,
"valor": 49.90,
"ncm": "62092000",
"tipoItem": "00",
"unidadeId": 1,
"tributacaoId": 1,
"codigo": 1001,
"ativo": true,
"permiteFracionar": false,
"precoCusto": 25.00,
"markup": 99.6,
"gtin": "7891234567890",
"cest": "28.038.00",
"codigoInterno": "PROD001",
"grupoId": 1,
"subGrupoId": 2,
"marcaId": 3,
"movimentaEstoque": true,
"estoqueMinimo": 5
}
| Campo | Tipo | Obrigatório | Regras | Descrição |
|---|---|---|---|---|
nome | string | ✓ | mín. 2, máx. 100 chars | Nome do produto/serviço |
descricao | string | ✓ | mín. 1 caractere | Descrição do produto/serviço |
estoque | number (double) | ✓ | — | Quantidade atual em estoque |
valor | number (double) | ✓ | — | Preço de venda do produto/serviço |
ncm | string | ✓ | mín. 1 caractere | Código NCM (Nomenclatura Comum do Mercosul) |
tipoItem | string | ✓ | código de 2 dígitos | Tipo do item conforme Tabela 03 do SPED Fiscal ("00" a "10", "99"). Veja a tabela completa de valores ao final desta página |
unidadeId | integer (int64) | ✓ | — | ID da unidade de medida |
precoCusto | number (double) | — | — | Preço de custo |
markup | number (double) | — | — | Percentual de markup aplicado |
codigo | integer (int64) | — | — | Código numérico do produto |
ativo | boolean | — | — | Indica se o produto está ativo |
permiteFracionar | boolean | — | — | Permite venda em quantidade fracionada |
gtin | string | — | — | Código GTIN/EAN (código de barras) |
cest | string | — | — | Código CEST (Código Especificador da Substituição Tributária) |
codigoInterno | string | — | — | Código interno do produto |
tributacaoId | integer (int64) | — | — | ID da tributação aplicada |
volume | integer (int32) | — | — | Volume do produto |
pesoLiquido | number (double) | — | — | Peso líquido |
pesoBruto | number (double) | — | — | Peso bruto |
grupoId | integer (int64) | — | — | ID do grupo do produto |
subGrupoId | integer (int64) | — | — | ID do subgrupo do produto |
marcaId | integer (int64) | — | — | ID da marca do produto |
controlarLote | boolean | — | — | Indica se o produto controla lote |
pesoUnitario | number (double) | — | — | Peso unitário |
movimentaEstoque | boolean | — | — | Indica se o produto movimenta estoque |
estoqueMinimo | number (double) | — | — | Estoque mínimo |
estoqueMaximo | number (double) | — | — | Estoque máximo |
localizacao | string | — | — | Localização física do produto |
classificacao | string | — | — | Classificação do produto |
m3Unitario | number (double) | — | — | Volume unitário em m³ |
beneficio | string | — | — | Código de benefício fiscal |
gradeId | integer (int64) | — | — | ID da grade vinculada |
tabelaProdutoId | integer (int64) | — | — | ID da tabela de produtos |
tipoComissao | string | — | — | Tipo da comissão aplicada |
percentualComissao | number (double) | — | — | Percentual de comissão |
tabelaProduto | TabelaProdutoViewModel | — | — | Objeto da tabela de produto vinculada |
comissoes | array | — | — | Lista de comissões do produto |
fornecedores | array | — | — | Lista de fornecedores do produto |
composicoes | array | — | — | Lista de composições/ficha técnica |
imagens | array | — | — | Lista de imagens do produto |
Resposta de Sucesso
{
"id": "uuid",
"codigo": "PROD001",
"nome": "Camiseta Básica",
"tipo": "produto",
"ativo": true
}
Códigos de Erro Comuns
| Código | Descrição |
|---|---|
| 400 | Dados inválidos |
| 401 | Não autorizado |
| 409 | Código já cadastrado |
Exemplos de Código
cURL
curl -X POST "https://api.app.hooked.com.br/api/produtos-servicos" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"codigo":"PROD001","nome":"Camiseta Básica","descricao":"Camiseta 100% algodão","tipo":"produto","unidadeId":"uuid","grupoId":"uuid","subgrupoId":"uuid","marcaId":"uuid","preco":49.9,"precoCusto":25.0,"ncm":"62092000","cest":"28.038.00","codigoBarras":"7891234567890","controlaEstoque":true,"estoqueMinimo":5,"ativo":true}'
JavaScript
const response = await fetch('https://api.app.hooked.com.br/api/produtos-servicos', {
method: 'POST',
headers: {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"codigo": "PROD001",
"nome": "Camiseta Básica",
"descricao": "Camiseta 100% algodão",
"tipo": "produto",
"unidadeId": "uuid",
"grupoId": "uuid",
"subgrupoId": "uuid",
"marcaId": "uuid",
"preco": 49.9,
"precoCusto": 25.0,
"ncm": "62092000",
"cest": "28.038.00",
"codigoBarras": "7891234567890",
"controlaEstoque": true,
"estoqueMinimo": 5,
"ativo": true
})
});
const data = await response.json();
Python
import requests
data = requests.post(
'https://api.app.hooked.com.br/api/produtos-servicos',
headers={'Authorization': 'Bearer {token}'},
json={'codigo': 'PROD001', 'nome': 'Camiseta Básica', 'descricao': 'Camiseta 100% algodão', 'tipo': 'produto', 'unidadeId': 'uuid', 'grupoId': 'uuid', 'subgrupoId': 'uuid', 'marcaId': 'uuid', 'preco': 49.9, 'precoCusto': 25.0, 'ncm': '62092000', 'cest': '28.038.00', 'codigoBarras': '7891234567890', 'controlaEstoque': True, 'estoqueMinimo': 5, 'ativo': True}
).json()
Go
import (
"bytes"
"net/http"
)
payload := []byte(`{"codigo":"PROD001","nome":"Camiseta Básica","descricao":"Camiseta 100% algodão","tipo":"produto","unidadeId":"uuid","grupoId":"uuid","subgrupoId":"uuid","marcaId":"uuid","preco":49.9,"precoCusto":25.0,"ncm":"62092000","cest":"28.038.00","codigoBarras":"7891234567890","controlaEstoque":true,"estoqueMinimo":5,"ativo":true}`)
req, _ := http.NewRequest("POST", "https://api.app.hooked.com.br/api/produtos-servicos", 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/produtos-servicos');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer {token}', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'codigo' => 'PROD001',
'nome' => 'Camiseta Básica',
'descricao' => 'Camiseta 100% algodão',
'tipo' => 'produto',
'unidadeId' => 'uuid',
'grupoId' => 'uuid',
'subgrupoId' => 'uuid',
'marcaId' => 'uuid',
'preco' => 49.9,
'precoCusto' => 25.0,
'ncm' => '62092000',
'cest' => '28.038.00',
'codigoBarras' => '7891234567890',
'controlaEstoque' => true,
'estoqueMinimo' => 5,
'ativo' => true
]),
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
n8n
{
"name": "Hooked API — POST /api/produtos-servicos",
"nodes": [
{
"parameters": {
"method": "POST",
"url": "https://api.app.hooked.com.br/api/produtos-servicos",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer SEU_TOKEN_AQUI"
}
]
},
"sendBody": true,
"contentType": "json",
"specifyBody": "json",
"jsonBody": "{\"codigo\":\"PROD001\",\"nome\":\"Camiseta Básica\",\"descricao\":\"Camiseta 100% algodão\",\"tipo\":\"produto\",\"unidadeId\":\"uuid\",\"grupoId\":\"uuid\",\"subgrupoId\":\"uuid\",\"marcaId\":\"uuid\",\"preco\":49.9,\"precoCusto\":25.0,\"ncm\":\"62092000\",\"cest\":\"28.038.00\",\"codigoBarras\":\"7891234567890\",\"controlaEstoque\":true,\"estoqueMinimo\":5,\"ativo\":true}",
"options": {}
},
"id": "node-1",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
250,
300
]
}
],
"connections": {},
"pinData": {}
}
Descrição: Retorna os detalhes completos de um produto ou serviço pelo seu identificador. Autenticação: Obrigatória
Parâmetros de Path
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| id | string (uuid) | Sim | Identificador único do produto/serviço |
Resposta de Sucesso
{
"id": "uuid",
"codigo": "PROD001",
"nome": "Camiseta Básica",
"descricao": "Camiseta 100% algodão",
"tipo": "produto",
"unidade": "UN",
"grupo": "Vestuário",
"subgrupo": "Camisetas",
"marca": "Marca X",
"preco": 49.90,
"precoCusto": 25.00,
"ncm": "62092000",
"cest": "28.038.00",
"codigoBarras": "7891234567890",
"controlaEstoque": true,
"estoqueMinimo": 5,
"estoqueAtual": 100,
"ativo": true
}
Códigos de Erro Comuns
| Código | Descrição |
|---|---|
| 401 | Não autorizado |
| 404 | Produto/Serviço não encontrado |
Exemplos de Código
cURL
curl -X GET "https://api.app.hooked.com.br/api/produtos-servicos/{id}" \
-H "Authorization: Bearer {token}"
JavaScript
const response = await fetch('https://api.app.hooked.com.br/api/produtos-servicos/{id}', {
headers: { 'Authorization': 'Bearer {token}' }
});
const data = await response.json();
Python
import requests
data = requests.get(
'https://api.app.hooked.com.br/api/produtos-servicos/{id}',
headers={'Authorization': 'Bearer {token}'}
).json()
Go
import (
"io"
"net/http"
)
req, _ := http.NewRequest("GET", "https://api.app.hooked.com.br/api/produtos-servicos/{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/produtos-servicos/{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/produtos-servicos/{id}",
"nodes": [
{
"parameters": {
"method": "GET",
"url": "https://api.app.hooked.com.br/api/produtos-servicos/{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 os dados de um produto ou serviço existente. Autenticação: Obrigatória
Parâmetros de Path
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| id | string (uuid) | Sim | Identificador único do produto/serviço |
Corpo da Requisição (Request Body)
{
"nome": "Camiseta Básica Premium",
"preco": 59.90,
"ativo": true
}
Resposta de Sucesso
{
"id": "uuid",
"nome": "Camiseta Básica Premium",
"preco": 59.90,
"ativo": true
}
Códigos de Erro Comuns
| Código | Descrição |
|---|---|
| 400 | Dados inválidos |
| 401 | Não autorizado |
| 404 | Produto/Serviço não encontrado |
Exemplos de Código
cURL
curl -X PUT "https://api.app.hooked.com.br/api/produtos-servicos/{id}" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"nome":"Camiseta Básica Premium","preco":59.9,"ativo":true}'
JavaScript
const response = await fetch('https://api.app.hooked.com.br/api/produtos-servicos/{id}', {
method: 'PUT',
headers: {
'Authorization': 'Bearer {token}',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"nome": "Camiseta Básica Premium",
"preco": 59.9,
"ativo": true
})
});
const data = await response.json();
Python
import requests
data = requests.put(
'https://api.app.hooked.com.br/api/produtos-servicos/{id}',
headers={'Authorization': 'Bearer {token}'},
json={'nome': 'Camiseta Básica Premium', 'preco': 59.9, 'ativo': True}
).json()
Go
import (
"bytes"
"net/http"
)
payload := []byte(`{"nome":"Camiseta Básica Premium","preco":59.9,"ativo":true}`)
req, _ := http.NewRequest("PUT", "https://api.app.hooked.com.br/api/produtos-servicos/{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/produtos-servicos/{id}');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_HTTPHEADER => ['Authorization: Bearer {token}', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'nome' => 'Camiseta Básica Premium',
'preco' => 59.9,
'ativo' => true
]),
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
n8n
{
"name": "Hooked API — PUT /api/produtos-servicos/{id}",
"nodes": [
{
"parameters": {
"method": "PUT",
"url": "https://api.app.hooked.com.br/api/produtos-servicos/{id}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer SEU_TOKEN_AQUI"
}
]
},
"sendBody": true,
"contentType": "json",
"specifyBody": "json",
"jsonBody": "{\"nome\":\"Camiseta Básica Premium\",\"preco\":59.9,\"ativo\":true}",
"options": {}
},
"id": "node-1",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
250,
300
]
}
],
"connections": {},
"pinData": {}
}
Descrição: Remove um produto ou serviço do sistema pelo seu identificador. Autenticação: Obrigatória
Parâmetros de Path
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| id | string (uuid) | Sim | Identificador único do produto/serviço |
Resposta de Sucesso
{
"mensagem": "Produto/Serviço removido com sucesso"
}
Códigos de Erro Comuns
| Código | Descrição |
|---|---|
| 401 | Não autorizado |
| 404 | Produto/Serviço não encontrado |
| 409 | Produto/Serviço vinculado a outros registros |
Exemplos de Código
cURL
curl -X DELETE "https://api.app.hooked.com.br/api/produtos-servicos/{id}" \
-H "Authorization: Bearer {token}"
JavaScript
const response = await fetch('https://api.app.hooked.com.br/api/produtos-servicos/{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/produtos-servicos/{id}',
headers={'Authorization': 'Bearer {token}'}
).json()
Go
import (
"io"
"net/http"
)
req, _ := http.NewRequest("DELETE", "https://api.app.hooked.com.br/api/produtos-servicos/{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/produtos-servicos/{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/produtos-servicos/{id}",
"nodes": [
{
"parameters": {
"method": "DELETE",
"url": "https://api.app.hooked.com.br/api/produtos-servicos/{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: Retorna a quantidade total de produtos e serviços cadastrados. Autenticação: Obrigatória
Parâmetros de Query
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| tipo | string | Não | Tipo para filtrar: produto ou servico |
| ativo | boolean | Não | Filtrar por status |
Resposta de Sucesso
{
"quantidade": 300
}
Códigos de Erro Comuns
| Código | Descrição |
|---|---|
| 401 | Não autorizado |
Exemplos de Código
cURL
curl -X GET "https://api.app.hooked.com.br/api/produtos-servicos/recuperar-quantidade" \
-H "Authorization: Bearer {token}"
JavaScript
const response = await fetch('https://api.app.hooked.com.br/api/produtos-servicos/recuperar-quantidade', {
headers: { 'Authorization': 'Bearer {token}' }
});
const data = await response.json();
Python
import requests
data = requests.get(
'https://api.app.hooked.com.br/api/produtos-servicos/recuperar-quantidade',
headers={'Authorization': 'Bearer {token}'}
).json()
Go
import (
"io"
"net/http"
)
req, _ := http.NewRequest("GET", "https://api.app.hooked.com.br/api/produtos-servicos/recuperar-quantidade", 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/produtos-servicos/recuperar-quantidade');
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/produtos-servicos/recuperar-quantidade",
"nodes": [
{
"parameters": {
"method": "GET",
"url": "https://api.app.hooked.com.br/api/produtos-servicos/recuperar-quantidade",
"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: Gera um relatório de produtos e serviços em formato para download. Autenticação: Obrigatória
Parâmetros de Query
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| tipo | string | Não | Tipo para filtrar |
| ativo | boolean | Não | Filtrar por status |
| formato | string | Não | Formato: pdf ou xlsx |
Resposta de Sucesso
Retorna o arquivo binário para download com o Content-Type adequado.
Códigos de Erro Comuns
| Código | Descrição |
|---|---|
| 401 | Não autorizado |
| 500 | Erro ao gerar relatório |
Exemplos de Código
cURL
curl -X GET "https://api.app.hooked.com.br/api/produtos-servicos/gerar-relatorio" \
-H "Authorization: Bearer {token}" \
-o arquivo
JavaScript
const response = await fetch('https://api.app.hooked.com.br/api/produtos-servicos/gerar-relatorio', {
headers: { 'Authorization': 'Bearer {token}' }
});
const blob = await response.blob();
// Node.js: use response.buffer() e salve com fs.writeFile
Python
import requests
response = requests.get(
'https://api.app.hooked.com.br/api/produtos-servicos/gerar-relatorio',
headers={'Authorization': 'Bearer {token}'},
)
with open('arquivo', 'wb') as f:
f.write(response.content)
Go
import (
"io"
"net/http"
)
req, _ := http.NewRequest("GET", "https://api.app.hooked.com.br/api/produtos-servicos/gerar-relatorio", nil)
req.Header.Set("Authorization", "Bearer {token}")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
arquivo, _ := os.Create("arquivo")
defer arquivo.Close()
io.Copy(arquivo, resp.Body)
PHP
$ch = curl_init('https://api.app.hooked.com.br/api/produtos-servicos/gerar-relatorio');
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ['Authorization: Bearer {token}'],
CURLOPT_RETURNTRANSFER => true,
]);
$arquivo = curl_exec($ch);
curl_close($ch);
file_put_contents('arquivo', $arquivo);
n8n
{
"name": "Hooked API — GET /api/produtos-servicos/gerar-relatorio",
"nodes": [
{
"parameters": {
"method": "GET",
"url": "https://api.app.hooked.com.br/api/produtos-servicos/gerar-relatorio",
"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": {}
}
Tabela de valores de tipoItem (SPED Fiscal — Tabela 03)
O campo tipoItem segue a Tabela 03 do SPED Fiscal (Receita Federal do Brasil) e é armazenado como string de 2 dígitos numéricos. O campo espelho tipoItemDescricao é preenchido automaticamente pelo servidor com base no código informado.
| Código | Descrição |
|---|---|
"00" | Mercadoria para Revenda |
"01" | Matéria-Prima |
"02" | Embalagem |
"03" | Produto em Processo |
"04" | Produto Acabado |
"05" | Subproduto |
"06" | Produto Intermediário |
"07" | Material de Uso e Consumo |
"08" | Ativo Imobilizado |
"09" | Serviços |
"10" | Outros insumos |
"99" | Outras |
"tipoItem": "04" retorna na resposta o par "tipoItem": "04" + "tipoItemDescricao": "Produto Acabado".
