{
  "openapi": "3.0.3",
  "info": {
    "title": "HE BERG API BETA — route baseline",
    "version": "0.1.0-beta.1",
    "description": "Baseline dérivée des routes Express réellement déclarées. INCOMPLETE tant que les handlers ne sont pas annotés avec leurs schémas précis."
  },
  "servers": [
    {
      "url": "https://api-beta.heberg.fr",
      "description": "BETA publique"
    }
  ],
  "tags": [
    {
      "name": "public"
    },
    {
      "name": "device"
    },
    {
      "name": "parent"
    },
    {
      "name": "health"
    },
    {
      "name": "media"
    }
  ],
  "components": {
    "securitySchemes": {
      "parentJwt": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      },
      "deviceSession": {
        "type": "http",
        "scheme": "bearer",
        "description": "Session opaque créée avec deviceSecret."
      }
    }
  },
  "paths": {
    "/status": {
      "get": {
        "operationId": "get_status",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "public",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        }
      }
    },
    "/api/v1/public/status": {
      "get": {
        "operationId": "get_api_v1_public_status",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "public",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        }
      }
    },
    "/api/parent/login": {
      "post": {
        "operationId": "post_api_parent_login",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "public",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/parent/refresh": {
      "post": {
        "operationId": "post_api_parent_refresh",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "public",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/parent/logout": {
      "post": {
        "operationId": "post_api_parent_logout",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "public",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/parent/me": {
      "get": {
        "operationId": "get_api_parent_me",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/parent/invite": {
      "post": {
        "operationId": "post_api_parent_invite",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/device/self-register": {
      "post": {
        "operationId": "post_api_device_self_register",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "public",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/pairing/create": {
      "post": {
        "operationId": "post_api_pairing_create",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/device/register": {
      "post": {
        "operationId": "post_api_device_register",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "public",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/device/{id}/session": {
      "post": {
        "operationId": "post_api_device_id_session",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "public",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/device/{id}/update": {
      "get": {
        "operationId": "get_api_device_id_update",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "device",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "deviceSession": []
          }
        ]
      }
    },
    "/api/device/{id}/update-events": {
      "post": {
        "operationId": "post_api_device_id_update_events",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "device",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "deviceSession": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/device/{id}/identity/rotate": {
      "post": {
        "operationId": "post_api_device_id_identity_rotate",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "device",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "deviceSession": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/device/{id}/deactivate": {
      "post": {
        "operationId": "post_api_device_id_deactivate",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "device",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "deviceSession": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/devices/{deviceId}/health": {
      "post": {
        "operationId": "post_api_v1_devices_deviceId_health",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "device",
        "parameters": [
          {
            "name": "deviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "deviceSession": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      },
      "get": {
        "operationId": "get_api_v1_devices_deviceId_health",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "deviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/heartbeat": {
      "post": {
        "operationId": "post_api_device_id_heartbeat",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "device",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "deviceSession": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/devices/{deviceId}/diagnostic": {
      "post": {
        "operationId": "post_api_v1_devices_deviceId_diagnostic",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "device",
        "parameters": [
          {
            "name": "deviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "deviceSession": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      },
      "get": {
        "operationId": "get_api_v1_devices_deviceId_diagnostic",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "deviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/diagnostics": {
      "post": {
        "operationId": "post_api_device_id_diagnostics",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "device",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "deviceSession": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      },
      "get": {
        "operationId": "get_api_device_id_diagnostics",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/admin/diagnostic-metrics": {
      "get": {
        "operationId": "get_api_admin_diagnostic_metrics",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/notifications": {
      "post": {
        "operationId": "post_api_device_id_notifications",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "device",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "deviceSession": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      },
      "get": {
        "operationId": "get_api_device_id_notifications",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/capabilities": {
      "post": {
        "operationId": "post_api_device_id_capabilities",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "device",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "deviceSession": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      },
      "get": {
        "operationId": "get_api_device_id_capabilities",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/sms": {
      "post": {
        "operationId": "post_api_device_id_sms",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "device",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "deviceSession": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      },
      "get": {
        "operationId": "get_api_device_id_sms",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/calls": {
      "post": {
        "operationId": "post_api_device_id_calls",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "device",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "deviceSession": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      },
      "get": {
        "operationId": "get_api_device_id_calls",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/contacts": {
      "post": {
        "operationId": "post_api_device_id_contacts",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "device",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "deviceSession": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      },
      "get": {
        "operationId": "get_api_device_id_contacts",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/media/{externalId}": {
      "put": {
        "operationId": "put_api_device_id_media_externalId",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "device",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "externalId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "deviceSession": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/device/{id}/media/{externalId}/chunk/{chunkIndex}": {
      "put": {
        "operationId": "put_api_device_id_media_externalId_chunk_chunkIndex",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "device",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "externalId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "chunkIndex",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "deviceSession": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/device/{id}/location": {
      "post": {
        "operationId": "post_api_device_id_location",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "device",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "deviceSession": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/device/{id}/locate-now": {
      "post": {
        "operationId": "post_api_device_id_locate_now",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/device/{id}/lost-mode": {
      "post": {
        "operationId": "post_api_device_id_lost_mode",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/device/{id}/dashcam/command": {
      "post": {
        "operationId": "post_api_device_id_dashcam_command",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/device/{id}/apps": {
      "post": {
        "operationId": "post_api_device_id_apps",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "device",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "deviceSession": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      },
      "get": {
        "operationId": "get_api_device_id_apps",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/screentime": {
      "post": {
        "operationId": "post_api_device_id_screentime",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "device",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "deviceSession": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      },
      "get": {
        "operationId": "get_api_device_id_screentime",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/activity": {
      "post": {
        "operationId": "post_api_device_id_activity",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "device",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "deviceSession": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      },
      "get": {
        "operationId": "get_api_device_id_activity",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/navigation-searches": {
      "post": {
        "operationId": "post_api_device_id_navigation_searches",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "device",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "deviceSession": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      },
      "get": {
        "operationId": "get_api_device_id_navigation_searches",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/geofences": {
      "get": {
        "operationId": "get_api_device_id_geofences",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "dual",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          },
          {
            "deviceSession": []
          }
        ]
      },
      "post": {
        "operationId": "post_api_device_id_geofences",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/device/{id}/feature-flags": {
      "get": {
        "operationId": "get_api_device_id_feature_flags",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "dual",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          },
          {
            "deviceSession": []
          }
        ]
      }
    },
    "/api/device/{id}/feature-flags/{key}": {
      "put": {
        "operationId": "put_api_device_id_feature_flags_key",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/device/{id}/geofence-events": {
      "post": {
        "operationId": "post_api_device_id_geofence_events",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "device",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "deviceSession": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/gps/latest": {
      "get": {
        "operationId": "get_api_gps_latest",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/devices": {
      "get": {
        "operationId": "get_api_devices",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/app-version-history": {
      "get": {
        "operationId": "get_api_device_id_app_version_history",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/v1/devices/{deviceId}/health/history": {
      "get": {
        "operationId": "get_api_v1_devices_deviceId_health_history",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "deviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/compatibility": {
      "get": {
        "operationId": "get_api_compatibility",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/compatibility": {
      "get": {
        "operationId": "get_api_device_id_compatibility",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/lifecycle": {
      "patch": {
        "operationId": "patch_api_device_id_lifecycle",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/v1/devices/{deviceId}/diagnostic/history": {
      "get": {
        "operationId": "get_api_v1_devices_deviceId_diagnostic_history",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "deviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/thermal-history": {
      "get": {
        "operationId": "get_api_device_id_thermal_history",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/thermal-summary": {
      "get": {
        "operationId": "get_api_device_id_thermal_summary",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/alerts": {
      "get": {
        "operationId": "get_api_device_id_alerts",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/media": {
      "get": {
        "operationId": "get_api_device_id_media",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/media/{mediaId}/download": {
      "get": {
        "operationId": "get_api_device_id_media_mediaId_download",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "mediaId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/media/{mediaId}": {
      "delete": {
        "operationId": "delete_api_device_id_media_mediaId",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "mediaId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/media/{mediaId}/thumbnail": {
      "get": {
        "operationId": "get_api_device_id_media_mediaId_thumbnail",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "mediaId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/revoke": {
      "patch": {
        "operationId": "patch_api_device_id_revoke",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/device/{id}": {
      "delete": {
        "operationId": "delete_api_device_id",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/location/latest": {
      "get": {
        "operationId": "get_api_device_id_location_latest",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/offline-summary": {
      "get": {
        "operationId": "get_api_device_id_offline_summary",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/offline-periods": {
      "get": {
        "operationId": "get_api_device_id_offline_periods",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/usage-history-availability": {
      "get": {
        "operationId": "get_api_device_id_usage_history_availability",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/usage-history": {
      "get": {
        "operationId": "get_api_device_id_usage_history",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/history": {
      "get": {
        "operationId": "get_api_device_id_history",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/history/availability": {
      "get": {
        "operationId": "get_api_device_id_history_availability",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/location/estimated/latest": {
      "get": {
        "operationId": "get_api_device_id_location_estimated_latest",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/location/reliable/latest": {
      "get": {
        "operationId": "get_api_device_id_location_reliable_latest",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/location/history": {
      "get": {
        "operationId": "get_api_device_id_location_history",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/location/search": {
      "get": {
        "operationId": "get_api_location_search",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/places": {
      "get": {
        "operationId": "get_api_device_id_places",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/places/{placeId}": {
      "patch": {
        "operationId": "patch_api_device_id_places_placeId",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "placeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/device/{id}/routines": {
      "get": {
        "operationId": "get_api_device_id_routines",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/timeline": {
      "get": {
        "operationId": "get_api_device_id_timeline",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/journalier": {
      "get": {
        "operationId": "get_api_device_id_journalier",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/anomalies": {
      "get": {
        "operationId": "get_api_device_id_anomalies",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/anomalies/{anomalyId}/feedback": {
      "post": {
        "operationId": "post_api_device_id_anomalies_anomalyId_feedback",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "anomalyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/device/{id}/live-log": {
      "get": {
        "operationId": "get_api_device_id_live_log",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/geofences/{geofenceId}": {
      "delete": {
        "operationId": "delete_api_device_id_geofences_geofenceId",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "geofenceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/audit": {
      "get": {
        "operationId": "get_api_audit",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/situation-files": {
      "post": {
        "operationId": "post_api_situation_files",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api/situation-files/{id}": {
      "get": {
        "operationId": "get_api_situation_files_id",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/device/{id}/situation-files": {
      "get": {
        "operationId": "get_api_device_id_situation_files",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/situation-files/{id}/export.json": {
      "get": {
        "operationId": "get_api_situation_files_id_export_json",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/situation-files/{id}/export.html": {
      "get": {
        "operationId": "get_api_situation_files_id_export_html",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "parent",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        },
        "security": [
          {
            "parentJwt": []
          }
        ]
      }
    },
    "/api/health": {
      "get": {
        "operationId": "get_api_health",
        "description": "Contrat à compléter depuis le handler réel; aucune donnée fictive n’est générée.",
        "x-authentication": "public",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Réponse JSON ou succès selon le handler réel."
          },
          "204": {
            "description": "Succès sans contenu lorsque prévu par le handler."
          },
          "400": {
            "description": "Payload ou paramètre invalide."
          },
          "401": {
            "description": "Authentification absente ou invalide."
          },
          "403": {
            "description": "Accès refusé."
          },
          "404": {
            "description": "Ressource introuvable."
          },
          "500": {
            "description": "Erreur interne."
          }
        }
      }
    }
  },
  "x-route-count": 96,
  "x-native-websocket": {
    "path": "/ws/device/{deviceId}",
    "protocol": "wss",
    "status": "public-proxy-blocked"
  },
  "x-socket-io": {
    "path": "/socket.io/",
    "status": "public-polling-ok"
  }
}
