Lexio Organisation API
Réglages de l’organisation liée à la clé : devise, fuseau, TVA, horaires, règles de réservation.
Réglages de l’organisation liée à la clé : devise, fuseau, TVA, horaires, règles de réservation.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/lexio-rent:lexio-rent-organisation-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Lexio Organisation API
version: 1.0.5
description: '# API Lexio v1
L’API Lexio permet à un loueur de véhicules, ou à une plateforme partenaire autorisée par lui, d’obtenir des prix, réserver, suivre et administrer ses locations depuis un serveur. Chaque appel agit sur l’organisation Lexio d’un seul loueur.
- **Adresse de base** : `https://api.lexio.rent/api/external/v1`
- **Authentification** : `Authorization: Bearer lck_…`, une clé créée par le loueur dans Lexio.
- **Format** : JSON en UTF-8 ; erreurs RFC 9457 avec un `code` stable.
- Réponses : `{ "data" }` ; listes `{ "data", "nextCursor" }` (Pagination) ; actions `{ "data", "effects" }`, `effects` décrivant ce que l’appel a déclenché (détaillé dans la référence).
- Dates : `startAt` et `endAt` en heure locale du loueur (`timezone`), sans décalage (`2026-11-28T10:00`, sinon `400 offset_not_allowed`) ; les réponses les rendent avec décalage, retirez-le avant de les renvoyer. Instants réels (`actualStartAt`, `actualEndAt`, `paidAt`, `takenAt`, `effectiveAt`) en RFC 3339 avec décalage (sinon `400 offset_required`).
- `PATCH` : champ omis inchangé, `null` efface ; un objet imbriqué est remplacé en entier, sauf s’il est dit « fusionné » sur l’opération.
- Corps de 1 Mio au plus, en `application/json` (`application/merge-patch+json` aussi sur `PATCH`). Trop gros : `413` ; autre type : `415` ; JSON illisible : `400` ; champ inconnu : `400` (dans une réponse, ignorez-le : Versions et évolutions).
- Chaque réponse porte `X-Request-Id`, repris dans `requestId` des erreurs. Vous pouvez fournir le vôtre (8 à 128 caractères parmi `A-Za-z0-9._:-`), sinon le serveur en génère un. Joignez-le à toute demande à contact@lexio.rent.
- **Spécification OpenAPI 3.1** : https://docs.lexio.rent/openapi.json, à importer dans votre client HTTP ou à utiliser pour générer un client.
- **Contact** (support technique, demande d’accès, organisation de démonstration) : contact@lexio.rent.
Vocabulaire : le **loueur** est l’entreprise de location, son **organisation** est son compte Lexio ; une **location** (`/rentals`) est un contrat de location d’un véhicule ; un **lieu** (`/locations`) est une adresse de départ ou de retour (le type `AGENCY` n’est qu’un type de lieu, pas le loueur).'
contact:
name: Support Lexio
email: contact@lexio.rent
url: https://docs.lexio.rent
servers:
- url: https://api.lexio.rent/api/external/v1
description: Production
security:
- ApiKey: []
tags:
- name: Organisation
description: 'Réglages de l’organisation liée à la clé : devise, fuseau, TVA, horaires, règles de réservation.'
paths:
/organization:
get:
operationId: getOrganization
summary: Lire l’organisation et la clé
description: '**Accès** : toute clé valide
Renvoie les réglages du loueur qui gouvernent les dates et les prix, et la clé qui appelle.
À lire une fois au démarrage : devise et nombre de décimales des montants (Montants et TVA), fuseau des heures de location, TVA, horaires et règles de réservation imposés aux clés partenaires.'
tags:
- Organisation
security:
- ApiKey: []
x-required-scopes: []
parameters: []
responses:
'200':
description: La ressource demandée.
headers:
X-Request-Id:
$ref: '#/components/headers/XRequestId'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Organization'
required:
- data
'400':
description: '`VALIDATION_FAILED`'
headers:
X-Request-Id:
$ref: '#/components/headers/XRequestId'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ValidationFailedProblem'
'401':
description: '`API_KEY_DISABLED`, `API_KEY_EXPIRED`, `API_KEY_INVALID`, `API_KEY_MISSING`, `API_KEY_REVOKED`'
headers:
X-Request-Id:
$ref: '#/components/headers/XRequestId'
WWW-Authenticate:
$ref: '#/components/headers/WwwAuthenticate'
content:
application/problem+json:
schema:
oneOf:
- $ref: '#/components/schemas/ApiKeyDisabledProblem'
- $ref: '#/components/schemas/ApiKeyExpiredProblem'
- $ref: '#/components/schemas/ApiKeyInvalidProblem'
- $ref: '#/components/schemas/ApiKeyMissingProblem'
- $ref: '#/components/schemas/ApiKeyRevokedProblem'
'403':
description: '`FEATURE_NOT_AVAILABLE`, `INSUFFICIENT_SCOPE`, `ORGANIZATION_SUSPENDED`'
headers:
X-Request-Id:
$ref: '#/components/headers/XRequestId'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
content:
application/problem+json:
schema:
oneOf:
- $ref: '#/components/schemas/FeatureNotAvailableProblem'
- $ref: '#/components/schemas/InsufficientScopeProblem'
- $ref: '#/components/schemas/OrganizationSuspendedProblem'
'429':
description: '`RATE_LIMITED`'
headers:
X-Request-Id:
$ref: '#/components/headers/XRequestId'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
Retry-After:
$ref: '#/components/headers/RetryAfter'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/RateLimitedProblem'
'500':
description: '`INTERNAL_ERROR`'
headers:
X-Request-Id:
$ref: '#/components/headers/XRequestId'
RateLimit-Limit:
$ref: '#/components/headers/RateLimitLimit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimitRemaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimitReset'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/InternalErrorProblem'
x-mint:
href: /api-reference/organisation/get-organization
metadata:
title: Lire l’organisation et la clé
sidebarTitle: Lire l’organisation et la clé
components:
schemas:
Organization:
type: object
properties:
id:
type: string
minLength: 1
description: Identifiant de l’organisation du loueur.
name:
type: string
description: Nom commercial du loueur.
currency:
type: string
enum:
- EUR
- XPF
- CHF
- CAD
- GBP
- USD
- XOF
description: Devise du loueur (ISO 4217), celle de tous les montants de son catalogue.
examples:
- EUR
currencyExponent:
type: integer
minimum: 0
maximum: 3
description: 'Nombre de décimales de la devise : 2 pour EUR, 0 pour XPF. Tout montant envoyé au-delà est refusé (400 `too_many_decimals`).'
timezone:
type: string
minLength: 1
description: 'Fuseau IANA du loueur : les heures de location sont des heures locales de ce fuseau.'
examples:
- Europe/Paris
vatPercent:
type: number
minimum: 0
maximum: 100
description: Taux de TVA appliqué aux prix HT, en % ; 0 si le loueur est exonéré.
isVatExempt:
type: boolean
description: 'true : loueur exonéré de TVA, `vatPercent` vaut alors 0.'
isVatReverseChargeAvailable:
type: boolean
description: 'true : le loueur admet l’autoliquidation de TVA (`isVatReverseCharge`), sous réserve du client et de la durée (`reason` `NOT_ELIGIBLE`) ; sinon une telle demande répond 422 `VAT_REVERSE_CHARGE_NOT_ALLOWED`.'
toleranceHours:
type: integer
minimum: 0
description: 'Retard toléré, en heures, avant de facturer un jour de plus : une durée de 3 jours et 2 h est facturée 3 jours si `toleranceHours` ≥ 2, sinon 4.'
rentalBufferMinutes:
type: integer
minimum: 0
description: 'Battement, en minutes, laissé libre avant et après chaque location d’un véhicule : un véhicule n’est pas disponible pendant ce battement.'
businessHours:
type: object
properties:
isOpen24h:
type: boolean
description: 'true : ouvert tous les jours de 00:00 à 23:59, `days` le reflète.'
days:
minItems: 7
maxItems: 7
type: array
items:
type: object
properties:
day:
type: string
enum:
- MONDAY
- TUESDAY
- WEDNESDAY
- THURSDAY
- FRIDAY
- SATURDAY
- SUNDAY
description: Jour de la semaine.
isOpen:
type: boolean
description: 'false : loueur fermé ce jour-là.'
openingTime:
anyOf:
- type: string
pattern: ^([01]\d|2[0-3]):[0-5]\d$
examples:
- 09:00
- type: 'null'
description: Heure d’ouverture `HH:mm`, heure locale du loueur ; null un jour fermé.
closingTime:
anyOf:
- type: string
pattern: ^([01]\d|2[0-3]):[0-5]\d$
examples:
- 09:00
- type: 'null'
description: Heure de fermeture `HH:mm`, incluse ; null un jour fermé.
required:
- day
- isOpen
- openingTime
- closingTime
description: Les 7 jours de la semaine, du lundi au dimanche.
required:
- isOpen24h
- days
description: 'Horaires d’ouverture. Clé partenaire : départ et retour doivent tomber dans ces horaires (422 `BOOKING_RULE_VIOLATION`) ; une clé interne n’y est pas soumise.'
bookingRules:
type: object
properties:
minLeadHours:
type: integer
minimum: 0
description: Délai minimal, en heures, entre maintenant et le départ.
maxHorizonDays:
type: integer
minimum: 0
description: Le départ tombe au plus tard ce nombre de jours après aujourd’hui.
minRentalDays:
type: integer
minimum: 0
description: Nombre minimal de jours calendaires entre le jour du départ et celui du retour.
required:
- minLeadHours
- maxHorizonDays
- minRentalDays
description: Règles de réservation, appliquées aux seules clés partenaires (422 `BOOKING_RULE_VIOLATION`).
apiKey:
type: object
properties:
id:
type: string
format: uuid
description: Identifiant de la clé qui appelle.
name:
type: string
description: Nom donné à la clé dans Lexio.
partnerCode:
description: 'Code partenaire de la clé : elle ne voit que les clients, devis, locations et événements de ce code. null pour une clé interne, qui voit tous les clients et locations du loueur.'
type:
- string
- 'null'
scopes:
maxItems: 20
type: array
items:
type: string
enum:
- offers.read
- quotes.write
- rentals.read
- rentals.write
- rentals.operate
- rentals.delete
- payments.write
- payments.refund
- customers.read
- customers.write
- customers.delete
- vehicles.read
- vehicles.write
- vehicles.delete
- catalog.read
- catalog.write
- pricing.read
- pricing.write
- maintenance.read
- maintenance.write
description: Scopes accordés à la clé.
expiresAt:
anyOf:
- type: string
format: date-time
examples:
- '2027-11-10T10:00:00+01:00'
- type: 'null'
description: Fin de validité de la clé ; null si elle n’expire pas.
required:
- id
- name
- partnerCode
- scopes
- expiresAt
description: La clé API qui fait l’appel.
required:
- id
- name
- currency
- currencyExponent
- timezone
- vatPercent
- isVatExempt
- isVatReverseChargeAvailable
- toleranceHours
- rentalBufferMinutes
- businessHours
- bookingRules
- apiKey
examples:
- id: 5f0c9a7e-2b1d-4c3e-8f6a-9d2e1b7c4a03
name: Riviera Location Nice
currency: EUR
currencyExponent: 2
timezone: Europe/Paris
vatPercent: 20
isVatExempt: false
isVatReverseChargeAvailable: false
toleranceHours: 2
rentalBufferMinutes: 120
businessHours:
isOpen24h: false
days:
- day: MONDAY
isOpen: true
openingTime: 08:00
closingTime: '19:00'
- day: TUESDAY
isOpen: true
openingTime: 08:00
closingTime: '19:00'
- day: WEDNESDAY
isOpen: true
openingTime: 08:00
closingTime: '19:00'
- day: THURSDAY
isOpen: true
openingTime: 08:00
closingTime: '19:00'
- day: FRIDAY
isOpen: true
openingTime: 08:00
closingTime: '19:00'
- day: SATURDAY
isOpen: true
openingTime: 08:00
closingTime: '19:00'
- day: SUNDAY
isOpen: false
openingTime: null
closingTime: null
bookingRules:
minLeadHours: 2
maxHorizonDays: 365
minRentalDays: 1
apiKey:
id: c3e8a1f4-6b2d-4e9a-8c7f-1a2b3c4d5e6f
name: Site de réservation
partnerCode: null
scopes:
- offers.read
- quotes.write
- rentals.read
- rentals.write
expiresAt: null
InsufficientScopeProblem:
type: object
properties:
type:
type: string
const: https://api.lexio.rent/errors/insufficient-scope
title:
type: string
examples:
- Scope insuffisant
status:
type: number
const: 403
code:
type: string
const: INSUFFICIENT_SCOPE
detail:
type: string
examples:
- Explication lisible, propre à cette requête.
instance:
type: string
examples:
- /api/external/v1/rentals
requestId:
type: string
examples:
- 5b0e2a1c-8f3d-4c7e-9a6b-1d2e3f4a5b6c
requiredScopes:
minItems: 1
maxItems: 20
type: array
items:
type: string
enum:
- offers.read
- quotes.write
- rentals.read
- rentals.write
- rentals.operate
- rentals.delete
- payments.write
- payments.refund
- customers.read
- customers.write
- customers.delete
- vehicles.read
- vehicles.write
- vehicles.delete
- catalog.read
- catalog.write
- pricing.read
- pricing.write
- maintenance.read
- maintenance.write
required:
- type
- title
- status
- code
- detail
- instance
- requestId
- requiredScopes
ApiKeyInvalidProblem:
type: object
properties:
type:
type: string
const: https://api.lexio.rent/errors/api-key-invalid
title:
type: string
examples:
- Clé API invalide
status:
type: number
const: 401
code:
type: string
const: API_KEY_INVALID
detail:
type: string
examples:
- Explication lisible, propre à cette requête.
instance:
type: string
examples:
- /api/external/v1/rentals
requestId:
type: string
examples:
- 5b0e2a1c-8f3d-4c7e-9a6b-1d2e3f4a5b6c
required:
- type
- title
- status
- code
- detail
- instance
- requestId
RateLimitedProblem:
type: object
properties:
type:
type: string
const: https://api.lexio.rent/errors/rate-limited
title:
type: string
examples:
- Trop de requêtes
status:
type: number
const: 429
code:
type: string
const: RATE_LIMITED
detail:
type: string
examples:
- Explication lisible, propre à cette requête.
instance:
type: string
examples:
- /api/external/v1/rentals
requestId:
type: string
examples:
- 5b0e2a1c-8f3d-4c7e-9a6b-1d2e3f4a5b6c
limit:
type: string
enum:
- PRE_AUTH
- PER_KEY
- WRITE
- QUOTE
windowSeconds:
type: integer
minimum: 1
retryAfter:
type: integer
minimum: 0
required:
- type
- title
- status
- code
- detail
- instance
- requestId
- limit
- windowSeconds
- retryAfter
ApiKeyMissingProblem:
type: object
properties:
type:
type: string
const: https://api.lexio.rent/errors/api-key-missing
title:
type: string
examples:
- Clé API absente
status:
type: number
const: 401
code:
type: string
const: API_KEY_MISSING
detail:
type: string
examples:
- Explication lisible, propre à cette requête.
instance:
type: string
examples:
- /api/external/v1/rentals
requestId:
type: string
examples:
- 5b0e2a1c-8f3d-4c7e-9a6b-1d2e3f4a5b6c
required:
- type
- title
- status
- code
- detail
- instance
- requestId
ApiKeyRevokedProblem:
type: object
properties:
type:
type: string
const: https://api.lexio.rent/errors/api-key-revoked
title:
type: string
examples:
- Clé API révoquée
status:
type: number
const: 401
code:
type: string
const: API_KEY_REVOKED
detail:
type: string
examples:
- Explication lisible, propre à cette requête.
instance:
type: string
examples:
- /api/external/v1/rentals
requestId:
type: string
examples:
- 5b0e2a1c-8f3d-4c7e-9a6b-1d2e3f4a5b6c
required:
- type
- title
- status
- code
- detail
- instance
- requestId
ValidationFailedProblem:
type: object
properties:
type:
type: string
const: https://api.lexio.rent/errors/validation-failed
title:
type: string
examples:
- Requête invalide
status:
type: number
const: 400
code:
type: string
const: VALIDATION_FAILED
detail:
type: string
examples:
- Explication lisible, propre à cette requête.
instance:
type: string
examples:
- /api/external/v1/rentals
requestId:
type: string
examples:
- 5b0e2a1c-8f3d-4c7e-9a6b-1d2e3f4a5b6c
errors:
minItems: 1
maxItems: 100
type: array
items:
type: object
properties:
pointer:
type: string
code:
type: string
enum:
- required
- invalid_type
- invalid_format
- invalid_value
- too_small
- too_big
- too_many_decimals
- out_of_range
- unknown_field
- null_not_allowed
- empty_string
- empty_patch
- mutually_exclusive
- not_applicable
- duplicate
- end_before_start
- date_in_past
- nonexistent_local_time
- offset_not_allowed
- offset_required
- upload_expired
- upload_incomplete
- upload_conflict
detail:
type: string
required:
- pointer
- code
- detail
required:
- type
- title
- status
- code
- detail
- instance
- requestId
- errors
OrganizationSuspendedProblem:
type: object
properties:
type:
type: string
const: https://api.lexio.rent/errors/organization-suspended
title:
type: string
examples:
- Organisation suspendue
status:
type: number
const: 403
code:
type: string
const: ORGANIZATION_SUSPENDED
detail:
type: string
examples:
- Explication lisible, propre à cette requête.
instance:
type: string
examples:
- /api/external/v1/rentals
requestId:
type: string
examples:
- 5b0e2a1c-8f3d-4c7e-9a6b-1d2e3f4a5b6c
required:
- type
- title
- status
- code
- detail
- instance
- requestId
ApiKeyDisabledProblem:
type: object
properties:
type:
type: string
const: https://api.lexio.rent/errors/api-key-disabled
title:
type: string
examples:
- Clé API désactivée
status:
type: number
const: 401
code:
type: string
const: API_KEY_DISABLED
detail:
type: string
examples:
- Explication lisible, propre à cette requête.
instance:
type: string
examples:
- /api/external/v1/rentals
requestId:
type: string
examples:
- 5b0e2a1c-8f3d-4c7e-9a6b-1d2e3f4a5b6c
required:
- type
- title
- status
- code
- detail
- instance
- requestId
InternalErrorProblem:
type: object
properties:
type:
type: string
const: https://api.lexio.rent/errors/internal-error
title:
type: string
examples:
- Erreur interne
status:
type: number
const: 500
code:
type: string
const: INTERNAL_ERROR
detail:
type: string
examples:
- Explication lisible, propre à cette requête.
instance:
type: string
examples:
- /api/external/v1/rentals
requestId:
type: string
examples:
- 5b0e2a1c-8f3d-4c7e-9a6b-1d2e3f4a5b6c
required:
- type
- title
- status
- code
- detail
- instance
- requestId
ApiKeyExpiredProblem:
type: object
properties:
type:
type: string
const: https://api.lexio.rent/errors/api-key-expired
title:
type: string
examples:
- Clé API expirée
status:
type: number
const: 401
code:
type: string
const: API_KEY_EXPIRED
detail:
type: string
examples:
- Explication lisible, propre à cette requête.
instance:
type: string
examples:
- /api/external/v1/rentals
requestId:
type: string
examples:
- 5b0e2a1c-8f3d-4c7e-9a6b-1d2e3f4a5b6c
required:
- type
- title
- status
- code
- detail
- instance
- requestId
FeatureNotAvailableProblem:
type: object
properties:
type:
type: string
const: https://api.lexio.rent/errors/feature-not-available
title:
type: string
examples:
- Fonctionnalité non incluse
status:
type: number
const: 403
code:
type: string
const: FEATURE_NOT_AVAILABLE
detail:
type: string
examples:
- Explication lisible, propre à cette requête.
instance:
type: string
examples:
- /api/external/v1/rentals
requestId:
type: string
examples:
- 5b0e2a1c-8f3d-4c7e-9a6b-1d2e3f4a5b6c
feature:
type: string
minLength: 1
required:
- type
- title
- status
- code
- detail
- instance
- requestId
- feature
headers:
XRequestId:
description: Identifiant de la requête, à communiquer au support.
schema:
type: string
RetryAfter:
description: Secondes à attendre avant de renvoyer la requête ; présent seulement avec `IDEMPOTENCY_IN_FLIGHT`, `RENTAL_BUSY`, `RATE_LIMITED` et `SERVICE_UNAVAILABLE`.
schema:
type: integer
minimum: 0
RateLimitLimit:
description: 'Plafond du compteur `PER_KEY` de la clé (requêtes par minute). Les compteurs `WRITE` et `QUOTE` ne se signalent que par un `429` : voir [Limites de débit](https://docs.lexio.rent/limites).'
schema:
type: integer
minimum: 0
RateLimitRemaining:
description: Requêtes encore permises sur le compteur `PER_KEY` dans la fenêtre en cours.
schema:
type: integer
minimum: 0
WwwAuthenticate:
description: Schéma d’authentification attendu (`Bearer`), avec `error="invalid_token"` pour une clé refusée.
schema:
type: string
RateLimitReset:
description: Secondes avant la remise à zéro du compteur `PER_KEY`.
schema:
type: integer
minimum: 0
securitySchemes:
ApiKey:
type: http
scheme: bearer
bearerFormat: lck_…
description: 'Clé API `lck_…` créée dans Lexio (Paramètres → Développeur), envoyée en `Authorization: Bearer`. Voir [Authentification](https://docs.lexio.rent/authentification).'