{
    "openapi": "3.1.0",
    "info": {
        "title": "General Company API",
        "version": "1.0.0",
        "description": "API d'intégration (boîtiers GPS, logiciels tiers) et API de l'application mobile des chauffeurs.\n\nIntégration : créez une clé dans Paramètres → Intégrations (administrateur), puis envoyez `Authorization: Bearer {clé}`. La clé désigne l'entreprise : pas d'en-tête X-Tenant. Toutes les dates sont en ISO 8601."
    },
    "servers": [
        {
            "url": "https://flotte.general-company.net"
        }
    ],
    "tags": [
        {
            "name": "Intégration",
            "description": "Clé d'API de l'entreprise (module Intégrations)."
        },
        {
            "name": "Application mobile",
            "description": "Jeton par appareil obtenu à la connexion ; en-têtes X-Tenant et X-App-Version obligatoires."
        },
        {
            "name": "Carburant",
            "description": "Jeton utilisateur et en-tête X-Tenant ; droits du rôle de l'utilisateur."
        },
        {
            "name": "Sinistres",
            "description": "Jeton utilisateur et en-tête X-Tenant ; droits du rôle de l'utilisateur."
        },
        {
            "name": "Maintenance",
            "description": "Jeton utilisateur et en-tête X-Tenant ; droits du rôle de l'utilisateur."
        }
    ],
    "paths": {
        "/api/v1/integrations/telemetrie": {
            "post": {
                "tags": [
                    "Intégration"
                ],
                "summary": "Envoyer des relevés GPS / compteur / carburant",
                "description": "Jusqu'à 500 relevés par appel. Le véhicule est désigné par son immatriculation, son N° de parc ou son identifiant (espaces et tirets ignorés). Un relevé déjà reçu (même véhicule, même horodatage, même clé) est compté en doublon, sans erreur : vous pouvez renvoyer un lot après une coupure réseau. Un relevé supérieur au compteur connu le met à jour : km pour un véhicule routier, heures moteur pour un engin (un km envoyé pour un engin est conservé sans effet sur son compteur).",
                "security": [
                    {
                        "cleApi": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/LotReleves"
                            },
                            "example": {
                                "releves": [
                                    {
                                        "vehicule": "LT-1234-AB",
                                        "horodatage": "2026-10-09T08:15:00+01:00",
                                        "lat": 4.0511,
                                        "lng": 9.7679,
                                        "km": 125300,
                                        "carburant_pct": 62
                                    }
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "202": {
                        "description": "Relevés traités",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ResultatReleves"
                                }
                            }
                        }
                    },
                    "402": {
                        "description": "Espace en lecture seule (essai terminé ou abonnement résilié)"
                    },
                    "422": {
                        "description": "Requête invalide, ou aucun relevé accepté (voir `refuses`)"
                    },
                    "401": {
                        "description": "Clé absente, invalide ou révoquée",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Scope manquant, entreprise suspendue ou module non inclus dans l'offre",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Plus de 120 appels par minute pour cette clé"
                    }
                }
            }
        },
        "/api/v1/integrations/vehicules": {
            "get": {
                "tags": [
                    "Intégration"
                ],
                "summary": "Lister les véhicules, leur état et leur dernière position",
                "security": [
                    {
                        "cleApi": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Véhicules de l'entreprise",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Vehicule"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Clé absente, invalide ou révoquée",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Scope manquant, entreprise suspendue ou module non inclus dans l'offre",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Plus de 120 appels par minute pour cette clé"
                    }
                }
            }
        },
        "/api/v1/auth/login": {
            "post": {
                "tags": [
                    "Application mobile"
                ],
                "summary": "Connexion d'un appareil (renvoie un jeton)",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "email",
                                    "password",
                                    "device_name"
                                ],
                                "properties": {
                                    "email": {
                                        "type": "string",
                                        "format": "email"
                                    },
                                    "password": {
                                        "type": "string"
                                    },
                                    "device_name": {
                                        "type": "string",
                                        "maxLength": 100
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Jeton (`data.token`), utilisateur, entreprise et modules actifs"
                    },
                    "422": {
                        "description": "Identifiants incorrects (message générique)"
                    },
                    "429": {
                        "description": "Trop de tentatives"
                    }
                }
            }
        },
        "/api/v1/auth/me": {
            "get": {
                "tags": [
                    "Application mobile"
                ],
                "summary": "Profil de l'utilisateur connecté",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "$ref": "#/components/parameters/XAppVersion"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "426": {
                        "description": "Version de l'application trop ancienne"
                    },
                    "428": {
                        "description": "En-tête X-App-Version manquant"
                    }
                }
            }
        },
        "/api/v1/auth/logout": {
            "post": {
                "tags": [
                    "Application mobile"
                ],
                "summary": "Déconnexion : révoque le jeton de cet appareil uniquement",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "$ref": "#/components/parameters/XAppVersion"
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Déconnecté"
                    }
                }
            }
        },
        "/api/v1/mobile/notifications": {
            "get": {
                "tags": [
                    "Application mobile"
                ],
                "summary": "Notifications de l'utilisateur",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "$ref": "#/components/parameters/XAppVersion"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "426": {
                        "description": "Version de l'application trop ancienne"
                    },
                    "428": {
                        "description": "En-tête X-App-Version manquant"
                    }
                }
            }
        },
        "/api/v1/mobile/device-tokens": {
            "post": {
                "tags": [
                    "Application mobile"
                ],
                "summary": "Enregistrer le jeton de notification push de l'appareil",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "$ref": "#/components/parameters/XAppVersion"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "426": {
                        "description": "Version de l'application trop ancienne"
                    },
                    "428": {
                        "description": "En-tête X-App-Version manquant"
                    }
                }
            }
        },
        "/api/v1/mobile/sync-log": {
            "post": {
                "tags": [
                    "Application mobile"
                ],
                "summary": "Journal de synchronisation de l'appareil",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "$ref": "#/components/parameters/XAppVersion"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "426": {
                        "description": "Version de l'application trop ancienne"
                    },
                    "428": {
                        "description": "En-tête X-App-Version manquant"
                    }
                }
            }
        },
        "/api/v1/mobile/dashboard": {
            "get": {
                "tags": [
                    "Application mobile"
                ],
                "summary": "Tableau de bord du chauffeur",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "$ref": "#/components/parameters/XAppVersion"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "426": {
                        "description": "Version de l'application trop ancienne"
                    },
                    "428": {
                        "description": "En-tête X-App-Version manquant"
                    }
                }
            }
        },
        "/api/v1/mobile/ordre-mission/actif": {
            "get": {
                "tags": [
                    "Application mobile"
                ],
                "summary": "Ordre de mission en cours du chauffeur",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "$ref": "#/components/parameters/XAppVersion"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "426": {
                        "description": "Version de l'application trop ancienne"
                    },
                    "428": {
                        "description": "En-tête X-App-Version manquant"
                    }
                }
            }
        },
        "/api/v1/mobile/bulletins-paie": {
            "get": {
                "tags": [
                    "Application mobile"
                ],
                "summary": "Bulletins de paie du chauffeur",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "$ref": "#/components/parameters/XAppVersion"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "426": {
                        "description": "Version de l'application trop ancienne"
                    },
                    "428": {
                        "description": "En-tête X-App-Version manquant"
                    }
                }
            }
        },
        "/api/v1/mobile/bulletins-paie/{id}/pdf": {
            "get": {
                "tags": [
                    "Application mobile"
                ],
                "summary": "PDF d'un bulletin de paie",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "$ref": "#/components/parameters/XAppVersion"
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "426": {
                        "description": "Version de l'application trop ancienne"
                    },
                    "428": {
                        "description": "En-tête X-App-Version manquant"
                    }
                }
            }
        },
        "/api/v1/mobile/locations/{location}/check-vehicule": {
            "post": {
                "tags": [
                    "Application mobile"
                ],
                "summary": "État des lieux d'un véhicule de location",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "$ref": "#/components/parameters/XAppVersion"
                    },
                    {
                        "name": "location",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "426": {
                        "description": "Version de l'application trop ancienne"
                    },
                    "428": {
                        "description": "En-tête X-App-Version manquant"
                    }
                }
            }
        },
        "/api/v1/mobile/sync": {
            "post": {
                "tags": [
                    "Application mobile"
                ],
                "summary": "Envoi des saisies faites hors connexion",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "$ref": "#/components/parameters/XAppVersion"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "426": {
                        "description": "Version de l'application trop ancienne"
                    },
                    "428": {
                        "description": "En-tête X-App-Version manquant"
                    }
                }
            }
        },
        "/api/v1/mobile/rapports-journaliers": {
            "get": {
                "tags": [
                    "Application mobile"
                ],
                "summary": "Rapports journaliers du chauffeur",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "$ref": "#/components/parameters/XAppVersion"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "426": {
                        "description": "Version de l'application trop ancienne"
                    },
                    "428": {
                        "description": "En-tête X-App-Version manquant"
                    }
                }
            },
            "post": {
                "tags": [
                    "Application mobile"
                ],
                "summary": "Soumettre le rapport du jour",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "$ref": "#/components/parameters/XAppVersion"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "426": {
                        "description": "Version de l'application trop ancienne"
                    },
                    "428": {
                        "description": "En-tête X-App-Version manquant"
                    }
                }
            }
        },
        "/api/v1/mobile/rapports-journaliers/formulaire": {
            "get": {
                "tags": [
                    "Application mobile"
                ],
                "summary": "Données du formulaire (véhicule affecté, listes de choix)",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "$ref": "#/components/parameters/XAppVersion"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "426": {
                        "description": "Version de l'application trop ancienne"
                    },
                    "428": {
                        "description": "En-tête X-App-Version manquant"
                    }
                }
            }
        },
        "/api/v1/mobile/rapports-journaliers/{rapport}": {
            "get": {
                "tags": [
                    "Application mobile"
                ],
                "summary": "Consulter un rapport",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "$ref": "#/components/parameters/XAppVersion"
                    },
                    {
                        "name": "rapport",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "426": {
                        "description": "Version de l'application trop ancienne"
                    },
                    "428": {
                        "description": "En-tête X-App-Version manquant"
                    }
                }
            },
            "put": {
                "tags": [
                    "Application mobile"
                ],
                "summary": "Modifier un rapport (avant contrôle)",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "$ref": "#/components/parameters/XAppVersion"
                    },
                    {
                        "name": "rapport",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "426": {
                        "description": "Version de l'application trop ancienne"
                    },
                    "428": {
                        "description": "En-tête X-App-Version manquant"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Application mobile"
                ],
                "summary": "Supprimer un rapport (avant contrôle)",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "$ref": "#/components/parameters/XAppVersion"
                    },
                    {
                        "name": "rapport",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "426": {
                        "description": "Version de l'application trop ancienne"
                    },
                    "428": {
                        "description": "En-tête X-App-Version manquant"
                    }
                }
            }
        },
        "/api/v1/mobile/rapports-journaliers/{rapport}/pdf": {
            "get": {
                "tags": [
                    "Application mobile"
                ],
                "summary": "PDF d'un rapport",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "$ref": "#/components/parameters/XAppVersion"
                    },
                    {
                        "name": "rapport",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "426": {
                        "description": "Version de l'application trop ancienne"
                    },
                    "428": {
                        "description": "En-tête X-App-Version manquant"
                    }
                }
            }
        },
        "/api/v1/fuel/dashboard": {
            "get": {
                "tags": [
                    "Carburant"
                ],
                "summary": "Indicateurs carburant",
                "description": "Permission requise : `fuel.view`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            }
        },
        "/api/v1/fuel/anomalies": {
            "get": {
                "tags": [
                    "Carburant"
                ],
                "summary": "Pleins en anomalie de consommation",
                "description": "Permission requise : `fuel.view`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            }
        },
        "/api/v1/fuel/ravitaillements": {
            "get": {
                "tags": [
                    "Carburant"
                ],
                "summary": "Lister les ravitaillements",
                "description": "Permission requise : `fuel.view`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            },
            "post": {
                "tags": [
                    "Carburant"
                ],
                "summary": "Enregistrer un ravitaillement",
                "description": "Permission requise : `fuel.create`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            }
        },
        "/api/v1/fuel/ravitaillements/{ravitaillement}": {
            "get": {
                "tags": [
                    "Carburant"
                ],
                "summary": "Consulter un ravitaillement",
                "description": "Permission requise : `fuel.view`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "name": "ravitaillement",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            }
        },
        "/api/v1/fuel/ravitaillements/vehicle/{vehicleId}/history": {
            "get": {
                "tags": [
                    "Carburant"
                ],
                "summary": "Historique des pleins d'un véhicule",
                "description": "Permission requise : `fuel.view`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "name": "vehicleId",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            }
        },
        "/api/v1/fuel/deplacements": {
            "get": {
                "tags": [
                    "Carburant"
                ],
                "summary": "Lister les déplacements",
                "description": "Permission requise : `fuel.view`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            },
            "post": {
                "tags": [
                    "Carburant"
                ],
                "summary": "Enregistrer un déplacement",
                "description": "Permission requise : `fuel.create`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            }
        },
        "/api/v1/incident/dashboard": {
            "get": {
                "tags": [
                    "Sinistres"
                ],
                "summary": "Indicateurs sinistres et infractions",
                "description": "Permission requise : `incident.view`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            }
        },
        "/api/v1/incident/sinistres": {
            "get": {
                "tags": [
                    "Sinistres"
                ],
                "summary": "Lister les sinistres",
                "description": "Permission requise : `incident.view`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            },
            "post": {
                "tags": [
                    "Sinistres"
                ],
                "summary": "Déclarer un sinistre",
                "description": "Permission requise : `incident.create`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            }
        },
        "/api/v1/incident/sinistres/{id}": {
            "get": {
                "tags": [
                    "Sinistres"
                ],
                "summary": "Consulter un sinistre",
                "description": "Permission requise : `incident.view`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            }
        },
        "/api/v1/incident/sinistres/vehicle/{vehicleId}/history": {
            "get": {
                "tags": [
                    "Sinistres"
                ],
                "summary": "Sinistres d'un véhicule",
                "description": "Permission requise : `incident.view`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "name": "vehicleId",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            }
        },
        "/api/v1/incident/infractions": {
            "get": {
                "tags": [
                    "Sinistres"
                ],
                "summary": "Lister les infractions",
                "description": "Permission requise : `incident.view`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            },
            "post": {
                "tags": [
                    "Sinistres"
                ],
                "summary": "Enregistrer une infraction",
                "description": "Permission requise : `incident.create`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            }
        },
        "/api/v1/incident/infractions/{id}": {
            "get": {
                "tags": [
                    "Sinistres"
                ],
                "summary": "Consulter une infraction",
                "description": "Permission requise : `incident.view`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            }
        },
        "/api/v1/maintenance": {
            "get": {
                "tags": [
                    "Maintenance"
                ],
                "summary": "Lister les maintenances",
                "description": "Permission requise : `maintenance.view`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            }
        },
        "/api/v1/maintenance/{id}": {
            "get": {
                "tags": [
                    "Maintenance"
                ],
                "summary": "Consulter une maintenance",
                "description": "Permission requise : `maintenance.view`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            }
        },
        "/api/v1/maintenance/{id}/start": {
            "patch": {
                "tags": [
                    "Maintenance"
                ],
                "summary": "Démarrer une maintenance",
                "description": "Permission requise : `maintenance.edit`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            }
        },
        "/api/v1/maintenance/{id}/complete": {
            "patch": {
                "tags": [
                    "Maintenance"
                ],
                "summary": "Terminer une maintenance",
                "description": "Permission requise : `maintenance.complete`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            }
        },
        "/api/v1/maintenance/{id}/cancel": {
            "patch": {
                "tags": [
                    "Maintenance"
                ],
                "summary": "Annuler une maintenance",
                "description": "Permission requise : `maintenance.edit`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            }
        },
        "/api/v1/maintenance/stock": {
            "get": {
                "tags": [
                    "Maintenance"
                ],
                "summary": "Stock de pièces",
                "description": "Permission requise : `stock.view`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            }
        },
        "/api/v1/maintenance/stock/{id}": {
            "get": {
                "tags": [
                    "Maintenance"
                ],
                "summary": "Consulter une pièce",
                "description": "Permission requise : `stock.view`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            }
        },
        "/api/v1/maintenance/stock/{id}/adjust": {
            "post": {
                "tags": [
                    "Maintenance"
                ],
                "summary": "Ajuster le stock d'une pièce",
                "description": "Permission requise : `stock.manage`.",
                "security": [
                    {
                        "jetonMobile": []
                    }
                ],
                "parameters": [
                    {
                        "$ref": "#/components/parameters/XTenant"
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Succès"
                    },
                    "401": {
                        "description": "Jeton absent ou invalide"
                    },
                    "403": {
                        "description": "Permission ou module manquant"
                    },
                    "422": {
                        "description": "Données invalides"
                    }
                }
            }
        }
    },
    "webhooks": {
        "vehicule.cree": {
            "post": {
                "summary": "Un véhicule est créé",
                "description": "Envoyé à l'adresse déclarée dans Paramètres → Intégrations. Répondez 2xx sous 10 s ; sinon nouvelles tentatives après 1 min, 5 min et 30 min.",
                "parameters": [
                    {
                        "name": "X-Flotte-Evenement",
                        "in": "header",
                        "schema": {
                            "type": "string",
                            "const": "vehicule.cree"
                        }
                    },
                    {
                        "name": "X-Flotte-Livraison",
                        "in": "header",
                        "description": "Identifiant unique de la livraison",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "X-Flotte-Signature",
                        "in": "header",
                        "description": "`t={horodatage},v1={hex}` où hex = HMAC-SHA256(secret, \"{horodatage}.{corps brut}\"). Refusez si l'horodatage a plus de 5 minutes.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EvenementWebhook"
                            }
                        }
                    }
                },
                "responses": {
                    "2XX": {
                        "description": "Reçu"
                    }
                }
            }
        },
        "vehicule.statut_change": {
            "post": {
                "summary": "Le statut d'un véhicule change (disponible, en mission, en maintenance…)",
                "description": "Envoyé à l'adresse déclarée dans Paramètres → Intégrations. Répondez 2xx sous 10 s ; sinon nouvelles tentatives après 1 min, 5 min et 30 min.",
                "parameters": [
                    {
                        "name": "X-Flotte-Evenement",
                        "in": "header",
                        "schema": {
                            "type": "string",
                            "const": "vehicule.statut_change"
                        }
                    },
                    {
                        "name": "X-Flotte-Livraison",
                        "in": "header",
                        "description": "Identifiant unique de la livraison",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "X-Flotte-Signature",
                        "in": "header",
                        "description": "`t={horodatage},v1={hex}` où hex = HMAC-SHA256(secret, \"{horodatage}.{corps brut}\"). Refusez si l'horodatage a plus de 5 minutes.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EvenementWebhook"
                            }
                        }
                    }
                },
                "responses": {
                    "2XX": {
                        "description": "Reçu"
                    }
                }
            }
        },
        "rapport_journalier.soumis": {
            "post": {
                "summary": "Un chauffeur soumet son rapport journalier",
                "description": "Envoyé à l'adresse déclarée dans Paramètres → Intégrations. Répondez 2xx sous 10 s ; sinon nouvelles tentatives après 1 min, 5 min et 30 min.",
                "parameters": [
                    {
                        "name": "X-Flotte-Evenement",
                        "in": "header",
                        "schema": {
                            "type": "string",
                            "const": "rapport_journalier.soumis"
                        }
                    },
                    {
                        "name": "X-Flotte-Livraison",
                        "in": "header",
                        "description": "Identifiant unique de la livraison",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "X-Flotte-Signature",
                        "in": "header",
                        "description": "`t={horodatage},v1={hex}` où hex = HMAC-SHA256(secret, \"{horodatage}.{corps brut}\"). Refusez si l'horodatage a plus de 5 minutes.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EvenementWebhook"
                            }
                        }
                    }
                },
                "responses": {
                    "2XX": {
                        "description": "Reçu"
                    }
                }
            }
        },
        "sinistre.declare": {
            "post": {
                "summary": "Un sinistre est déclaré",
                "description": "Envoyé à l'adresse déclarée dans Paramètres → Intégrations. Répondez 2xx sous 10 s ; sinon nouvelles tentatives après 1 min, 5 min et 30 min.",
                "parameters": [
                    {
                        "name": "X-Flotte-Evenement",
                        "in": "header",
                        "schema": {
                            "type": "string",
                            "const": "sinistre.declare"
                        }
                    },
                    {
                        "name": "X-Flotte-Livraison",
                        "in": "header",
                        "description": "Identifiant unique de la livraison",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "X-Flotte-Signature",
                        "in": "header",
                        "description": "`t={horodatage},v1={hex}` où hex = HMAC-SHA256(secret, \"{horodatage}.{corps brut}\"). Refusez si l'horodatage a plus de 5 minutes.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EvenementWebhook"
                            }
                        }
                    }
                },
                "responses": {
                    "2XX": {
                        "description": "Reçu"
                    }
                }
            }
        },
        "maintenance.terminee": {
            "post": {
                "summary": "Une maintenance est terminée",
                "description": "Envoyé à l'adresse déclarée dans Paramètres → Intégrations. Répondez 2xx sous 10 s ; sinon nouvelles tentatives après 1 min, 5 min et 30 min.",
                "parameters": [
                    {
                        "name": "X-Flotte-Evenement",
                        "in": "header",
                        "schema": {
                            "type": "string",
                            "const": "maintenance.terminee"
                        }
                    },
                    {
                        "name": "X-Flotte-Livraison",
                        "in": "header",
                        "description": "Identifiant unique de la livraison",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "X-Flotte-Signature",
                        "in": "header",
                        "description": "`t={horodatage},v1={hex}` où hex = HMAC-SHA256(secret, \"{horodatage}.{corps brut}\"). Refusez si l'horodatage a plus de 5 minutes.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EvenementWebhook"
                            }
                        }
                    }
                },
                "responses": {
                    "2XX": {
                        "description": "Reçu"
                    }
                }
            }
        },
        "carburant.anomalie": {
            "post": {
                "summary": "Une anomalie de consommation est détectée sur un plein",
                "description": "Envoyé à l'adresse déclarée dans Paramètres → Intégrations. Répondez 2xx sous 10 s ; sinon nouvelles tentatives après 1 min, 5 min et 30 min.",
                "parameters": [
                    {
                        "name": "X-Flotte-Evenement",
                        "in": "header",
                        "schema": {
                            "type": "string",
                            "const": "carburant.anomalie"
                        }
                    },
                    {
                        "name": "X-Flotte-Livraison",
                        "in": "header",
                        "description": "Identifiant unique de la livraison",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "X-Flotte-Signature",
                        "in": "header",
                        "description": "`t={horodatage},v1={hex}` où hex = HMAC-SHA256(secret, \"{horodatage}.{corps brut}\"). Refusez si l'horodatage a plus de 5 minutes.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EvenementWebhook"
                            }
                        }
                    }
                },
                "responses": {
                    "2XX": {
                        "description": "Reçu"
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "cleApi": {
                "type": "http",
                "scheme": "bearer",
                "description": "Clé `{prefixe}.{secret}`. Droits : telemetrie.ecrire, vehicules.lire."
            },
            "jetonMobile": {
                "type": "http",
                "scheme": "bearer",
                "description": "Jeton renvoyé par /api/v1/auth/login."
            }
        },
        "parameters": {
            "XTenant": {
                "name": "X-Tenant",
                "in": "header",
                "required": true,
                "description": "Identifiant (slug) de l'entreprise",
                "schema": {
                    "type": "string"
                }
            },
            "XAppVersion": {
                "name": "X-App-Version",
                "in": "header",
                "required": true,
                "description": "Version de l'application mobile",
                "schema": {
                    "type": "string"
                }
            }
        },
        "schemas": {
            "LotReleves": {
                "type": "object",
                "required": [
                    "releves"
                ],
                "properties": {
                    "releves": {
                        "type": "array",
                        "minItems": 1,
                        "maxItems": 500,
                        "items": {
                            "$ref": "#/components/schemas/Releve"
                        }
                    }
                }
            },
            "Releve": {
                "type": "object",
                "required": [
                    "vehicule",
                    "horodatage"
                ],
                "description": "Au moins une mesure : position (lat + lng), km, heures ou carburant_pct. Le compteur suit la nature du véhicule : km pour un véhicule routier, heures moteur pour un engin. Horodatage : 30 derniers jours, pas dans le futur.",
                "properties": {
                    "vehicule": {
                        "type": "string",
                        "description": "Immatriculation, N° de parc ou identifiant"
                    },
                    "horodatage": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "lat": {
                        "type": "number",
                        "minimum": -90,
                        "maximum": 90
                    },
                    "lng": {
                        "type": "number",
                        "minimum": -180,
                        "maximum": 180
                    },
                    "km": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "Kilométrage (véhicule routier)."
                    },
                    "heures": {
                        "type": "integer",
                        "minimum": 0,
                        "description": "Compteur d'heures moteur (engin)."
                    },
                    "carburant_pct": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 100
                    }
                }
            },
            "ResultatReleves": {
                "type": "object",
                "properties": {
                    "acceptes": {
                        "type": "integer"
                    },
                    "doublons": {
                        "type": "integer"
                    },
                    "refuses": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "index": {
                                    "type": "integer"
                                },
                                "raison": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            },
            "Vehicule": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "immatriculation": {
                        "type": "string"
                    },
                    "numero_parc": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "statut": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "km": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "heures": {
                        "type": [
                            "number",
                            "null"
                        ]
                    },
                    "derniere_position": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "lat": {
                                "type": "number"
                            },
                            "lng": {
                                "type": "number"
                            },
                            "horodatage": {
                                "type": "string",
                                "format": "date-time"
                            }
                        }
                    }
                }
            },
            "EvenementWebhook": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid",
                        "description": "Identifiant de l'événement (dédoublonnage côté récepteur)"
                    },
                    "evenement": {
                        "type": "string",
                        "enum": [
                            "vehicule.cree",
                            "vehicule.statut_change",
                            "rapport_journalier.soumis",
                            "sinistre.declare",
                            "maintenance.terminee",
                            "carburant.anomalie",
                            "ping"
                        ]
                    },
                    "cree_le": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "donnees": {
                        "type": "object",
                        "description": "Identifiants et champs utiles de l'objet concerné"
                    }
                }
            }
        }
    }
}