Passa al contenuto principale

Register New Company

POST 

/company/auth/register

Endpoint per registrare nuove aziende e il loro utente amministratore iniziale. Esegue le seguenti operazioni:

  1. Valida i dati obbligatori (ragione sociale, password corrispondenti)
  2. Verifica l'unicità dell'email
  3. Crea l'indirizzo fiscale
  4. Crea l'azienda nel database
  5. Crea l'utente amministratore
  6. Configura l'account Stripe (customer + connected account)
  7. Invia l'email di benvenuto
  8. Crea la tariffa iniziale gratuita per 1 mese
  9. Collega a un fornitore esistente se il taxid coincide

Flusso dettagliato:

  1. Il client invia i dati dell'azienda e dell'utente in formato JSON
  2. Il server valida i campi obbligatori (406 se mancanti)
  3. Verifica il taxid secondo le norme fiscali spagnole (406 se non valido)
  4. Controlla l'unicità dell'email (403 se esiste già)
  5. Crea l'indirizzo fiscale con i dati forniti
  6. Registra l'azienda nel database
  7. Crea l'utente amministratore con password hashata
  8. Configura l'account Stripe (customer + connected account) per pagamenti futuri
  9. Invia l'email di attivazione con token univoco
  10. Crea la tariffa iniziale gratuita per 30 giorni
  11. Se esiste un company_provider con lo stesso taxid, lo collega automaticamente

Requisiti dei dati:

  • Taxid/NIF/CIF valido secondo la normativa spagnola (opzionale ma consigliato)
  • Ragione sociale completa
  • Email aziendale non registrata
  • Password sicura (minimo 8 caratteri, maiuscole, numeri e caratteri speciali)
  • Indirizzo fiscale completo

Struttura della richiesta:

\{
user: \{
email: admin@azienda.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":"Dati dell'amministratore utente","properties":{"email":{"type":"string","format":"email","description":"Email dell'utente"},"password":{"type":"string","format":"password","description":"Password dell'utente"},"password_confirm":{"type":"string","description":"Conferma password"}}},"invoice_data":{"type":"object","description":"Dati fiscali di fatturazione","properties":{"taxid":{"type":"string","description":"Partita IVA dell'azienda"},"email":{"type":"string","format":"email","description":"Email di fatturazione"},"socialName":{"type":"string","description":"Ragione sociale"},"phone":{"type":"string","description":"Telefono di contatto"}}},"socialName":{"type":"string","description":"Ragione sociale dell'azienda"},"address":{"type":"object","description":"Indirizzo fiscale dell'azienda","properties":{"place_id":{"type":"string","description":"ID del luogo di Google Places"},"formatted_address":{"type":"string","description":"Indirizzo formattato"},"geometry":{"type":"object","description":"Coordinate GPS","properties":{"location":{"type":"object","properties":{"lat":{"type":"number","format":"float"},"lng":{"type":"number","format":"float"}}}}},"address_components":{"type":"array","description":"Componenti dello sterzo","items":{"type":"object"}},"phone":{"type":"string","description":"Telefono dell'indirizzo"}}}},"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":"Registrazione riuscita (restituisce oggetto vuoto)","content":{"application/json":{"schema":{"type":"object","example":{}}}},"headers":{}},"400":{"description":"Errore durante la creazione dell'indirizzo o UTC non valido","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"integer","example":400},"message":{"type":"string","example":"Error creating address"}}}}},"headers":{}},"403":{"description":"Email già registrato","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"integer","example":403},"message":{"type":"string","example":"COMPANY_EXISTS"},"existingCompany":{"type":"object"}}}}},"headers":{}},"406":{"description":"Errore di convalida","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>