Aller au contenu

Ajouter une restriction alimentaire (STAFF — consentement guest-level)

POST
/v1/guests/{id}/dietary
curl --request POST \
--url https://example.com/v1/guests/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/dietary \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <X-API-Key>' \
--data '{ "typeId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "label": "example", "category": "allergen", "severity": "medical", "source": "staff", "notes": "example", "consent": { "consentStatementRef": "example", "channel": "phone_verbal", "staffAttestation": "example" } }'

Ajoute une restriction alimentaire au profil du guest. SAISIE HYBRIDE : typeId (référence au catalogue) OU label libre. 3 catégories RGPD : allergen/diet_restriction (art.9 — consentement) · preference (art.6 — libre). CONSENTEMENT GUEST-LEVEL : si le guest possède déjà un consentement health_dietary actif, il est réutilisé automatiquement — le bloc consent n’est pas nécessaire. 1ère restriction art.9 sans consentement existant → le bloc consent est OBLIGATOIRE (DIETARY_CONSENT_REQUIRED). preference : AUCUN consentement (le bloc consent est interdit). Plusieurs entrées autorisées (pas de contrainte d’unicité par type/libellé).

id
required
string format: uuid

UUID du profil guest

Media type application/json
object
typeId

UUID du type (GET /v1/dietary-types) — null si libellé libre

string format: uuid
nullable
label

Libellé libre — obligatoire si typeId=null

string
nullable <= 300 characters
category
required

Catégorie RGPD : allergen/diet_restriction=art.9 · preference=art.6

string
Allowed values: allergen diet_restriction preference
severity
required
string
Allowed values: medical strong preference
source
required
string
default: staff
Allowed values: staff guest_self imported third_party
notes
string
nullable <= 1000 characters
consent

Bloc consentement — requis uniquement pour la 1ère restriction art.9 sans consentement existant

object
consentStatementRef
required

Référence versionnée (ex: DIETARY_CONSENT_STATEMENT_v1_FR)

string
channel
required
string
Allowed values: phone_verbal paper checkin_tablet
staffAttestation
required

Attestation nominative staff

string
Media type application/json
object
data
required
object
restrictionId
required
string format: uuid
consentId
string format: uuid
nullable
consentCreated

True si un nouveau consentement a été inscrit

boolean
Example generated
{
"data": {
"restrictionId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"consentId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"consentCreated": true
}
}

Consentement manquant (art.9) ou données invalides

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
}

Guest ou type 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
}