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 lojaPOST: Cria uma nova configuração do sitePUT: Atualiza completamente as configurações do sitePATCH: Atualiza parcialmente as configurações do site
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,
"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:
| Campo | Tipo | Descrição |
|---|---|---|
id | integer | Identificador único da configuração |
dealer_id | integer | ID da loja |
dealer_name | string | Nome da loja para exibição no site (pode ser null) |
page_title | string | Título da página (SEO) (pode ser null) |
meta_description | string | Meta descrição para SEO (pode ser null) |
meta_keywords | string | Palavras-chave para SEO (pode ser null) |
email_proposal | string | Email para receber propostas (pode ser null) |
email_form | string | Email para receber formulários (pode ser null) |
google_analytics | string | ID do Google Analytics (pode ser null) |
facebook_page | string | URL da página do Facebook (pode ser null) |
facebook_page_id | string | ID da página do Facebook (pode ser null) |
twitter_page | string | URL da página do Twitter (pode ser null) |
youtube_channel | string | URL do canal do YouTube (pode ser null) |
instagram | string | Handle do Instagram (ex: @lojatest) (pode ser null) |
google_site_verification | string | Código de verificação do Google Search Console (pode ser null) |
google_recaptcha_site_key | string | Chave pública do Google reCAPTCHA (pode ser null) |
google_recaptcha_secret | string | Chave secreta do Google reCAPTCHA (pode ser null) |
tiktok | string | URL do perfil do TikTok (pode ser null) |
facebook_pixel | string | ID do Facebook Pixel (pode ser null) |
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) |
created_by | string | Nome do usuário que criou a configuração (somente leitura) |
updated_by | string | Nome 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
POSTretornará erro400 Bad Requestinformando que a configuração já existe - Use
PUTouPATCHpara 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_byeupdated_bysã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_byeupdated_bysã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_descriptionemeta_keywordssão importantes para SEO (Search Engine Optimization) - O campo
page_titleaparece na aba do navegador e nos resultados de busca - O campo
google_analyticsdeve 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
instagramdeve conter o handle do Instagram (ex:@lojatest) sem a URL completa - Os campos
youtube_channel,twitter_pageetiktokdevem conter URLs completas - Os campos
google_recaptcha_site_keyegoogle_recaptcha_secretsã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"
}