OTL ShoesAPI
Exemplos em
Menu da documentação

Ver a aparência

Cores, fonte, cabeçalho e card do produto da vitrine.

GET/v1/loja-hub/aparencia

Exemplo

curl "https://api.otlshoes.com.br/v1/loja-hub/aparencia" \
  -H "Authorization: Bearer otl_prod_SEU_TOKEN"
curl "https://api-sandbox.otlshoes.com.br/v1/loja-hub/aparencia" \
  -H "Authorization: Bearer otl_sbx_SEU_TOKEN"
const resposta = await fetch('https://api.otlshoes.com.br/v1/loja-hub/aparencia', {
  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/loja-hub/aparencia', {
  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/loja-hub/aparencia');
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/loja-hub/aparencia');
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/loja-hub/aparencia",
    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/loja-hub/aparencia",
    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

{
  "corFundo": "#f5f6f7",
  "corTexto": "#14161a",
  "fonte": "poppins",
  "cantos": "suave",
  "estiloCard": "borda",
  "formatoLogo": "auto",
  "cabecalho": "destaque",
  "corCabecalho": "#ffffff",
  "botao": "solido",
  "rotuloBotao": "Ver detalhes",
  "enquadramentoFoto": "inteira",
  "mostrarNumeracoes": true
}
CampoTipoDescrição
corFundotextoCor de fundo da página, em #rrggbb.
corTextotextoCor do texto, em #rrggbb.
fontetextosistema, inter, poppins, nunito ou playfair.
cantostextoreto, suave ou redondo.
estiloCardtextoborda, sombra ou limpo.
formatoLogotextoauto (nunca corta) ou circulo (só para logo quadrado).
cabecalhotextotransparente, solido, destaque (cor da marca) ou cor (usa corCabecalho).
corCabecalhotextoSó vale com cabecalho: "cor".
botaotextoBotão no card do produto: nenhum, solido ou contorno.
rotuloBotaotextoO texto do botão, até 18 caracteres.
enquadramentoFototextopreencher (corta no quadrado) ou inteira (foto completa).
mostrarNumeracoesbooleanoMostra as numerações no card.

Loja que nunca mexeu na aparência devolve o padrão. A cor da marca (corDestaque) fica em Ver a loja.

Erros possíveis

HTTP codigo Quando
403 LOJA_HUB_NAO_LIBERADA A OTL ainda não liberou a loja no HUB para este parceiro
403 ESCOPO_INSUFICIENTE A integração não tem loja-hub:ler