Configuração do Portal
Consulte, crie ou atualize as configurações de portal de uma loja específica.
Endpoint
GET /dealer/{dealer_id}/config
POST /dealer/{dealer_id}/config
PUT /dealer/{dealer_id}/config
PATCH /dealer/{dealer_id}/config
Métodos
GET: Retorna as configurações de portal da lojaPOST: Cria uma nova configuração de portal (ou atualiza se já existir)PUT: Atualiza completamente as configurações de portalPATCH: Atualiza parcialmente as configurações de portal
Parâmetros de URL
| Parâmetro | Tipo | Descrição |
|---|---|---|
dealer_id | integer | ID da loja |
Autenticação
Este endpoint requer autenticação via JWT. Inclua o token no header:
Authorization: Bearer {access_token}
Exemplo de Resposta
Obter Configuração
Status Code: 200 OK
{
"id": 1,
"dealer_id": 10,
"automatic_observation": true,
"observation": "Observação automática para os anúncios",
"dynamic_km": false,
"show_price": true,
"show_km": true,
"price_text": "Preço",
"km_text": "Km",
"mercado_livre_hours": "09:00-18:00",
"use_different_price": false,
"youtube_video_default": "https://www.youtube.com/watch?v=example",
"allow_feature_import_erp": true,
"instagram_mask": "Confira este {marca} {modelo} {ano}! Preço: {preco}",
"facebook_mask": "Novo {marca} {modelo} {ano} disponível! Entre em contato.",
"mercado_livre_email": "contato@loja.com.br",
"mercado_livre_phone_1": "11987654321",
"mercado_livre_phone_2": "11912345678",
"authorized_inclusion_brand_description": false,
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-20T14:45:00Z"
}
Configuração Não Encontrada
Status Code: 404 Not Found
Quando a configuração não existe, retorna um objeto vazio:
{}
Estrutura de Dados
A resposta é um objeto único com as seguintes propriedades:
| Campo | Tipo | Descrição |
|---|---|---|
id | integer | Identificador único da configuração |
dealer_id | integer | ID da loja (somente leitura) |
automatic_observation | boolean | Indica se a observação automática está ativa |
observation | string | Texto da observação automática (pode ser null) |
dynamic_km | boolean | Indica se o KM dinâmico está ativo |
show_price | boolean | Indica se o preço deve ser exibido no site |
show_km | boolean | Indica se o KM deve ser exibido no site |
price_text | string | Texto personalizado para o preço (pode ser null) |
km_text | string | Texto personalizado para o KM (pode ser null) |
mercado_livre_hours | string | Horário de preferência para Mercado Livre (pode ser null) |
use_different_price | boolean | Indica se deve usar preço diferente |
youtube_video_default | string | URL padrão do vídeo do YouTube (pode ser null) |
allow_feature_import_erp | boolean | Permite importação de características do ERP |
instagram_mask | string | Template de postagem para Instagram com tags que serão substituídas pelos dados do anúncio (pode ser null) |
facebook_mask | string | Template de postagem para Facebook com tags que serão substituídas pelos dados do anúncio (pode ser null) |
mercado_livre_email | string | Email para Mercado Livre (pode ser null) |
mercado_livre_phone_1 | string | Telefone 1 para Mercado Livre (máx. 11 caracteres, pode ser null) |
mercado_livre_phone_2 | string | Telefone 2 para Mercado Livre (máx. 11 caracteres, pode ser null) |
authorized_inclusion_brand_description | boolean | Autoriza inclusão de descrição da marca |
created_at | string | Data e hora de criação (somente leitura) |
updated_at | string | Data e hora de última atualização (pode ser null, somente leitura) |
Criar Configuração
Requisição
Método: POST
Endpoint: /dealer/{dealer_id}/config
Payload:
{
"automatic_observation": true,
"observation": "Nova observação automática",
"dynamic_km": false,
"show_price": true,
"show_km": true,
"price_text": "Preço",
"km_text": "Km",
"mercado_livre_hours": "09:00-18:00",
"use_different_price": false,
"youtube_video_default": "https://www.youtube.com/watch?v=example",
"allow_feature_import_erp": true,
"instagram_mask": "Confira este {marca} {modelo} {ano}! Preço: {preco}",
"facebook_mask": "Novo {marca} {modelo} {ano} disponível! Entre em contato.",
"mercado_livre_email": "contato@loja.com.br",
"mercado_livre_phone_1": "11987654321",
"mercado_livre_phone_2": "11912345678",
"authorized_inclusion_brand_description": false
}
Campos Opcionais
Todos os campos são opcionais, exceto os campos de somente leitura (id, dealer_id, created_at, updated_at).
Resposta de Sucesso
Status Code: 201 Created (quando cria nova configuração)
ou
Status Code: 200 OK (quando atualiza configuração existente)
Retorna o objeto da configuração criada ou atualizada.
Comportamento Especial
- Se já existir uma configuração para a loja, o método
POSTirá atualizar a configuração existente ao invés de criar uma nova - Isso significa que sempre haverá apenas uma configuração por loja
Atualizar Configuração
Requisição
Método: PUT ou PATCH
Endpoint: /dealer/{dealer_id}/config
Payload (PUT - atualização completa):
{
"automatic_observation": false,
"observation": "Observação atualizada",
"dynamic_km": true,
"show_price": false,
"show_km": true,
"price_text": "Consulte",
"km_text": "Quilometragem",
"use_different_price": true,
"allow_feature_import_erp": false
}
Payload (PATCH - atualização parcial):
{
"show_price": false,
"price_text": "Consulte preço"
}
Resposta de Sucesso
Status Code: 200 OK
Retorna o objeto atualizado da configuração.
Observações
- Cada loja pode ter apenas uma configuração de portal
- Os campos
id,dealer_id,created_ateupdated_atsão somente leitura e não podem ser alterados - O campo
observationé usado quandoautomatic_observationestá ativo - Os campos
price_textekm_textsão textos personalizados que aparecem no site quandoshow_priceeshow_kmestão ativos, respectivamente - Os campos
mercado_livre_*são específicos para integração com o Mercado Livre - Os campos
instagram_maskefacebook_masksão templates de postagem para as respectivas redes sociais. O usuário pode escrever um template usando tags (ex:{marca},{modelo},{ano},{preco}) que serão substituídas automaticamente pelos dados reais do anúncio quando a postagem for criada - O campo
mercado_livre_phone_1emercado_livre_phone_2têm limite máximo de 11 caracteres
Possíveis Retornos de Erro
400 Bad Request
Retornado quando há erros de validação nos dados enviados ou quando o parâmetro dealer_id não é fornecido.
{
"detail": "Parâmetro ID da Loja não encontrado"
}
ou
{
"mercado_livre_phone_1": ["Certifique-se de que este campo não tenha mais de 11 caracteres."],
"mercado_livre_email": ["Insira um endereço de email válido."]
}
401 Unauthorized
Retornado quando o token de autenticação não foi fornecido ou é inválido.
{
"detail": "As credenciais de autenticação não foram fornecidas."
}
ou
{
"detail": "Token inválido ou expirado."
}
403 Forbidden
Retornado quando o usuário autenticado não tem permissão para acessar este recurso.
{
"detail": "Você não tem permissão para executar essa ação."
}
404 Not Found
Retornado quando a loja especificada não é encontrada ou quando tenta atualizar uma configuração que não existe (métodos PUT/PATCH).
{
"detail": "Não encontrado."
}
ou
{
"detail": "Configuração de portal não encontrada para esta loja"
}