Aller au contenu

Bloquer des dates d'usage propriétaire sur une unité (T25.7, ADR-D63 §R6)

POST
/v1/owners/{id}/usage-blocks
curl --request POST \
--url https://example.com/v1/owners/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/usage-blocks \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <X-API-Key>' \
--data '{ "unitId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "from": "2026-04-15", "to": "2026-04-15", "nightsUsedThisYear": 1, "ownerUsageNightsPerYear": 1, "ownerUsageAdvanceDays": 1, "reason": "example", "today": "2026-04-15" }'

Vérifie quota annuel + préavis contractuels avant de bloquer côté Inventory (OOO owner_usage). Idempotent : un double blocage sur la même plage est silencieusement ignoré. ANTI-TAMPERING : le quota annuel, le préavis et le décompte de nuits déjà consommées sont RÉSOLUS CÔTÉ SERVEUR (contrat de gestion actif de l’unité + Σ nuits owner_usage_holds de l’année). Les champs nightsUsedThisYear / ownerUsageNightsPerYear / ownerUsageAdvanceDays du body sont DÉPRÉCIÉS et IGNORÉS (conservés uniquement pour rétrocompatibilité des clients existants).

id
required
string format: uuid

ID du propriétaire

Media type application/json
object
unitId
required
string format: uuid
from
required

Début de la plage (inclus)

string format: date
to
required

Fin de la plage (exclus)

string format: date
nightsUsedThisYear

DÉPRÉCIÉ — ignoré (résolu serveur : Σ nuits owner_usage_holds de l’année).

integer
<= 365
ownerUsageNightsPerYear

DÉPRÉCIÉ — ignoré (résolu serveur : quota du contrat de gestion actif).

integer
>= 1 <= 365
ownerUsageAdvanceDays

DÉPRÉCIÉ — ignoré (résolu serveur : préavis du contrat de gestion actif).

integer
<= 365
reason
required
string
<= 500 characters
today
required

Date du jour serveur-autoritaire (businessDate, ISO YYYY-MM-DD)

string format: date
Example generated
{
"unitId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"from": "2026-04-15",
"to": "2026-04-15",
"nightsUsedThisYear": 1,
"ownerUsageNightsPerYear": 1,
"ownerUsageAdvanceDays": 1,
"reason": "example",
"today": "2026-04-15"
}

Dates bloquées

Media type application/json
object
data
required
object
requestedNights
required
integer
Example generated
{
"data": {
"requestedNights": 1
}
}

Corps invalide, quota dépassé ou préavis insuffisant

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 (owner.manage)

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
}