Criar Nova Loja
Crie uma nova loja/dealer no sistema.
Endpoint
POST /dealer
Método
POST
Autenticação
Este endpoint requer autenticação via JWT. Inclua o token no header:
Authorization: Bearer {access_token}
Permissões necessárias:
- Administrador: Pode criar lojas para qualquer white label (deve informar
white_labelno payload) - White Label Admin: Pode criar lojas apenas para seu próprio white label (
white_labelé automático) - Usuário Regular: Não tem permissão para criar lojas
Requisição
Payload
{
"corporate_name": "LOJA TESTE LTDA",
"name": "LOJA TESTE",
"cnpj": "12.345.678/0001-90",
"email": "contato@lojatest.com.br",
"site": "https://www.lojatest.com.br",
"logo": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAv/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAX/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABmX/9k=",
"status": 1,
"white_label": 1
}
Campos Obrigatórios
| Campo | Tipo | Descrição |
|---|---|---|
corporate_name | string | Razão social da loja |
name | string | Nome fantasia da loja |
cnpj | string | CNPJ da loja (será validado e limpo automaticamente) |
email | string | Email de contato da loja |
white_label | integer | ID do white label (obrigatório apenas para administradores) |
Campos Opcionais
| Campo | Tipo | Descrição |
|---|---|---|
site | string | URL do site da loja |
logo | string | Logo da loja codificado em base64 (pode ser data URL) |
status | integer | ID do status da loja (padrão: 1 = Ativo) |
Exemplo de Resposta
Sucesso
Status Code: 201 Created
{
"id": 10,
"corporate_name": "LOJA TESTE LTDA",
"name": "LOJA TESTE",
"cnpj": "12345678000190",
"email": "contato@lojatest.com.br",
"site": "https://www.lojatest.com.br",
"logo": "https://media.integradordeanuncios.com.br/media/logo/abc123def456.jpg",
"xml_folder": "loja-teste",
"replication": false,
"status": {
"id": 1,
"name": "Ativo"
},
"users": [],
"is_site_from_lc": false,
"partner_id": null,
"white_label": {
"id": 1,
"name": "Padrão"
}
}
Estrutura de Dados
A resposta segue a mesma estrutura do endpoint de listagem. Consulte a documentação de /dealer para detalhes completos sobre todos os campos.
Campos Gerados Automaticamente
| Campo | Tipo | Descrição |
|---|---|---|
id | integer | ID único da loja (gerado automaticamente) |
xml_folder | string | Nome da pasta XML (gerado automaticamente baseado no nome fantasia) |
status | object | Status da loja (padrão: Ativo se não informado) |
Validações
CNPJ
- O CNPJ é validado quanto ao formato e dígitos verificadores
- Caracteres não numéricos são removidos automaticamente
- O CNPJ deve ser único dentro do mesmo white label
- CNPJs diferentes podem existir em white labels diferentes
Email
- O email é validado quanto ao formato
- O email é convertido para minúsculas automaticamente
- Espaços em branco são removidos
Logo
- O logo deve ser uma string base64 válida
- Pode ser fornecido como data URL (
data:image/jpeg;base64,...) ou base64 puro - Formatos suportados: JPEG, JPG, PNG, WebP
- Se não especificado o formato no data URL, assume-se JPEG por padrão
- O logo é salvo automaticamente no storage e a URL é gerada
White Label
- Para Administradores: O campo
white_labelé obrigatório no payload - Para White Label Admins: O campo
white_labelnão deve ser informado (será usado o white label do usuário automaticamente) - White Label Admins não podem criar lojas para white labels diferentes do seu
XML Folder (pastaxml)
- É gerado automaticamente baseado no nome fantasia (
name) - O nome é convertido para slug (sem acentos, espaços viram hífens, tudo minúsculo)
- Se o slug já existir, um número sequencial é adicionado (ex:
loja-teste-1,loja-teste-2) - Se o nome fantasia não gerar um slug válido, usa-se "loja" como base
Exemplos de Uso
Criar Loja como Administrador
{
"corporate_name": "LOJA TESTE LTDA",
"name": "LOJA TESTE",
"cnpj": "12.345.678/0001-90",
"email": "contato@lojatest.com.br",
"site": "https://www.lojatest.com.br",
"white_label": 1
}
Criar Loja como White Label Admin
{
"corporate_name": "MINHA LOJA LTDA",
"name": "MINHA LOJA",
"cnpj": "98.765.432/0001-10",
"email": "contato@minhaloja.com.br",
"site": "https://www.minhaloja.com.br"
}
Observação: White Label Admins não precisam (e não devem) informar white_label - será usado automaticamente o white label do usuário.
Criar Loja com Logo
{
"corporate_name": "LOJA COM LOGO LTDA",
"name": "LOJA COM LOGO",
"cnpj": "11.222.333/0001-44",
"email": "contato@logoloja.com.br",
"logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg=="
}
Observações
- O campo
xml_folderé gerado automaticamente e não pode ser especificado manualmente - O campo
statuspadrão é "Ativo" (ID = 1) se não for informado - O campo
replicationnão está disponível na criação (é gerenciado separadamente) - O campo
userssempre retorna vazio na criação (usuários são associados posteriormente) - O campo
is_site_from_lcé definido automaticamente pelo sistema - O campo
partner_idpode ser definido posteriormente - O CNPJ é armazenado apenas com números (sem formatação)
- O logo é processado e salvo automaticamente, retornando a URL completa na resposta
- Apenas administradores e white label admins podem criar lojas
- Usuários regulares recebem erro 403 ao tentar criar lojas
Possíveis Retornos de Erro
400 Bad Request
Retornado quando há erros de validação nos dados enviados.
Campos obrigatórios faltando:
{
"corporate_name": ["Este campo é obrigatório."],
"name": ["Este campo é obrigatório."],
"cnpj": ["CNPJ é obrigatório."],
"email": ["Email é obrigatório."]
}
CNPJ inválido:
{
"cnpj": ["CNPJ inválido."]
}
CNPJ duplicado no mesmo white label:
{
"cnpj": ["CNPJ 12345678000190 já existe para este white label."]
}
Logo inválido:
{
"logo": ["Logo deve ser um código base64 válido."]
}
White Label Admin tentando criar para outro white label:
{
"white_label": ["Você só pode criar lojas para o seu próprio white label."]
}
Administrador sem white_label:
{
"white_label": ["White label é obrigatório no payload para administradores."]
Usuário sem white label associado:
{
"non_field_errors": ["Usuário não possui white label associado."]
}
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 criar lojas (usuários regulares).
{
"detail": "Você não tem permissão para executar essa ação."
}