Pular para o conteúdo principal

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_label no 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

CampoTipoDescrição
corporate_namestringRazão social da loja
namestringNome fantasia da loja
cnpjstringCNPJ da loja (será validado e limpo automaticamente)
emailstringEmail de contato da loja
white_labelintegerID do white label (obrigatório apenas para administradores)

Campos Opcionais

CampoTipoDescrição
sitestringURL do site da loja
logostringLogo da loja codificado em base64 (pode ser data URL)
statusintegerID 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

CampoTipoDescrição
idintegerID único da loja (gerado automaticamente)
xml_folderstringNome da pasta XML (gerado automaticamente baseado no nome fantasia)
statusobjectStatus 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
  • 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_label nã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.

{
"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 status padrão é "Ativo" (ID = 1) se não for informado
  • O campo replication não está disponível na criação (é gerenciado separadamente)
  • O campo users sempre retorna vazio na criação (usuários são associados posteriormente)
  • O campo is_site_from_lc é definido automaticamente pelo sistema
  • O campo partner_id pode 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."
}