Aller au contenu

Remplacer les contacts d'un profil client (emails + téléphones E.164)

PUT
/v1/guests/{id}/contacts
curl --request PUT \
--url https://example.com/v1/guests/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/contacts \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <X-API-Key>' \
--data '{ "emails": [ { "address": "hello@example.com", "isPrimary": true } ], "phones": [ { "number": "example", "isPrimary": true } ] }'

Idempotent : remplace TOUTES les adresses email et tous les numéros de téléphone du profil en 1 transaction. Format E.164 obligatoire pour les téléphones (ex. +33612345678). Au plus 1 email primaire et 1 téléphone primaire. Un seul contact d’un type sans isPrimary → marqué primaire par défaut. Interdit sur un profil anonymisé (409 GUEST_PROFILE_ANONYMIZED). Email NON unique cross-profil (décision 0030) : un même email peut être partagé entre profils (familles). Seul le doublon INTRA-profil (même email deux fois dans le tableau d’entrée) est refusé (400 CONTACT_DUPLICATE_IN_PROFILE).

id
required
string format: uuid

UUID du profil guest

Media type application/json
object
emails
required
Array<object>
<= 10 items
object
address
required
string format: email
isPrimary
boolean
phones
required
Array<object>
<= 10 items
object
number
required

Format E.164 (ex. +33612345678)

string
isPrimary
boolean
Example generated
{
"emails": [
{
"address": "hello@example.com",
"isPrimary": true
}
],
"phones": [
{
"number": "example",
"isPrimary": true
}
]
}

Contacts remplacés

Media type application/json
object
data
required
object
updated
required
boolean
Example
{
"data": {
"updated": true
}
}

Format invalide (E.164, email, multiples primaires) ou doublon intra-profil (CONTACT_DUPLICATE_IN_PROFILE — même email deux fois dans le tableau)

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
}

Non authentifié

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
}

Permission refusée (guest.create)

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
}