Pular para o conteúdo principal

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 loja
  • POST: Cria uma nova configuração de portal (ou atualiza se já existir)
  • PUT: Atualiza completamente as configurações de portal
  • PATCH: Atualiza parcialmente as configurações de portal

Parâmetros de URL

ParâmetroTipoDescrição
dealer_idintegerID 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:

CampoTipoDescrição
idintegerIdentificador único da configuração
dealer_idintegerID da loja (somente leitura)
automatic_observationbooleanIndica se a observação automática está ativa
observationstringTexto da observação automática (pode ser null)
dynamic_kmbooleanIndica se o KM dinâmico está ativo
show_pricebooleanIndica se o preço deve ser exibido no site
show_kmbooleanIndica se o KM deve ser exibido no site
price_textstringTexto personalizado para o preço (pode ser null)
km_textstringTexto personalizado para o KM (pode ser null)
mercado_livre_hoursstringHorário de preferência para Mercado Livre (pode ser null)
use_different_pricebooleanIndica se deve usar preço diferente
youtube_video_defaultstringURL padrão do vídeo do YouTube (pode ser null)
allow_feature_import_erpbooleanPermite importação de características do ERP
instagram_maskstringTemplate de postagem para Instagram com tags que serão substituídas pelos dados do anúncio (pode ser null)
facebook_maskstringTemplate de postagem para Facebook com tags que serão substituídas pelos dados do anúncio (pode ser null)
mercado_livre_emailstringEmail para Mercado Livre (pode ser null)
mercado_livre_phone_1stringTelefone 1 para Mercado Livre (máx. 11 caracteres, pode ser null)
mercado_livre_phone_2stringTelefone 2 para Mercado Livre (máx. 11 caracteres, pode ser null)
authorized_inclusion_brand_descriptionbooleanAutoriza inclusão de descrição da marca
created_atstringData e hora de criação (somente leitura)
updated_atstringData 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 POST irá 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_at e updated_at são somente leitura e não podem ser alterados
  • O campo observation é usado quando automatic_observation está ativo
  • Os campos price_text e km_text são textos personalizados que aparecem no site quando show_price e show_km estão ativos, respectivamente
  • Os campos mercado_livre_* são específicos para integração com o Mercado Livre
  • Os campos instagram_mask e facebook_mask sã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_1 e mercado_livre_phone_2 tê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"
}