Pular para o conteúdo principal

Register New Company

POST 

/company/auth/register

Endpoint para registrar novas empresas e seu usuário administrador inicial.
Realiza as seguintes operações:

  1. Valida dados obrigatórios (razão social, senhas coincidentes)
  2. Verifica unicidade do email
  3. Cria endereço fiscal
  4. Cria empresa no banco de dados
  5. Cria usuário administrador
  6. Configura conta Stripe (customer + connected account)
  7. Envia email de boas-vindas
  8. Cria tarifa inicial gratuita por 1 mês
  9. Vincula com fornecedor existente se o taxid coincidir

Fluxo detalhado:

  1. Cliente envia dados da empresa e do usuário em formato JSON
  2. Servidor valida campos obrigatórios (406 se faltarem)
  3. Verifica taxid conforme normas fiscais espanholas (406 se inválido)
  4. Verifica unicidade do email (403 se existir)
  5. Cria endereço fiscal com os dados fornecidos
  6. Registra empresa no banco de dados
  7. Cria usuário administrador com senha criptografada
  8. Configura conta Stripe (customer + connected account) para pagamentos futuros
  9. Envia email de ativação com token único
  10. Cria tarifa inicial gratuita por 30 dias
  11. Se existir um company_provider com o mesmo taxid, vincula-o

Requisitos de dados:

  • Taxid/NIF/CIF válido conforme normativa espanhola (opcional, mas recomendado)
  • Razão social completa
  • Email corporativo não registrado
  • Senha segura (mínimo 8 caracteres, maiúsculas, números e caracteres especiais)
  • Endereço fiscal completo

Estrutura da requisição:

\{  
user: \{
email: admin@empresa.com,
password: SenhaSegura123!,
password_confirm: SenhaSegura123!
\},
invoice_data: \{
taxid: B12345678,
email: admin@empresa.com,

<Heading
id={"request"}
as={"h2"}
className={"openapi-tabs__heading"}
children={"Request"}
>
</Heading>

<ParamsDetails
parameters={[]}
>

</ParamsDetails>

<RequestSchema
title={"Body"}
body={{"content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"object","description":"Dados do usuário administrador","properties":{"email":{"type":"string","format":"email","description":"E-mail do usuário"},"password":{"type":"string","format":"password","description":"Senha do usuário"},"password_confirm":{"type":"string","description":"Confirmação de senha"}}},"invoice_data":{"type":"object","description":"Dados fiscais de faturação","properties":{"taxid":{"type":"string","description":"NIF/CIF da empresa"},"email":{"type":"string","format":"email","description":"E-mail de faturamento"},"socialName":{"type":"string","description":"Razão social"},"phone":{"type":"string","description":"Telefone de contato"}}},"socialName":{"type":"string","description":"Razão social da empresa"},"address":{"type":"object","description":"Endereço fiscal da empresa","properties":{"place_id":{"type":"string","description":"ID do local do Google Places"},"formatted_address":{"type":"string","description":"Endereço formatado"},"geometry":{"type":"object","description":"Coordenadas GPS","properties":{"location":{"type":"object","properties":{"lat":{"type":"number","format":"float"},"lng":{"type":"number","format":"float"}}}}},"address_components":{"type":"array","description":"Componentes da direção","items":{"type":"object"}},"phone":{"type":"string","description":"Telefone do endereço"}}}},"required":["user","invoice_data","socialName","address"],"title":"RegisterRequest"},"example":{"user":{"email":"admin@transportesejemplo.com","password":"Transportes2024!","password_confirm":"Transportes2024!"},"invoice_data":{"taxid":"B12345678","email":"admin@transportesejemplo.com","socialName":"Transportes Ejemplo S.L.","phone":"+34123456789"},"socialName":"Transportes Ejemplo S.L.","address":{"place_id":"ChIJgTwKgJcpQg0RaSKMYcHeNs","address_components":[{"long_name":"123","types":["street_number"]},{"long_name":"Calle Mayor","types":["route"]},{"long_name":"Madrid","types":["locality","administrative_area_level_2"]},{"long_name":"Madrid","types":["administrative_area_level_1"]},{"long_name":"28013","types":["postal_code"]},{"long_name":"Spain","types":["country"]}],"formatted_address":"Calle Mayor 123, Madrid, 28013, Spain","geometry":{"location":{"lat":40.4168,"lng":-3.7038}},"phone":"+34123456789"}}}},"required":true}}
>

</RequestSchema>

<StatusCodes
id={undefined}
label={undefined}
responses={{"200":{"description":"Registro bem-sucedido (retorna objeto vazio)","content":{"application/json":{"schema":{"type":"object","example":{}}}},"headers":{}},"400":{"description":"Erro ao criar endereço ou UTC inválido","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"integer","example":400},"message":{"type":"string","example":"Error creating address"}}}}},"headers":{}},"403":{"description":"E-mail já registrado","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"integer","example":403},"message":{"type":"string","example":"COMPANY_EXISTS"},"existingCompany":{"type":"object"}}}}},"headers":{}},"406":{"description":"Erro de validação","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"integer","example":406},"message":{"type":"string","enum":["NAME_REQUIRED","PASSWORD_NOT_MATCH","USER_ALREADY_EXISTS","USER_DISABLED_RECOVERABLE","CIA_ASIGN_FAILED","TRUCKER_DATA_INCOMPLETE"],"example":"PASSWORD_NOT_MATCH"}}}}},"headers":{}}}}
>

</StatusCodes>