Categorias
Categorias, estilos e tags do catálogo — os identificadores aceitos nos filtros de produtos.
Quando usar
Para montar os filtros do seu sistema, ou para mapear as categorias da OTL para as suas. Os id
daqui são os que vão em categoria, estilo e tag de Listar produtos.
Requisição
Sem parâmetros. A resposta não é paginada: são poucas dezenas de itens.
curl "https://api.otlshoes.com.br/v1/categorias" \
-H "Authorization: Bearer otl_prod_SEU_TOKEN"curl "https://api-sandbox.otlshoes.com.br/v1/categorias" \
-H "Authorization: Bearer otl_sbx_SEU_TOKEN"const resposta = await fetch('https://api.otlshoes.com.br/v1/categorias', {
headers: {
Authorization: 'Bearer otl_prod_SEU_TOKEN',
},
});
if (!resposta.ok) {
const { erro } = await resposta.json();
throw new Error(`${erro.codigo}: ${erro.mensagem} (${erro.requestId})`);
}
const dados = await resposta.json();const resposta = await fetch('https://api-sandbox.otlshoes.com.br/v1/categorias', {
headers: {
Authorization: 'Bearer otl_sbx_SEU_TOKEN',
},
});
if (!resposta.ok) {
const { erro } = await resposta.json();
throw new Error(`${erro.codigo}: ${erro.mensagem} (${erro.requestId})`);
}
const dados = await resposta.json();<?php
$ch = curl_init('https://api.otlshoes.com.br/v1/categorias');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer otl_prod_SEU_TOKEN',
]);
$corpo = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new Exception($corpo['erro']['codigo'] . ': ' . $corpo['erro']['mensagem']);
}<?php
$ch = curl_init('https://api-sandbox.otlshoes.com.br/v1/categorias');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer otl_sbx_SEU_TOKEN',
]);
$corpo = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new Exception($corpo['erro']['codigo'] . ': ' . $corpo['erro']['mensagem']);
}import requests
resposta = requests.get(
"https://api.otlshoes.com.br/v1/categorias",
headers={
"Authorization": "Bearer otl_prod_SEU_TOKEN",
},
timeout=30,
)
if not resposta.ok:
erro = resposta.json()["erro"]
raise RuntimeError(f'{erro["codigo"]}: {erro["mensagem"]} ({erro["requestId"]})')
dados = resposta.json()import requests
resposta = requests.get(
"https://api-sandbox.otlshoes.com.br/v1/categorias",
headers={
"Authorization": "Bearer otl_sbx_SEU_TOKEN",
},
timeout=30,
)
if not resposta.ok:
erro = resposta.json()["erro"]
raise RuntimeError(f'{erro["codigo"]}: {erro["mensagem"]} ({erro["requestId"]})')
dados = resposta.json()Testar agora no ambiente de testes
A chamada é feita de verdade, do seu navegador para a API de testes (https://api-sandbox.otlshoes.com.br/v1). Use um token otl_sbx_…: ele fica só nesta aba, e some ao fechá-la. Token de produção não é aceito aqui.
Resposta
{
"categorias": [
{
"id": "cmf1a2b3c0001",
"nome": "Casual"
},
{
"id": "cmf1a2b3c0009",
"nome": "Infantil"
}
],
"estilos": [
{
"id": "cmf1a2b3c0002",
"nome": "Masculino"
}
],
"tags": [
{
"id": "cmf1a2b3c0003",
"nome": "Lançamento"
}
]
}
| Campo | Tipo | Descrição |
|---|---|---|
categorias | lista | Tipo do produto: casual, infantil, esportivo… |
estilos | lista | Público: masculino, feminino, unissex… |
tags | lista | Marcações livres: lançamento, promoção… |
[].id | texto | O valor a usar nos filtros. |
[].nome | texto | O nome a exibir. |
Regras que não se leem no JSON
- Os
idsão diferentes no sandbox e na produção. Não copie um mapeamento de um ambiente para o outro: refaça a partir desta rota. Os nomes são os mesmos. - Um nome pode mudar; o
idcontinua. Guarde oid.
Erros possíveis
| HTTP | codigo |
Quando |
|---|---|---|
| 403 | ESCOPO_INSUFICIENTE |
A integração não tem produtos:ler |
