MALFORMED_REQUEST · 400 | Corps de requête illisible | Envoyez un JSON UTF-8 valide : vérifiez l’échappement et l’encodage du corps. |
VALIDATION_FAILED · 400 | Requête invalide | Corrigez les champs désignés par errors[] (pointer, code), puis renvoyez. Champs : errors[]. |
API_KEY_DISABLED · 401 | Clé API désactivée | Demandez au loueur de réactiver la clé dans Lexio : la même clé refonctionnera. |
API_KEY_EXPIRED · 401 | Clé API expirée | Demandez une nouvelle clé au loueur ; anticipez avec apiKey.expiresAt de GET /organization. |
API_KEY_INVALID · 401 | Clé API invalide | Vérifiez la forme de l’en-tête et la clé copiée ; une clé perdue ne se retrouve pas, le loueur en crée une autre. |
API_KEY_MISSING · 401 | Clé API absente | Ajoutez l’en-tête Authorization: Bearer lck_…. |
API_KEY_REVOKED · 401 | Clé API révoquée | Demandez une nouvelle clé au loueur. |
FEATURE_NOT_AVAILABLE · 403 | Fonctionnalité non incluse | Le plan du loueur n’inclut pas la fonctionnalité feature : voir la table des fonctionnalités du guide Authentification. Champs : feature. |
INSUFFICIENT_SCOPE · 403 | Scope insuffisant | Demandez au loueur une clé qui porte l’un des requiredScopes : une clé existante ne gagne pas de scope. Champs : requiredScopes. |
ORGANIZATION_SUSPENDED · 403 | Organisation suspendue | Le loueur doit régulariser son abonnement Lexio ; ne réessayez pas d’ici là. |
NOT_FOUND · 404 | Ressource introuvable | Vérifiez l’identifiant ; une clé partenaire ne voit que ses propres locations, devis et clients. Ne réessayez pas. Champs : resource. |
ROUTE_NOT_FOUND · 404 | Route inconnue | Vérifiez le chemin et l’adresse de base /api/external/v1. |
METHOD_NOT_ALLOWED · 405 | Méthode non autorisée | Utilisez l’une des méthodes de allowed. Champs : allowed. |
ALREADY_EXISTS · 409 | Doublon | Une ressource porte déjà cette valeur (field) : relisez conflictingId au lieu de recréer. Champs : field, conflictingId. |
BOOKING_REFUSED · 409 | Réservation refusée | Le loueur n’accepte pas cette réservation ; ne réessayez pas pour ce client. |
CREDIT_NOTE_NOT_ISSUABLE · 409 | Avoir impossible à émettre | L’avoir est refusé à l’émission ; detail en donne la cause (fiche entreprise du loueur incomplète, avoir en brouillon déjà ouvert…). Le loueur la règle dans Lexio, puis renvoyez. |
CUSTOMER_ANONYMIZED · 409 | Client anonymisé | La fiche est anonymisée et figée : utilisez une autre fiche client. |
CUSTOMER_BLOCKED · 409 | Client bloqué | Le loueur a bloqué ce client ; la décision se prend dans Lexio. |
DEFAULT_ITEM_REQUIRED · 409 | Élément par défaut requis | Désignez d’abord un autre élément par défaut, puis modifiez, désactivez ou supprimez celui-ci. |
IDEMPOTENCY_ALREADY_APPLIED · 409 | Écriture déjà appliquée | L’écriture est faite : ne renvoyez pas, relisez la ressource resourceId (en-tête Location quand elle se relit par un GET). Champs : resourceId. |
IDEMPOTENCY_IN_FLIGHT · 409 | Requête identique en cours | La même requête est en cours : renvoyez à l’identique après Retry-After. Rejouable après Retry-After. |
INVOICE_FINALIZED · 409 | Facture finalisée | Une facture émise fige ce point : la correction se fait dans Lexio. |
MAINTENANCE_TRACKING_ALREADY_STARTED · 409 | Suivi d’entretien déjà démarré | Le suivi d’entretien est déjà démarré ; sa réinitialisation se fait dans Lexio. Champs : maintenanceTrackingMode. |
MAINTENANCE_TRACKING_NOT_STARTED · 409 | Suivi d’entretien non démarré | Démarrez le suivi d’entretien du véhicule (maintenanceTrackingMode de PATCH /vehicles/{vehicleId}). |
OPTION_UNAVAILABLE · 409 | Option en rupture | Stock insuffisant (availableQuantity) : réduisez la quantité ou retirez l’option. Champs : optionId, availableQuantity. |
OVERPAYMENT_RESOLUTION_REQUIRED · 409 | Trop-perçu à résoudre | Renvoyez avec overpaymentResolution (scope payments.refund) ; si resolvableByKey est faux, le loueur traite la baisse dans Lexio. Champs : overpaidAmount, resolvableByKey. |
PAYMENT_PROVIDER_MANAGED · 409 | Paiement géré par le prestataire | Paiement encaissé chez Stripe : le remboursement se fait chez Stripe, et Lexio l’enregistre à réception de l’événement Stripe. |
PRICE_CHANGED · 409 | Prix modifié | Le prix a changé (currentTotalTTC) : redemandez un devis ou un aperçu, puis renvoyez avec le nouveau total. Champs : expectedTotalTTC, currentTotalTTC. |
QUOTE_ALREADY_USED · 409 | Devis déjà utilisé | Le devis a déjà créé la location rentalId : relisez-la ; une autre réservation demande un nouveau devis. Champs : rentalId. |
QUOTE_EXPIRED · 409 | Devis expiré | Demandez un nouveau devis. |
RANGE_OVERLAP · 409 | Plages qui se chevauchent | La plage chevauche celle de conflictingId : ajustez les bornes de l’une ou de l’autre. Champs : errors[], conflictingId, minRentalDays, maxRentalDays, minLeadDays, maxLeadDays. |
RENTAL_BUSY · 409 | Location occupée | Une autre opération est en cours : renvoyez à l’identique après Retry-After. Rejouable après Retry-After. |
RENTAL_CHANGED · 409 | Location modifiée entre-temps | La location a changé entre-temps : relisez-la, puis décidez. |
RENTAL_STATUS_NOT_ALLOWED · 409 | Statut de la location incompatible | Relisez la location : l’action n’est possible que dans les allowedStatuses (guide Cycle de vie). Champs : errors[], rentalStatus, allowedStatuses, action. |
RESOURCE_IN_USE · 409 | Ressource utilisée | Rien n’est écrit : l’élément est encore utilisé (blockers : cause et nombre). La description de l’opération donne l’alternative (désactiver, archiver, annuler, faire anonymiser par le support Lexio). Champs : blockers. |
SEPA_DEBIT_PENDING · 409 | Prélèvement SEPA en cours | Un prélèvement SEPA est en cours (pendingDebitAmount) : réessayez une fois réglé. Champs : pendingDebitAmount. |
VEHICLE_ARCHIVED · 409 | Véhicule archivé | Désarchivez le véhicule avant de le modifier, ou choisissez-en un autre. |
VEHICLE_UNAVAILABLE · 409 | Véhicule indisponible | Le véhicule n’est pas réservable sur la période (reasons, conflicts) : proposez une autre période ou un autre véhicule. Champs : reasons, conflicts, overdueOperations. |
CURSOR_EXPIRED · 410 | Curseur expiré | Curseur d’événements trop ancien : resynchronisez (guide Synchronisation). |
PAYLOAD_TOO_LARGE · 413 | Corps trop volumineux | Réduisez le corps sous maxBytes octets. Champs : maxBytes. |
UNSUPPORTED_MEDIA_TYPE · 415 | Type de contenu non pris en charge | Envoyez le corps avec l’un des types de accepted. Champs : accepted. |
BOOKING_RULE_VIOLATION · 422 | Règle de réservation non respectée | La période enfreint la règle rule du loueur : ajustez-la d’après businessHours et bookingRules de GET /organization. Champs : errors[], rule. |
DISCOUNT_CAP_EXCEEDED · 422 | Plafond de remise dépassé | Ramenez la remise à maxDiscountPercent au plus. Champs : errors[], maxDiscountPercent. |
DRIVER_AGE_MISMATCH · 422 | Âge du conducteur différent du devis | La date de naissance du titulaire contredit le devis (jeune conducteur) : redemandez un devis avec la bonne date. Champs : errors[]. |
IDEMPOTENCY_KEY_REUSED · 422 | Clé d’idempotence réutilisée | Cette Idempotency-Key a servi à une autre requête : une clé par opération. |
OPTION_OUT_OF_SEASON · 422 | Option hors saison | L’option n’est pas proposée sur ces dates : retirez-la. Champs : errors[]. |
OPTION_QUANTITY_EXCEEDED · 422 | Quantité d’option dépassée | Ramenez la quantité à maxQuantity au plus. Champs : errors[], maxQuantity. |
PAYMENT_EXCEEDS_DUE · 422 | Encaissement supérieur au dû | Enregistrez au plus dueAmount, le reste à payer. Champs : errors[], dueAmount. |
PAYMENT_NOT_VERIFIED · 422 | Paiement non vérifié | Le PaymentIntent ne correspond pas à la location (reason) : voir le guide Intégration d’une plateforme de réservation. Champs : errors[], reason. |
PRICING_CHOICE_NOT_AVAILABLE · 422 | Choix tarifaire indisponible | Choisissez l’un des availablePricingChoices. Champs : errors[], availablePricingChoices. |
PROMO_CODE_REJECTED · 422 | Code promo refusé | Code promo refusé (reason) : retirez-le ou adaptez la réservation. Champs : errors[], reason, minRentalDays. |
REFERENCE_INACTIVE · 422 | Référence inactive | La référence pointée par errors[] est désactivée : choisissez-en une active. Champs : errors[]. |
REFERENCE_NOT_FOUND · 422 | Référence introuvable | La référence pointée par errors[] n’existe pas, ou pas pour cette clé : relisez le catalogue. Champs : errors[]. |
REFUND_EXCEEDS_PAID · 422 | Remboursement supérieur à l’encaissé | Remboursez au plus maxRefundableAmount. Champs : errors[], maxRefundableAmount. |
UPLOAD_INVALID · 422 | Téléversement invalide | Le fichier déposé est refusé (errors[]) : déposez un fichier conforme. Champs : errors[]. |
VAT_REVERSE_CHARGE_NOT_ALLOWED · 422 | Autoliquidation impossible | Autoliquidation impossible (reason) : retirez isVatReverseCharge ou faites compléter le numéro de TVA manquant. Champs : reason. |
RATE_LIMITED · 429 | Trop de requêtes | Attendez Retry-After, puis renvoyez à l’identique. Champs : limit, windowSeconds, retryAfter. Rejouable après Retry-After. |
INTERNAL_ERROR · 500 | Erreur interne | Renvoyez avec la même Idempotency-Key après quelques secondes ; si l’erreur persiste, écrivez à contact@lexio.rent avec le requestId. |
SERVICE_UNAVAILABLE · 503 | Service momentanément indisponible | Un service tiers (dependency) est indisponible : renvoyez après Retry-After. Champs : dependency. Rejouable après Retry-After. |