Aller au contenu

Créer ou mettre à jour le profil de facturation PRO d'un client

PUT
/v1/guests/{id}/billing-profile
curl --request PUT \
--url https://example.com/v1/guests/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/billing-profile \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <X-API-Key>' \
--data '{ "kind": "individual", "companyName": "example", "vatRegime": "consumer", "siret": "example", "vatNumber": "example", "billingAddress": { "line1": "example", "line2": "example", "city": "example", "postalCode": "example", "countryCode": "example" } }'

Upsert (create-or-update) idempotent du profil de facturation. Validation domaine : SIRET = 14 chiffres + clé de Luhn ; TVA intracom = /^[A-Z]{2}[A-Z0-9]{2,12}$/. kind=business : companyName requis + (siret OU vatNumber) requis. Vérification en ligne INSEE/VIES si FISCAL_VERIFICATION_ENABLED=true (inform-don’t-block : unreachable n’empêche pas l’enregistrement). Interdit sur un profil anonymisé (409 GUEST_PROFILE_ANONYMIZED).

id
required
string format: uuid

UUID du profil guest

Media type application/json
object
kind
required
string
Allowed values: individual business
companyName

Requis si kind=business

string
nullable <= 200 characters
vatRegime
required
string
Allowed values: consumer fr_business fr_business_exempt eu_business_vatid non_eu
siret

SIRET 14 chiffres (clé Luhn vérifiée)

string
nullable <= 14 characters
vatNumber

N° TVA intracom (ex. FR12345678901)

string
nullable <= 15 characters
billingAddress
object
line1
required
string
<= 200 characters
line2
string
nullable <= 200 characters
city
required
string
<= 100 characters
postalCode
required
string
<= 20 characters
countryCode
required

ISO 3166-1 alpha-2

string

Profil de facturation mis à jour

Media type application/json
object
data
required
object
verificationStatus
required
string
Allowed values: unverified verified invalid unreachable
Example
{
"data": {
"verificationStatus": "unverified"
}
}

Données invalides (SIRET Luhn, format TVA, business-sans-identifiant)

Media type application/json
object
code
required

Code machine de l’erreur

string
message
required

Message lisible

string
origin

Origine domaine de l’erreur (optionnel)

object
boundedContext
string
module
string
status
required
integer
traceId
required

Identifiant de corrélation pour le support

string
Example
{
"code": "RESERVATION_NOT_FOUND",
"message": "Réservation introuvable",
"status": 404
}

Profil guest introuvable

Media type application/json
object
code
required

Code machine de l’erreur

string
message
required

Message lisible

string
origin

Origine domaine de l’erreur (optionnel)

object
boundedContext
string
module
string
status
required
integer
traceId
required

Identifiant de corrélation pour le support

string
Example
{
"code": "RESERVATION_NOT_FOUND",
"message": "Réservation introuvable",
"status": 404
}

Profil anonymisé (GUEST_PROFILE_ANONYMIZED)

Media type application/json
object
code
required

Code machine de l’erreur

string
message
required

Message lisible

string
origin

Origine domaine de l’erreur (optionnel)

object
boundedContext
string
module
string
status
required
integer
traceId
required

Identifiant de corrélation pour le support

string
Example
{
"code": "RESERVATION_NOT_FOUND",
"message": "Réservation introuvable",
"status": 404
}