Register New Company
POST/company/auth/register
Endpoint pour enregistrer de nouvelles entreprises et leur utilisateur administrateur initial.
Effectue les opérations suivantes :
- Valide les données obligatoires (raison sociale, mots de passe correspondants)
- Vérifie l'unicité de l'email
- Crée l'adresse fiscale
- Crée l'entreprise dans la base de données
- Crée l'utilisateur administrateur
- Configure le compte Stripe (customer + connected account)
- Envoie l'email de bienvenue
- Crée un tarif initial gratuit pendant 1 mois
- Lie avec un fournisseur existant si le taxid correspond
Flux détaillé :
- Le client envoie les données de l'entreprise et de l'utilisateur au format JSON
- Le serveur valide les champs obligatoires (406 si manquants)
- Vérifie le taxid selon les normes fiscales espagnoles (406 si invalide)
- Vérifie l'unicité de l'email (403 si existe déjà)
- Crée l'adresse fiscale avec les données fournies
- Enregistre l'entreprise dans la base de données
- Crée l'utilisateur administrateur avec mot de passe haché
- Configure le compte Stripe (customer + connected account) pour les futurs paiements
- Envoie l'email d'activation avec un token unique
- Crée un tarif initial gratuit pendant 30 jours
- Si un company_provider existe avec le même taxid, le lie automatiquement
Exigences des données :
- Taxid/NIF/CIF valide selon la réglementation espagnole (optionnel mais recommandé)
- Raison sociale complète
- Email professionnel non enregistré
- Mot de passe sécurisé (minimum 8 caractères, majuscules, chiffres et caractères spéciaux)
- Adresse fiscale complète
Structure de la requête :
\{
user: \{
email: admin@entreprise.com,
password: MotDePasseSecurise123!,
password_
<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":"Données de l'utilisateur administrateur","properties":{"email":{"type":"string","format":"email","description":"E-mail de l'utilisateur"},"password":{"type":"string","format":"password","description":"Mot de passe de l'utilisateur"},"password_confirm":{"type":"string","description":"Confirmation du mot de passe"}}},"invoice_data":{"type":"object","description":"Données fiscales de facturation","properties":{"taxid":{"type":"string","description":"NIF/CIF de l'entreprise"},"email":{"type":"string","format":"email","description":"Email de facturation"},"socialName":{"type":"string","description":"Dénomination sociale"},"phone":{"type":"string","description":"Téléphone de contact"}}},"socialName":{"type":"string","description":"Dénomination sociale de l'entreprise"},"address":{"type":"object","description":"Adresse fiscale de l'entreprise","properties":{"place_id":{"type":"string","description":"ID du lieu Google Places"},"formatted_address":{"type":"string","description":"Adresse formatée"},"geometry":{"type":"object","description":"Coordonnées GPS","properties":{"location":{"type":"object","properties":{"lat":{"type":"number","format":"float"},"lng":{"type":"number","format":"float"}}}}},"address_components":{"type":"array","description":"Composants de la direction","items":{"type":"object"}},"phone":{"type":"string","description":"Téléphone de l'adresse"}}}},"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":"Enregistrement réussi (retourne un objet vide)","content":{"application/json":{"schema":{"type":"object","example":{}}}},"headers":{}},"400":{"description":"Erreur lors de la création de l'adresse ou UTC invalide","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"integer","example":400},"message":{"type":"string","example":"Error creating address"}}}}},"headers":{}},"403":{"description":"E-mail déjà enregistré","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"integer","example":403},"message":{"type":"string","example":"COMPANY_EXISTS"},"existingCompany":{"type":"object"}}}}},"headers":{}},"406":{"description":"Erreur de validation","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>