Skip to main content

Rexistrar Nova Compañía

POST 

/company/auth/register

Endpoint para rexistrar novas empresas e o seu usuario administrador inicial.
Realiza as seguintes operacións:

  1. Valida datos obrigatorios (razón social, contrasinais coincidentes)
  2. Verifica unicidade do email
  3. Crea dirección fiscal
  4. Crea empresa na base de datos
  5. Crea usuario administrador
  6. Configura conta Stripe (customer + connected account)
  7. Envía email de benvida
  8. Crea tarifa inicial gratuíta por 1 mes
  9. Vincula con provedor existente se o taxid coincide

Fluxo detallado:

  1. Cliente envía datos de empresa e usuario en formato JSON
  2. Servidor valida campos obrigatorios (406 se faltan)
  3. Verifica taxid segundo normas fiscais españolas (406 se inválido)
  4. Comproba unicidade do email (403 se existe)
  5. Crea dirección fiscal cos datos proporcionados
  6. Rexistra empresa na base de datos
  7. Crea usuario administrador con contrasinal hasheado
  8. Configura conta Stripe (customer + connected account) para pagos futuros
  9. Envía email de activación con token único
  10. Crea tarifa inicial gratuíta por 30 días
  11. Se existe un company_provider co mesmo taxid, vincúlao

Requisitos de datos:

  • Taxid/NIF/CIF válido segundo normativa española (opcional pero recomendado)
  • Razón social completa
  • Email corporativo non rexistrado
  • Contrasinal seguro (mínimo 8 caracteres, maiúsculas, números e especiais)
  • Dirección fiscal completa

Estrutura do request:

\{  
user: \{
email: admin@empresa.com,
password: ContrasinalSeguro123!,
password_confirm: ContrasinalSeguro123!
\},
invoice_data: \{
taxid: B12345678,
email: admin@empresa.com,
socialName: Transportes Exemplo S.L

<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":"Datos do usuario administrador","properties":{"email":{"type":"string","format":"email","description":"Correo electrónico do usuario"},"password":{"type":"string","format":"password","description":"Contrasinal do usuario"},"password_confirm":{"type":"string","description":"Confirmación do contrasinal"}}},"invoice_data":{"type":"object","description":"Datos fiscais de facturación","properties":{"taxid":{"type":"string","description":"NIF/CIF da empresa."},"email":{"type":"string","format":"email","description":"Correo de facturación"},"socialName":{"type":"string","description":"Razón social"},"phone":{"type":"string","description":"Teléfono de contacto"}}},"socialName":{"type":"string","description":"Razón social da empresa"},"address":{"type":"object","description":"Enderezo fiscal da empresa","properties":{"place_id":{"type":"string","description":"ID do lugar de Google Places"},"formatted_address":{"type":"string","description":"Enderezo 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":"Compoñentes da dirección","items":{"type":"object"}},"phone":{"type":"string","description":"Teléfono da dirección"}}}},"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":"Rexistro exitoso (retorna obxecto baleiro)","content":{"application/json":{"schema":{"type":"object","example":{}}}},"headers":{}},"400":{"description":"Erro ao crear dirección 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":"Correo electrónico xa rexistrado","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 validación","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>