Aller au contenu principal

Register New Company

POST 

/company/auth/register

Endpoint pour enregistrer de nouvelles entreprises et leur utilisateur administrateur initial.
Effectue les opérations suivantes :

  1. Valide les données obligatoires (raison sociale, mots de passe correspondants)
  2. Vérifie l'unicité de l'email
  3. Crée l'adresse fiscale
  4. Crée l'entreprise dans la base de données
  5. Crée l'utilisateur administrateur
  6. Configure le compte Stripe (customer + connected account)
  7. Envoie l'email de bienvenue
  8. Crée un tarif initial gratuit pendant 1 mois
  9. Lie avec un fournisseur existant si le taxid correspond

Flux détaillé :

  1. Le client envoie les données de l'entreprise et de l'utilisateur au format JSON
  2. Le serveur valide les champs obligatoires (406 si manquants)
  3. Vérifie le taxid selon les normes fiscales espagnoles (406 si invalide)
  4. Vérifie l'unicité de l'email (403 si existe déjà)
  5. Crée l'adresse fiscale avec les données fournies
  6. Enregistre l'entreprise dans la base de données
  7. Crée l'utilisateur administrateur avec mot de passe haché
  8. Configure le compte Stripe (customer + connected account) pour les futurs paiements
  9. Envoie l'email d'activation avec un token unique
  10. Crée un tarif initial gratuit pendant 30 jours
  11. 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>