Pular para o conteúdo principal

Configuração do Site

Consulte, crie ou atualize as configurações do site de uma loja específica.

Endpoint

GET /dealer/{dealer_id}/site-config
POST /dealer/{dealer_id}/site-config
PUT /dealer/{dealer_id}/site-config
PATCH /dealer/{dealer_id}/site-config

Métodos

  • GET: Retorna as configurações do site da loja
  • POST: Cria uma nova configuração do site
  • PUT: Atualiza completamente as configurações do site
  • PATCH: Atualiza parcialmente as configurações do site

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,
"dealer_name": "LOJA TESTE",
"page_title": "Loja Teste - Veículos Novos e Usados",
"meta_description": "Encontre os melhores veículos novos e usados na Loja Teste. Grande variedade de carros, motos e caminhões.",
"meta_keywords": "carros, veículos, automóveis, loja teste",
"email_proposal": "proposta@lojatest.com.br",
"email_form": "contato@lojatest.com.br",
"google_analytics": "G-XXXXXXXXXX",
"facebook_page": "https://facebook.com/lojatest",
"facebook_page_id": "123456789",
"twitter_page": "https://twitter.com/lojatest",
"youtube_channel": "https://youtube.com/@lojatest",
"instagram": "@lojatest",
"google_site_verification": "verification_code_123",
"google_recaptcha_site_key": "6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI",
"google_recaptcha_secret": "6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe",
"tiktok": "https://tiktok.com/@lojatest",
"facebook_pixel": "123456789012345",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-20T14:45:00Z",
"created_by": "João Silva",
"updated_by": "Maria Santos"
}

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
dealer_namestringNome da loja para exibição no site (pode ser null)
page_titlestringTítulo da página (SEO) (pode ser null)
meta_descriptionstringMeta descrição para SEO (pode ser null)
meta_keywordsstringPalavras-chave para SEO (pode ser null)
email_proposalstringEmail para receber propostas (pode ser null)
email_formstringEmail para receber formulários (pode ser null)
google_analyticsstringID do Google Analytics (pode ser null)
facebook_pagestringURL da página do Facebook (pode ser null)
facebook_page_idstringID da página do Facebook (pode ser null)
twitter_pagestringURL da página do Twitter (pode ser null)
youtube_channelstringURL do canal do YouTube (pode ser null)
instagramstringHandle do Instagram (ex: @lojatest) (pode ser null)
google_site_verificationstringCódigo de verificação do Google Search Console (pode ser null)
google_recaptcha_site_keystringChave pública do Google reCAPTCHA (pode ser null)
google_recaptcha_secretstringChave secreta do Google reCAPTCHA (pode ser null)
tiktokstringURL do perfil do TikTok (pode ser null)
facebook_pixelstringID do Facebook Pixel (pode ser null)
created_atstringData e hora de criação (somente leitura)
updated_atstringData e hora de última atualização (pode ser null, somente leitura)
created_bystringNome do usuário que criou a configuração (somente leitura)
updated_bystringNome do usuário que atualizou a configuração (pode ser null, somente leitura)

Criar Configuração

Requisição

Método: POST

Endpoint: /dealer/{dealer_id}/site-config

Payload:

{
"dealer_name": "LOJA TESTE",
"page_title": "Loja Teste - Veículos Novos e Usados",
"meta_description": "Encontre os melhores veículos novos e usados na Loja Teste",
"meta_keywords": "carros, veículos, automóveis",
"email_proposal": "proposta@lojatest.com.br",
"email_form": "contato@lojatest.com.br",
"google_analytics": "G-XXXXXXXXXX",
"facebook_page": "https://facebook.com/lojatest",
"facebook_page_id": "123456789",
"twitter_page": "https://twitter.com/lojatest",
"youtube_channel": "https://youtube.com/@lojatest",
"instagram": "@lojatest",
"google_site_verification": "verification_code_123",
"google_recaptcha_site_key": "6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI",
"google_recaptcha_secret": "6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe",
"tiktok": "https://tiktok.com/@lojatest",
"facebook_pixel": "123456789012345"
}

Campos Opcionais

Todos os campos são opcionais, exceto os campos de somente leitura (id, dealer_id, created_at, updated_at, created_by, updated_by).

Resposta de Sucesso

Status Code: 201 Created

Retorna o objeto da configuração criada.

Comportamento Especial

  • Se já existir uma configuração para a loja, o método POST retornará erro 400 Bad Request informando que a configuração já existe
  • Use PUT ou PATCH para atualizar uma configuração existente

Atualizar Configuração

Requisição

Método: PUT ou PATCH

Endpoint: /dealer/{dealer_id}/site-config

Payload (PUT - atualização completa):

{
"dealer_name": "LOJA TESTE ATUALIZADA",
"page_title": "Novo Título da Página",
"meta_description": "Nova descrição para SEO",
"meta_keywords": "novas, palavras, chave",
"email_proposal": "novo@email.com.br",
"email_form": "formulario@email.com.br",
"google_analytics": "G-NEW-ANALYTICS",
"facebook_page": "https://facebook.com/nova-pagina",
"facebook_page_id": "987654321",
"twitter_page": "https://twitter.com/nova-conta",
"youtube_channel": "https://youtube.com/@novo-canal",
"instagram": "@novo-instagram",
"google_site_verification": "novo_codigo_verificacao",
"google_recaptcha_site_key": "nova_chave_publica",
"google_recaptcha_secret": "nova_chave_secreta",
"tiktok": "https://tiktok.com/@novo-perfil",
"facebook_pixel": "987654321098765"
}

Payload (PATCH - atualização parcial):

{
"page_title": "Título Atualizado",
"meta_description": "Descrição atualizada"
}

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 site
  • Os campos id, dealer_id, created_at, updated_at, created_by e updated_by são somente leitura e não podem ser alterados
  • O campo dealer_id é automaticamente definido com base no parâmetro da URL
  • Os campos created_by e updated_by são automaticamente preenchidos pelo sistema com o usuário que realiza a operação
  • O campo email_proposal é usado para receber propostas de compra através do site
  • O campo email_form é usado para receber formulários de contato através do site
  • Os campos meta_description e meta_keywords são importantes para SEO (Search Engine Optimization)
  • O campo page_title aparece na aba do navegador e nos resultados de busca
  • O campo google_analytics deve conter o ID de medição do Google Analytics (formato: G-XXXXXXXXXX)
  • O campo facebook_pixel é usado para rastreamento de conversões no Facebook
  • O campo instagram deve conter o handle do Instagram (ex: @lojatest) sem a URL completa
  • Os campos youtube_channel, twitter_page e tiktok devem conter URLs completas
  • Os campos google_recaptcha_site_key e google_recaptcha_secret são usados para proteção contra spam em formulários
  • O campo google_site_verification é usado para verificar a propriedade do site no Google Search Console

Possíveis Retornos de Erro

400 Bad Request

Retornado quando há erros de validação nos dados enviados, quando o parâmetro dealer_id não é fornecido, ou quando tenta criar uma configuração que já existe.

Configuração já existe:

{
"detail": "Configuração de site já existe para esta loja. Use PUT ou PATCH para atualizar."
}

Parâmetro faltando:

{
"detail": "Parâmetro ID da Loja não encontrado"
}

Erros de validação:

{
"email_proposal": ["Insira um endereço de email válido."],
"youtube_channel": ["Insira uma URL válida."]
}

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 site não encontrada para esta loja"
}